Pytorch打怪路(一)pytorch进行CIFAR-10分类(3)定义损失函数和优化器

pytorch进行CIFAR-10分类(3)定义损失函数和优化器

Pytorch打怪路(一)pytorch进行CIFAR-10分类(3)定义损失函数和优化器_第1张图片

我本打算把这一步的内容也归并到第二步定义网络模型中去,因为我觉得它们其实可以宏观上看成一个大部分,

但是既然官方教程中分成了5步,那我也就依照这个来,免得各位看官被我给搞昏了。

Pytorch打怪路(一)pytorch进行CIFAR-10分类(1)CIFAR-10数据加载和处理

Pytorch打怪路(一)pytorch进行CIFAR-10分类(2)定义卷积神经网络

Pytorch打怪路(一)pytorch进行CIFAR-10分类(3)定义损失函数和优化器(本文)

Pytorch打怪路(一)pytorch进行CIFAR-10分类(4)训练

Pytorch打怪路(一)pytorch进行CIFAR-10分类(5)测试

1.直接上代码

import torch.optim as optim          #导入torch.potim模块

criterion = nn.CrossEntropyLoss()    #同样是用到了神经网络工具箱 nn 中的交叉熵损失函数
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)   #optim模块中的SGD梯度优化方式---随机梯度下降

2.涉及知识点

①优化器

pytorch将深度学习中常用的优化方法全部封装在torch.optim之中,所有的优化方法都是继承基类optim.Optimizier

Pytorch打怪路(一)pytorch进行CIFAR-10分类(3)定义损失函数和优化器_第2张图片

图中提到了如果想要把模型搬到GPU上跑,就要在定义优化器之前就完成.cuda( )这一步


2.损失函数

损失函数是封装在神经网络工具箱nn中的,包含很多损失函数,如图所示;

Pytorch打怪路(一)pytorch进行CIFAR-10分类(3)定义损失函数和优化器_第3张图片

此例中用到的是交叉熵损失,criterion = nn.CrossEntropyLoss() 详情如下:

Pytorch打怪路(一)pytorch进行CIFAR-10分类(3)定义损失函数和优化器_第4张图片Pytorch打怪路(一)pytorch进行CIFAR-10分类(3)定义损失函数和优化器_第5张图片Pytorch打怪路(一)pytorch进行CIFAR-10分类(3)定义损失函数和优化器_第6张图片


基本上这一步没什么好说的,就是在众多的优化器方法和损失函数中选择就ok,具体选什么就由自己情况定

你可能感兴趣的:(pytorch)