学习率lr决定了梯度下降每一次迭代的改变量,深度学习的核心在于通过梯度下降去找寻最优解。常用的梯度下降算法有:Adam sgd rmsprop等
以一个简单的回归模型为例,求取w和b,loss函数的定义在于使得y和wx+b的差值最小。
在该回归问题中,梯度是w和b的梯度,切记不是x。 x与y可以是一开始生成的数组。
这里以手写字体为例,一张28*28的图片被展开成,1*784的张量,经过一些列运算,变为一个1*10的张量,此处的10对应手写体的10类分类,[1,0,0,0,0,0,0,0,0,0] 。one-hot编码的由来
通过和真实标签计算欧式距离,得到向量之间的差距,即可得到Loss。
那么针对分类问题的梯度下降,就是将预测的标签和真实的标签构建函数求取距离,并对此函数求梯度,优化得到最优的w和b。
预测向量中每一个位置都对应该类别的概率,用argmax函数求得概率最大一类所在的位置即得到预测的标签。
现在pytorch中还不具备现成的one_hot编码方式 需要自己定义、编写
此处定义了3个线性层,每一层其实都是一个xw+b,输入为28*28,在第一层变为1*256,第一层的输出对应第二层的输入256,经过第二层输出为1*64,经过第三层变为1*10
前两层可以用relu进行一个输出,最后一层考虑用sigmoid 或者softmax 也可以不用,直接输出。
for batch_idx 是将整个数据集遍历一次,for epoch 是整体遍历几次。