【发布时间】:2020-06-18 04:16:38
【问题描述】:
在训练的时候,我想保持BN层不变,所以我把is_training=False传给:
tf.contrib.layers.batch_norm(tensor_go_next, decay=0.9, center=True, scale=True, epsilon=1e-9,
updates_collections=tf.GraphKeys.UPDATE_OPS,
is_training=False, scope=name_bn_scope)
并且没有将name_bn_scope/gamma:0 name_bn_scope/beta:0 用于训练 var_list。
经过训练,gamma 和 beta 还是一样的,这正是我想要的。但是moving_mean和moving_variance在训练后会变成nan矩阵,导致0.1%的准确率。
我不明白为什么,is_taining=False 不强制张量流保持moving_mean 和moving _variance 不变?我该如何解决和实施这个问题?
BN层折磨了我这么久, 请帮帮我!
【问题讨论】:
标签: python tensorflow keras slim batch-normalization