【发布时间】:2018-03-28 07:23:02
【问题描述】:
我想在张量流中使用千层面库复制网络构建。我在批量标准化方面遇到了一些麻烦。 这是有关使用的批量标准化的千层面文档: http://lasagne.readthedocs.io/en/latest/modules/layers/normalization.html?highlight=batchNorm
在 tensorflow 中,我发现了两个要归一化的函数:
- https://www.tensorflow.org/api_docs/python/tf/nn/batch_normalization
- https://www.tensorflow.org/api_docs/python/tf/layers/batch_normalization
第一个更简单,但不允许我从 lasagne 中选择 alpha 参数(批量平均值的指数移动平均值和训练期间计算的标准差的系数)。我尝试使用第二个函数,它有更多选项,但有两点我不明白:
- 我不清楚动量和 renorm_momentum 之间的区别。如果我在千层面网络中的 alpha 为 0.9,我可以将两个 tensorflow 动量都设置为 0.9 并期待相同的行为吗?
- tf 文档说明:
训练时,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)
我真的不明白这里发生了什么以及我需要在我的代码中放置类似内容的地方。我可以在运行会话之前把它放在某个地方吗?我不应该直接复制这段代码的哪些部分,而是根据我的代码进行更改?
【问题讨论】:
标签: tensorflow neural-network batch-normalization