Tensorflow或通用神经网络:我的一个损失太高了!(损失=u+v)



我制作了我的自定义损失值,它是u+v,u是来自神经网络的预测值和训练输出值之间的MSE。v是从与预测值相对于输入值的梯度相关的方程中得出的值。

问题是取决于输入,v与u相比产生了巨大的数字。

如何使v的振幅与u相似?


我的输入未规范化。相反,我放置了规范化层,因此,最终它被规范化了。我插入归一化层和v产生巨大数字的原因是预测值相对于输入的梯度,它不是归一化的,我需要它。如果我把"good"值作为输入,比如0~1。我的NN运行良好。然而,当我插入"真实"(物理相关(值时,由于v的巨大值,它不起作用。在网络为u进行良好训练之前,这个v值不会降低。我还试图只设置与"u"有关的损失,然后再包括"v"。但是,由于"v"的值很高,系统无法工作。

尽管有规范化层,您仍然应该规范化您的输入。

如果你的一个损失(更准确地说,损失相对于参数的梯度(太高,你可以通过一个常数来缩放,比如loss = loss/100。通过1/100缩放梯度,数学计算结果很好。

相关内容

最新更新