Tensorflow 如何处理巨大的初始损失?
我为图像密度估计建立了一个模型(glow)。当使用CUB200数据集进行训练时,它起作用,图像大小Tensorflow 如何处理巨大的初始损失?,tensorflow,deep-learning,Tensorflow,Deep Learning,我为图像密度估计建立了一个模型(glow)。当使用CUB200数据集进行训练时,它起作用,图像大小(224224,3),每批40张 损失函数是使用tensorflow_概率分布计算对数概率。 最初的损失约为40000英镑,其余的训练进行得很顺利。但是如果我使用celebA数据集进行训练,最初的损失就像1e+26有时Nan 两个数据集使用相同的处理方式,所以我认为数据集应该是好的。 问题是,我想知道最初是什么导致了如此高的损失,以及如何处理它,因为一旦它引发了NaN错误,培训就会停止。这意味着在
(224224,3)
,每批40张损失函数是使用tensorflow_概率分布计算对数概率。
最初的损失约为40000英镑,其余的训练进行得很顺利。但是如果我使用celebA数据集进行训练,最初的损失就像
1e+26
有时Nan
两个数据集使用相同的处理方式,所以我认为数据集应该是好的。
问题是,我想知道最初是什么导致了如此高的损失,以及如何处理它,因为一旦它引发了NaN错误,培训就会停止。这意味着在培训开始时,您对真实课程的预测概率非常低。这可能意味着权重的初始值太大,或者输入本身未标准化,导致极端输出(非常接近零或softmax输出为一)。您可以通过以下方式解决此问题:
- 规范化输入
- 具有较小的初始重量
- 在对数的参数中添加一个小常量,这样日志就不会太大
log(x)
替换为log(x+1e-6)