首页 Paddle框架 帖子详情
关于batch_norm的问题
收藏
快速回复
Paddle框架 问答深度学习模型训练 941 2
关于batch_norm的问题
收藏
快速回复
Paddle框架 问答深度学习模型训练 941 2

我在刷特征时,bn想使用train mode刷(mean和var通过测试样本计算得到,而非保存的变量),program定义方式如下:

test_program = fluid.default_main_program().clone(for_test=True)

bn调用方式如下,

fluid.layers.batch_norm(                                                                
            input=conv,                                                                                
            act=act,                                                                                   
            param_attr=ParamAttr(name=bn_name + '.weight'),                                            
            bias_attr=ParamAttr(bn_name + '.bias'),                                                    
            moving_mean_name=bn_name + '.running_mean',                                                
            moving_variance_name=bn_name + '.running_var',                                             
            is_test=False,                                                                             
            use_global_stats=False,                                                                    
             )

但是我刷出来的特征和bn中

is_test=False,                                                                             
use_global_stats=False, 

刷出来的特征是完全一样的(如果正常的话,一个加载的是固定参数,一个是动态变化的,特征应是不一样的),是我的使用方式有问题嘛?

0
收藏
回复
全部评论(2)
时间顺序
AIStudio785464
#2 回复于2019-12

您好,我不是太明白您的意思,可以稍微解释一下嘛?

0
回复
AIStudio785464
#3 回复于2019-12

在使用过程中测试program是通过训练program 克隆过来的,克隆的时候设置了for_test=True,导致了bn里设置的is_test=False, use_global_stats=False, 无效, 修改为program.clone(for_test=False)已经解决

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户