首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tensorflow中的批量规范化在推理时

tensorflow中的批量规范化在推理时
EN

Stack Overflow用户
提问于 2019-12-10 01:10:46
回答 1查看 58关注 0票数 1
代码语言:javascript
复制
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给出了as -0.4192285

但在tensorflow y中给出的是as -6.781823635101318359e-01

为什么会发生这种情况?在tensorflow中进行批量规范化的推理时,这个公式是否正确?这里我使用的是tensorflow.contrib.slim.batch_norm函数。

EN

回答 1

Stack Overflow用户

发布于 2019-12-10 11:22:33

你的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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59253592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档