Tensorflow:使用batch_norm函数时,在一层“ moving_variance”中获得NaN

时间:2018-08-22 06:59:54

标签: tensorflow

问题:

使用SE_Inception_resnet_v2训练了分类模型后,我将看不见的图像用于预测。但是,结果始终相同。例如,结果始终是 logits = [.1,.2,.3]

通过调试代码,我发现使用tensoflow的batch_norm函数归一化的值在一个特定层中全为零,使用batch_norm函数的其他层仍然可以输出标准化的输入值。就我而言,它在 Reduction_B / cond / Merge:0 节点中输出所有零值。

更多,我检查了该特定层上batch_norm函数的输入数据和参数。输入数据很好,但是参数 moving_variance是NaN ,但是moving_mean很好。有趣的是,以前的 moving_variance 更新也可以。

我认为这是造成我问题的原因,谁能解释这是什么原因,我该如何解决?谢谢

1 个答案:

答案 0 :(得分:1)

问题已解决。解决方案是批量大小必须大于1 。我将在下面发布两个案例,以显示一个正在运行,而另一个不适用于我的情况。

案例1 :(失败)

培训样本数:10
批量大小:1
迭代次数:10

案例2 :(成功)

培训样本数:10
批次大小:2
迭代:5