微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决Tensorflow或通用神经网络:我的损失之一太高了! 损失= u + v

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

问题取决于输入,v相较于u产生巨大的数字。

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


我的输入未标准化。相反,我放置了归一化层,因此最终对其进行了归一化。我插入归一化层并让v产生大量数字的原因是由于预测值相对于输入的梯度而未归一化,因此我需要这样做。如果我将“好”值作为输入,例如0〜1。我的NN工作正常。但是,当我插入“真实”(与物理学相关的)值时,由于v的巨大值,该值不起作用,并且直到对u进行良好的网络训练后,该v值才会减小。 我还尝试仅针对“ u”设置损失,然后再包含“ v”。但是,由于'v'的值很高,因此该系统无法正常工作。

解决方法

尽管具有归一化层,您仍应归一化输入。

如果您的损失之一(更准确地说,损失相对于参数的梯度)过高,则可以按常数缩放,例如loss = loss/100。数学计算就很好了,可以按1/100缩放渐变。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。