Torch 数据集放到网络训练(六)

目录

1.数据集训练

2.代码

2.1学习率

2.2损失函数

 3.训练

4.结果分析 


1.数据集训练

Torch 数据集放到网络训练(六)_第1张图片

个人理解:神经网络训练的实质,实际上是找到一种数据集中的映射关系

从而可以泛化到别的不在数据集的数据中

2.代码

先是定义了Adam优化器

Torch 数据集放到网络训练(六)_第2张图片 然后在优化器中传入实例化之后的网络参数,然后定一个学习速率

打开中文文档:

主页 - PyTorch中文文档

Torch 数据集放到网络训练(六)_第3张图片

2.1学习率

学习率实际上就是步长

可参考SGD(梯度下降法) 

Torch 数据集放到网络训练(六)_第4张图片

比如说网络里现在是一个参数矩阵

然后和输入图片相乘之后得到一个输出

然后输出和ground truth之间是有差距的

然后通过损失函数来量化这个差距

量化出来之后,就需要减小这个差距,优化器通过反向计算得到梯度,然后乘以学习率,对应参数减去这个值,然后下一次输入乘以矩阵就会得到更好对输出

2.2损失函数

选用cross这个损失函数

 Torch 数据集放到网络训练(六)_第5张图片

拿svm来举例说明:

Torch 数据集放到网络训练(六)_第6张图片

首先是对猫这张分类图片,经过网络之后输出的是:

3.2

5.1

-1.7

那么对于正确的分类猫,得分是3.2

那么就是其他两类得分输入损失函数得到损失值

然后优化器求出损失函数的梯度,然后反向传播优化网络

 3.训练

然后是循环10次

Torch 数据集放到网络训练(六)_第7张图片

加载数据集

然后设定好:

  1. 输入值
  2. ground truth
  3. 预测值

Torch 数据集放到网络训练(六)_第8张图片

 这里的x实际上就是图像的tensor

然后y就是label里的数字标签

通过以下定义的接口转换

Torch 数据集放到网络训练(六)_第9张图片 然后计算损失

Torch 数据集放到网络训练(六)_第10张图片

然后调用优化器梯度归零

反向传播

优化

然后打印一下loss

Torch 数据集放到网络训练(六)_第11张图片

 可以看到loss快速下降,但是识别效果是有误差的

4.结果分析 

以下就是结果分析代码

Torch 数据集放到网络训练(六)_第12张图片

你可能感兴趣的:(#,pytorch,深度学习,python,机器学习)