重读老师CV课的代码时发现,loss值是通过fluid.layers.softmax_with_cross_entropy(logits, label)这个函数得出的,其取代了原来简单的例子中的fluid.layers.cross_entropy(logits, label)函数。查文档得知softmax_with_cross_entropy()函数会将softmax操作、交叉熵损失函数的计算过程进行合并,从而提供了数值上更稳定的梯度值。我的问题是:最后进行梯度下降还是得通过loss算出梯度。那么把最后一步的求softmax放在模型里和放在求损失的函数里有区别么?
请登录后评论
TOP
切换版块
有道理,有可能框架的实现过程中,对进行梯度计算前的输入进行了类似归一化的操作以规范取值范围。
猜测:是不是进行梯度计算的求偏导之前的函数不同,因为softmax不在神经网络层里