目录
1.数据集训练
个人理解:神经网络训练的实质,实际上是找到一种数据集中的映射关系
从而可以泛化到别的不在数据集的数据中
2.代码
先是定义了Adam优化器
然后在优化器中传入实例化之后的网络参数,然后定一个学习速率
打开中文文档:
2.1学习率
学习率实际上就是步长
可参考SGD(梯度下降法)
比如说网络里现在是一个参数矩阵
然后和输入图片相乘之后得到一个输出
然后输出和ground truth之间是有差距的
然后通过损失函数来量化这个差距
量化出来之后,就需要减小这个差距,优化器通过反向计算得到梯度,然后乘以学习率,对应参数减去这个值,然后下一次输入乘以矩阵就会得到更好对输出
2.2损失函数
选用cross这个损失函数
拿svm来举例说明:
首先是对猫这张分类图片,经过网络之后输出的是:
3.2
5.1
-1.7
那么对于正确的分类猫,得分是3.2
那么就是其他两类得分输入损失函数得到损失值
然后优化器求出损失函数的梯度,然后反向传播优化网络
3.训练
然后是循环10次
加载数据集
然后设定好:
- 输入值
- ground truth
- 预测值
这里的x实际上就是图像的tensor
然后y就是label里的数字标签
通过以下定义的接口转换
然后计算损失
然后调用优化器梯度归零
反向传播
优化
然后打印一下loss
可以看到loss快速下降,但是识别效果是有误差的
4.结果分析
以下就是结果分析代码