用于训练的线性变换输出和地面实况的损失
Posted
技术标签:
【中文标题】用于训练的线性变换输出和地面实况的损失【英文标题】:Loss from linear transformed output and ground truth for training 【发布时间】:2020-11-23 13:38:03 【问题描述】:我在 pytorch 中有一个预测模型,它接受输入并在特定坐标系中生成输出。在我的过程中,我将输出和基本事实转换为不同的坐标系(二维平移和旋转)。我现在可以计算两个坐标系中的损失,它们具有相同的值(RMSE 和 NLL 损失)。
我在训练中使用哪个损失来运行 loss.backward() 是否重要?
【问题讨论】:
【参考方案1】:TLDR:
我在训练中使用哪个损失来运行 loss.backward() 是否重要?
MSE 否,NLL 是。
假设ground truth向量为x
,输出向量为y
,
旧 MSE = (x-y).T.dot(x-y)
转换后,ground truth 向量变为A.dot(x)
,输出变为A.dot(y)
。
新 MSE = (x-y).T.dot(M).dot(x-y)
其中M=A.T.dot(A)
其中A
是变换矩阵。
由于线性变换的性质,我们也有A.T.dot(A)=I
所以,我们可以看到M
总是会变成单位矩阵,因此 MSE 保持不变。
现在,通常在nn.LogSoftmax
之后应用的 NLL 损失就可以了
Y[x].mean()
其中 Y 是 nn.LogSoftmax
之后的输出,x 是目标。
(我指的是this)。
这与线性变换输出和目标后得到的不同。
【讨论】:
以上是关于用于训练的线性变换输出和地面实况的损失的主要内容,如果未能解决你的问题,请参考以下文章