【问题标题】:Tensorflow assign the moving_variance and moving_average of tf.contrib.layers.batch_normTensorflow 分配 tf.contrib.layers.batch_norm 的moving_variance 和moving_average
【发布时间】:2017-12-10 12:16:50
【问题描述】:

我有一个 CNN 模型,其中包含一些批量标准化层。 batchnorm 层由tf.contrib.layers.batch_norm 构建。该模型在基本情况下运行良好。但是一个问题是我不知道如何分配它的moving_variance和moving_mean。

具体来说,正如officail website所描述的,batch norm层有variancemeanscaleoffset四个参数。最后两个是张量流变量,我可以很好地解决。对于最后两个,即使我可以用tf.get_collection(tf.GraphKeys.UPDATE_OPS)) 得到它们,它们是两个我不知道如何分配它们的张量。大多数情况下,这两个参数是在训练阶段设置的。

我也试过tf.get_collection(tf.GraphKeys.VARIABLES),我可以得到两个名为tf.Variable 'BatchNorm/moving_mean和tf.Variable BachNorm/moving_Variance的tensorflow变量,尽管我可以用tf.assign改变这两个变量的值,但奇怪的是batchNorm的输出没有'不要相应地改变

感谢您的任何建议!

【问题讨论】:

    标签: tensorflow batch-normalization


    【解决方案1】:

    来自 TensorFlow 官方网站: https://www.tensorflow.org/api_docs/python/tf/contrib/layers/batch_norm

    注意:训练时,moving_mean 和moving_variance 需要更新。默认情况下,更新操作放在 tf.GraphKeys.UPDATE_OPS 中,因此需要将它们作为依赖项添加到 train_op。例如:

    update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
    with tf.control_dependencies(update_ops):
        train_op = optimizer.minimize(loss)
    

    【讨论】:

      猜你喜欢
      • 2018-06-05
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多