有关paddle.fluid.layers.batch_norm中的in_place参数,疑似bug
Created by: usafchn
最近用paddle写了一个cifar10图片分类的模型,发现batch norm层有些小问题,代码如下:
def batch_norm(inputs):
return fluid.layers.batch_norm(
inputs,
momentum=FLAGS.bn_decay,
epsilon=0.001,
data_layout="NCHW",
in_place=True
)
一开始模型无法收敛(cifar-10总共10个分类,模型准确率始终在0.1上下),后来经过排查发现是in_place=True导致,改成False模型就可以正常收敛。
现在的现象是 in_place=True 会影响 fluid.layers.batch_norm 的返回值,导致返回一个无效值。这个设计不太合理,在别的框架中例如pytorch,这个参数只提升性能,不影响函数返回内容。