用于训练的线性变换输出和地面实况的损失

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)。

这与线性变换输出和目标后得到的不同。

【讨论】:

以上是关于用于训练的线性变换输出和地面实况的损失的主要内容,如果未能解决你的问题,请参考以下文章

如何计算线性锥形变换矩阵

线性变换相关

线性映射06——线性变换

矩阵与线性变换

PCA主成分分析

地面实况图像到一个热编码阵列(语义分割)