pyTorch学习

pyTorch动态的建图工具,而TensorFlow需要先建图,然后通过feed和run重复执行建好的图。

动态计算图是pyTorch的主要特性:
让计算模型更灵活,复杂
让反向传播算法随时进行

自动微分变量(一种对象,新的数据结构)
autograd.Variable[ data(值) grad(梯度) creator(记录图) ]

搭建深度学习网络的重点:
1.网络参数如何保存
2.网络如何构建
3.如何计算梯度和更新参数

pyTorch的两种变量类型:Tensor和Variable
注:Variable是Tensor的一个wrapper,不仅保存了值,还保存了值的creator,需要BP(反向传播)的网络都是Variable参与运算
标量(scalar),向量和矩阵都是tensor

pyTorch的自动求导工具包torch.autograd

为什么使用softmax作为神经网络的损失函数
二次代价函数呈现的特点:预测值与实际值相差越大,参数调整的幅度可能越小,训练缓慢;而我们希望当预测值与实际值相差越大时,使参数调整的幅度尽量大,提高训练速度。

logsoftmax与softmax的区别
pyTorch学习

CrossEntropyLoss
pyTorch学习
要使得loss越小,第一项应为负值,第二项也可保持负值;此时,x[class]须大于0越大越好,x[j]须小于0且越小越好
在进行梯度计算时,应使得x[class]逐渐增大,故其梯度之应为负值;而要使得x[j]逐渐减小,故其梯度值应为正数
pyTorch学习
pyTorch学习

CrossEntropy的特点:
没有直接包含softmax
input 5 values中的target对应值,要尽可能大,最大
其他四个值,相对要缩小值

NLLLoss(negative log likehood loss)
pyTorch学习