tensorflow - 推理时张量流中的批量标准化
问题描述
My x is -1.593087986111640930e-02,
beta is 4.061257466673851013e-02,
moving mean is -1.356904511339962482e-03,
moving variance is 4.480824827624019235e-06
gamma is false so result will not scale
epsilon = 0.001
x_hat = (x - moving_mean) / square_root_of(moving_variance + epsilon)
y = gamma * x_hat + beta
当我手动计算时,y 给出 -0.4192285
但在张量流中,y 给出 -6.781823635101318359e-01
为什么会这样?在张量流中批量归一化的推理时间这个方程是否正确?这里我使用的是 tensorflow.contrib.slim.batch_norm 函数。
解决方案
你的 epsilon 太大了。看看你的移动方差,它大约是 1e-6,你将 1e-3 添加到它作为 epsilon!
当您将 epsilon 更改为更合适的内容时(想想 1e-9),它会更接近 TF 提供的内容。人们添加 epsilon 的唯一原因是避免除以 0,这甚至在 tf.batch_normalization 页面上都有说明,因此 1e-3 太高了: https ://www.tensorflow.org/api_docs/python/tf/nn /batch_normalization
推荐阅读
- module - 相对路径与脚本所在的位置无关?卢阿
- spring - Spring Res 文件中的字符集“ISO-8859-1”不受支持的字符
- python - 通过 PUT 或 POST 为上传的文件添加了不必要的标头
- c# - 如何使用 LINQ-to-Entities 将客户订单详细信息插入我的账单表
- terraform - Convert Json to Terraform map(objects())
- xamarin.forms - 我们如何为图书购买应用实现应用内购买?
- spring-data - 将聚合查询结果映射到 POJO 的正确属性
- reactjs - 复选框无法取消选中网格中的项目
- swift - 如何在 swiftUI 中更改默认导航推送和弹出动画
- wordpress - 访问插件文件时出现 Wordpress 403 禁止错误