首页 Paddle框架 帖子详情
计算loss时,进行softmax操作的先后会影响loss的值。
收藏
快速回复
Paddle框架 问答深度学习模型训练 1897 2
计算loss时,进行softmax操作的先后会影响loss的值。
收藏
快速回复
Paddle框架 问答深度学习模型训练 1897 2

在计算loss的时候,当我先做softmax,再做transpose,使用cross_entropy计算损失,得到loss=6.759191
code2
loss2
调整顺序,先transpose,再做softmax,使用cross_entropy计算损失,得到loss=2.243314
code1
loss1
在第一种的情况下,模型无法收敛。偶然发现是顺序造成的问题。

0
收藏
回复
全部评论(2)
时间顺序
AIStudio791310
#2 回复于2020-02

您好,我理解这两种计算应该不是等价的吧,softmax是以某一个轴的下标为索引,对这一轴上其他维度的值进行 激活 + 归一化处理。一般来说,这个索引轴都是表示类别的那个维度(也就是最后一个维度)

您可以看下官方文档:https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/layers_cn/softmax_cn.html#paddle.fluid.layers.softmax

softmax里面有一个维度变换操作
image

transpose之前和transpose之后softmax的轴应该是不一样的,所以导致计算也不是等价,您看看是不是这样?

0
回复
AIStudio791309
#3 回复于2020-02

您好,我理解这两种计算应该不是等价的吧,softmax是以某一个轴的下标为索引,对这一轴上其他维度的值进行 激活 + 归一化处理。一般来说,这个索引轴都是表示类别的那个维度(也就是最后一个维度)

您可以看下官方文档:https://www.paddlepaddle.org.cn/documentation/docs/zh/api_cn/layers_cn/softmax_cn.html#paddle.fluid.layers.softmax

softmax里面有一个维度变换操作
image

transpose之前和transpose之后softmax的轴应该是不一样的,所以导致计算也不是等价,您看看是不是这样?

恩恩,是的

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户