[pytorch] Pytorch入门
2024-06-05 19:46:32
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入门相关推荐
- 带你少走弯路:强烈推荐的Pytorch快速入门资料和翻译(可下载)
上次写了TensorFlow的快速入门资料,受到很多好评,读者强烈建议我出一个pytorch的快速入门路线,经过翻译和搜索网上资源,我推荐3份入门资料,希望对大家有所帮助. 备注:TensorFlow ...
- PyTorch系列入门到精通——GPU的使用
PyTorch系列入门到精通--GPU的使用
- PyTorch系列入门到精通——梯度消失与爆炸,损失函数
PyTorch系列入门到精通--梯度消失与爆炸
- PyTorch系列入门到精通——模型创建与nn.Module
PyTorch系列入门到精通--模型创建与nn.Module
- PyTorch系列入门到精通——BN、LN、IN and GN
PyTorch系列入门到精通--BN.LN.IN and GN
- PyTorch系列入门到精通——模型保存与加载
PyTorch系列入门到精通--模型保存与加载
- PyTorch系列入门到精通——生成对抗网络一瞥
PyTorch系列入门到精通--生成对抗网络一瞥
- PyTorch系列入门到精通——图像预处理transforms
PyTorch系列入门到精通--图像预处理transforms
- PyTorch系列入门到精通——DataLoader与Dataset
PyTorch系列入门到精通--DataLoader与Dataset
- PyTorch系列入门到精通——autograd与逻辑回归
PyTorch系列入门到精通--autograd与逻辑回归
最新文章
- Servlet和SpringMVC补课
- 生命的意义是什么?B站一位up主把这个「终极问题」甩给了AI
- 【VS Code】更改默认的单击打开文档模式
- 基于链表的快速排序C语言,双向链表的快速排序算法,编译通过,程序会崩溃,求助一下各位...
- 乐观锁和悲观锁的使用场景及应用——Java高并发系列学习笔记
- Android笔记 几条笔记(未实验)
- 神经网络之文本情感分析(二)
- 刘强东“撒币”100亿;支付宝违规被罚18万;摩拜产品不合格 | 一周业界事
- HDU 3350 #define is unsafe
- mysql用sqluldr2导出_使用sqluldr2将oracle大量表数据快速高效导出
- 计算机教室的网络拓扑结构,基于网络拓扑结构的校园计算机网络系统集成设计...
- 使用.NET Core和Vue搭建WebSocket聊天室
- OpenCV 对比度增强
- 微信小程序的APPID问题
- Ubuntu安装cuckoo布谷鸟沙箱详细步骤
- 根据url读取html文件
- arcgis python脚本筛选与线共边的面_ArcGIS公共函数Python脚本,Arcgis,常用,功能
- php视频打赏平台源码,2018最新PHP视频打赏平台 php源码
- 图基准数据集(OGB)
- 紫晶存储研发核心成员离职,不受影响是真的么?