在Tensorflow中实施批处理规范时,如何重用beta和gamma而不重用移动平均值和移动方差?

时间:2018-09-10 16:48:10

标签: python tensorflow batch-normalization

目前,我想使用张量流构建两个卷积神经网络。此外,我还在网络中使用批处理规范(例如tf.contriib.layers.batch_norm)。我希望这两个网络在批处理范式中共享除moving_mean和moving_variance以外的所有权重。

我的问题是,如果我只是以这种方式定义重用变量范围:

def BatchNorm(x, is_reuse, *args):
    with tf.variable_scope('Network', reuse=is_reuse):
        return tf.contriib.layers.batch_norm(x, *args)
# set is_reuse = False when building the first NN
# set is_reuse = True when building the second one

但是,通过这种方式,批处理规范中的所有变量(包括beta,gamma,moving_mean,moving_variance)将全部设置为复用= True或复用= False。但是我只想重用bata和gamma,而不要重用moving_mean和moving_variance。

我自己执行批处理规范是一种解决方案,但是我想知道是否有任何tensorflow函数可以为我做这些事情,因此我只需要将一些参数设置为True或传递给某个张量即可。

非常感谢!

0 个答案:

没有答案