Pytorch入门

简单容易上手,感觉比keras好理解多了,和mxnet很像(似乎mxnet有点借鉴pytorch),记一记。

直接从例子开始学,基础知识咱已经看了很多论文了。。。

import torch
import torch.nn as nn
import torch.nn.functional as F
# Linear 层 就是全连接层
class Net(nn.Module): # 继承nn.Module,只用定义forward,反向传播会自动生成def __init__(self): # 初始化方法,这里的初始化是为了forward函数可以直接调过来super(Net,self).__init__() # 调用父类初始化方法# (input_channel,output_channel,kernel_size)self.conv1 = nn.Conv2d(1,6,5) # 第一层卷积self.conv2 = nn.Conv2d(6,16,5)# 第二层卷积self.fc1 = nn.Linear(16*5*5,120) # 这里16*5*5是前向算的self.fc2 = nn.Linear(120,84) # 第二层全连接self.fc3 = nn.Linear(84,10) # 第三层全连接->分类def forward(self,x):x = F.max_pool2d(F.relu(self.conv1(x)),(2,2)) # 卷积一次激活一次然后2*2池化一次x = F.max_pool2d(F.relu(self.conv2(x)),2) # (2,2)与直接写 2 等价x = x.view(-1,self.num_flatten_features(x)) # 将x展开成向量x = F.relu(self.fc1(x)) # 全连接 + 激活x = F.relu(self.fc2(x)) # 全连接+ 激活x = self.fc3(x) # 最后再全连接return xdef num_flatten_features(self,x):size = x.size()[1:] # 除了batch_size以外的维度,(batch_size,channel,h,w)num_features = 1for s in size:num_features*=sreturn num_features
# ok,模型定义完毕。
net = Net()
print(net)
'''
Net((conv1): Conv2d(1, 6, kernel_size=(5, 5), stride=(1, 1))(conv2): Conv2d(6, 16, kernel_size=(5, 5), stride=(1, 1))(fc1): Linear(in_features=400, out_features=120, bias=True)(fc2): Linear(in_features=120, out_features=84, bias=True)(fc3): Linear(in_features=84, out_features=10, bias=True)
)
'''
params = list(net.parameters())
print(len(params))
print(params[0].size())
'''
10
torch.Size([6, 1, 5, 5])
'''
inpt = torch.randn(1,1,32,32)
out = net(inpt)
print(out)
'''
tensor([[-0.0265, -0.1246, -0.0796,  0.1028, -0.0595,  0.0383,  0.0038, -0.0019,0.1181,  0.1373]], grad_fn=<AddmmBackward>)
'''
target = torch.randn(10)
criterion = nn.MSELoss()
loss = criterion(out,target)
print(loss)
'''
tensor(0.5742, grad_fn=<MseLossBackward>)
'''
net.zero_grad()# 梯度归零
print(net.conv1.bias.grad)
loss.backward()
print(net.conv1.bias.grad)
'''
None
tensor([-0.0039,  0.0052,  0.0034, -0.0002,  0.0018,  0.0096])
'''
import torch.optim as optim
optimizer = optim.SGD(net.parameters(),lr = 0.01)
optimizer.zero_grad()
output = net(inpt)
loss = criterion(output,target)
loss.backward()
optimizer.step()
# 一个step完成,多个step就写在循环里

pytorch简直太好理解了。。继续蓄力!!

转载于:https://www.cnblogs.com/aoru45/p/10623046.html

[pytorch] Pytorch入门相关推荐

  1. 带你少走弯路:强烈推荐的Pytorch快速入门资料和翻译(可下载)

    上次写了TensorFlow的快速入门资料,受到很多好评,读者强烈建议我出一个pytorch的快速入门路线,经过翻译和搜索网上资源,我推荐3份入门资料,希望对大家有所帮助. 备注:TensorFlow ...

  2. PyTorch系列入门到精通——GPU的使用

    PyTorch系列入门到精通--GPU的使用

  3. PyTorch系列入门到精通——梯度消失与爆炸,损失函数

    PyTorch系列入门到精通--梯度消失与爆炸

  4. PyTorch系列入门到精通——模型创建与nn.Module

    PyTorch系列入门到精通--模型创建与nn.Module  

  5. PyTorch系列入门到精通——BN、LN、IN and GN

    PyTorch系列入门到精通--BN.LN.IN and GN  

  6. PyTorch系列入门到精通——模型保存与加载

    PyTorch系列入门到精通--模型保存与加载

  7. PyTorch系列入门到精通——生成对抗网络一瞥

    PyTorch系列入门到精通--生成对抗网络一瞥

  8. PyTorch系列入门到精通——图像预处理transforms

    PyTorch系列入门到精通--图像预处理transforms

  9. PyTorch系列入门到精通——DataLoader与Dataset

    PyTorch系列入门到精通--DataLoader与Dataset

  10. PyTorch系列入门到精通——autograd与逻辑回归

    PyTorch系列入门到精通--autograd与逻辑回归

最新文章

  1. Servlet和SpringMVC补课
  2. 生命的意义是什么?B站一位up主把这个「终极问题」甩给了AI
  3. 【VS Code】更改默认的单击打开文档模式
  4. 基于链表的快速排序C语言,双向链表的快速排序算法,编译通过,程序会崩溃,求助一下各位...
  5. 乐观锁和悲观锁的使用场景及应用——Java高并发系列学习笔记
  6. Android笔记 几条笔记(未实验)
  7. 神经网络之文本情感分析(二)
  8. 刘强东“撒币”100亿;支付宝违规被罚18万;摩拜产品不合格 | 一周业界事
  9. HDU 3350 #define is unsafe
  10. mysql用sqluldr2导出_使用sqluldr2将oracle大量表数据快速高效导出
  11. 计算机教室的网络拓扑结构,基于网络拓扑结构的校园计算机网络系统集成设计...
  12. 使用.NET Core和Vue搭建WebSocket聊天室
  13. OpenCV 对比度增强
  14. 微信小程序的APPID问题
  15. Ubuntu安装cuckoo布谷鸟沙箱详细步骤
  16. 根据url读取html文件
  17. arcgis python脚本筛选与线共边的面_ArcGIS公共函数Python脚本,Arcgis,常用,功能
  18. php视频打赏平台源码,2018最新PHP视频打赏平台 php源码
  19. 图基准数据集(OGB)
  20. 紫晶存储研发核心成员离职,不受影响是真的么?

热门文章

  1. 爬取淘宝商品信息selenium+pyquery+mongodb
  2. JS——实现短信验证码的倒计时功能(没有验证码,只有倒计时)
  3. WPF自定义控件之列表滑动特效 PowerListBox
  4. C# 课堂总结2-数据类型及转换方式
  5. MySql简介及概念
  6. struts 2读书笔记-----struts2的开发流程
  7. Python机器学习库sklearn的安装
  8. go 成长路上的坑(1)
  9. 长春南关区净月大街附近都有哪些课后班?
  10. Machine Learning from Start to Finish with Scikit-Learn