Tensorflow 如何处理巨大的初始损失?

Tensorflow 如何处理巨大的初始损失?,tensorflow,deep-learning,Tensorflow,Deep Learning,我为图像密度估计建立了一个模型(glow)。当使用CUB200数据集进行训练时,它起作用,图像大小(224224,3),每批40张 损失函数是使用tensorflow_概率分布计算对数概率。 最初的损失约为40000英镑,其余的训练进行得很顺利。但是如果我使用celebA数据集进行训练,最初的损失就像1e+26有时Nan 两个数据集使用相同的处理方式,所以我认为数据集应该是好的。 问题是,我想知道最初是什么导致了如此高的损失,以及如何处理它,因为一旦它引发了NaN错误,培训就会停止。这意味着在

我为图像密度估计建立了一个模型(glow)。当使用CUB200数据集进行训练时,它起作用,图像大小
(224224,3)
,每批40张
损失函数是使用tensorflow_概率分布计算对数概率。
最初的损失约为40000英镑,其余的训练进行得很顺利。但是如果我使用celebA数据集进行训练,最初的损失就像
1e+26
有时
Nan

两个数据集使用相同的处理方式,所以我认为数据集应该是好的。


问题是,我想知道最初是什么导致了如此高的损失,以及如何处理它,因为一旦它引发了NaN错误,培训就会停止。

这意味着在培训开始时,您对真实课程的预测概率非常低。这可能意味着权重的初始值太大,或者输入本身未标准化,导致极端输出(非常接近零或softmax输出为一)。您可以通过以下方式解决此问题:

  • 规范化输入
  • 具有较小的初始重量
  • 在对数的参数中添加一个小常量,这样日志就不会太大

您是否对图像进行了标准化?我的意思是将每个像素从(0255)映射到(0,1)?@alift是的,我做了,你在对数的参数上加一个小常数是什么意思?你能给我举几个例子吗?谢谢@ABCMOONMAN999例如,将
log(x)
替换为
log(x+1e-6)