tensorflow - Tensorflow:使用batch_norm函数时,在一层的“moving_variance”中获取NaN
问题描述
问题:
在使用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。我将在下面发布两个案例,以显示一个有效,另一个不适合我的案例。
案例一:(失败)
训练样本数:10
批量大小:1
迭代:10
案例2:(成功)
训练样本数:10
批量大小:2
迭代:5
推荐阅读
- hive - Hive- 使用 ROW_NUMBER() 删除重复行
- java - Appium 不显示 webview 上下文,它只显示本机应用程序上下文。如何获取 webview 上下文?
- java - 最后的分析失败了。后台任务页面上提供了更多详细信息
- python - 如何获取弹性搜索索引中列(字段)中不同值的计数
- c++ - 嵌套可变参数模板
- .net - 如何在 Visual Studio 2017 专业版中启用 ASP.Net Core 2.2
- cordova - Ionicv3 使用 minSdk 最多为 16 的兼容库或将此项目的 minSdk 版本增加到至少 19,
- jquery - 如何通过生成的jsonarray动态创建多个数据表?
- dkim - 如何使用 C# .Net 使用 Chilkat 将带有 DKIM 的电子邮件发送到 BCC
- ios - 部署到 Firebase 托管时,HTML5 视频无法通过 HTTPS 在 iOS 上播放