写在前面
写本文档的目的是记录自己在pytorch神经网络的搭建中,遇到的不解之处,多为概念性名词。读者可选择性阅读。
1 交叉熵损失函数。
1.1 交叉熵能够衡量同一个随机变量中的两个不同概率分布的差异程度,在机器学习中就表示为真实概率分布与预测概率分布之间的差异。交叉熵的值越小,模型预测效果就越好。
1.2 交叉熵在分类问题中常常与softmax是标配,softmax将输出的结果进行处理,使其多个分类的预测值和为1,再通过交叉熵来计算损失。
1.3 交叉熵损失函数可以计算出模型预测值与实际标签值的差异。有了loss,在反向传播中,神经网络的更改【比如调参,加模块,更改模型等】才有了更直观的表现。
参考 :
2,优化器
所有要训练的参数记为 ,目标函数为 ,考虑最小化目标函数,要用梯度下降法。梯度为。
梯度是函数变化最快的方向,如果函数是凸函数,那么梯度相反的方向就是目标函数更小的方向,梯度下降就是在这个方向上快速的向最小点移动。通常都会有一个步长
神经网络中的目标函数并不是凸函数,所以梯度下降很有可能就困在局部最小或者鞍点,因为此时,梯度很小,无法更新。好的优化器是会考虑这些,想办法从鞍点跳出的。
总结 优化器里面会放着很多最小化目标函数(损失函数)的方法。
3 函数理解篇
1,numpy中stack的用法直观理解 补充理解:用stack维度会增加。从axis的意义来理解会好点。从网页里来看,axis=0,矩阵的堆,axis=2,数组的堆,axis=3,数字的堆。
concat与stack对比:
注意:concat拼接的维度的长度是不同的,但是其他维度的长度必须是相同的,这也是使用concatenate()函数的一个基本原则,违背此规则就会报错.
2,squeeze()函数
Numpy库学习—squeeze()函数
结论:np.squeeze()函数可以删除数组形状中的单维度条目,即把shape中为1的维度去掉,但是对非单维的维度不起作用。