首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tensorflow批归一化:差异动量与renorm_momentum

Tensorflow批归一化:差异动量与renorm_momentum
EN

Stack Overflow用户
提问于 2018-03-28 07:23:02
回答 1查看 2.2K关注 0票数 2

我想在张量流中复制一个用千层面库建立的网络。我在批量标准化方面遇到了一些麻烦。这是关于使用的批处理规范化的千层面文档:http://lasagne.readthedocs.io/en/latest/modules/layers/normalization.html?highlight=batchNorm

在tensorflow中,我发现了两个可以标准化的函数:

  1. 归一化
  2. 归一化

第一个比较简单,但不允许我从千层面中选择α参数(批量平均指数移动平均系数和训练期间计算的标准差)。我尝试使用第二个函数,它有更多的选项,但是有两件事我不理解:

  1. 我不清楚动量和renorm_momentum之间的区别。如果我在千层面网络中有一个0.9的阿尔法,我能把两个tensorflow动量设为0.9,并期望同样的行为吗?
  2. 信托基金的文件说明:

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

代码语言:javascript
复制
  update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
  with tf.control_dependencies(update_ops):
    train_op = optimizer.minimize(loss)

我真的不明白这里发生了什么,我需要在代码中放一些类似的东西。我能先把这个放在某个地方吗?这段代码的哪些部分不应该照本宣科,而应该根据我的代码进行更改?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-28 09:35:50

tf.nn.batch_normalizationtf.layers.batch_normalization有很大的区别。见我在这里的回答。因此,通过使用layers版本,您已经做出了正确的选择。现在,关于你们的问题:

  1. renorm_momentum只具有一种效果,就是通过将renorm参数设置为True来使用True。如果使用默认批处理规范化,则可以忽略这一点。
  2. 简短的回答:你可以从字面上复制代码片段。将其准确地放在通常称为optimizer.minimize的地方。

批量标准化有两种“模式”:训练和推理。在训练过程中,使用当前小型批次的均值和方差。在推断过程中,这是不可取的(例如,您甚至可能不使用批处理作为输入,因此不会有小型批处理统计数据)。由于这个原因,在培训期间保持小批均值/差异的移动平均数。然后使用这些移动平均线进行推断。

默认情况下,Tensorflow只执行它需要执行的内容。这些移动平均线不需要用于培训,因此它们通常不会被执行/更新。tf.control_dependencies上下文管理器强制Tensorflow在每次计算代码块中的任何内容(在本例中是成本)时执行更新。由于每个训练步骤都需要精确地计算成本,所以这是确保移动平均值被更新的好方法。

代码示例看起来有点神秘,但在上下文中,它实际上只是(作为一个例子):

代码语言:javascript
复制
loss = ...
train_step = SomeOptimizer().minimize(loss)
with tf.Session() as sess:
    ....

变成了

代码语言:javascript
复制
loss = ...
with tf.control_dependencies(tf.get_collection(tf.GraphKeys.UPDATE_OPS)):
    train_step = SomeOptimizer().minimize(loss)
with tf.Session() as sess:
    ....

最后,记住要使用正确的training参数进行批处理规范化,以便按照预期使用小型批处理统计数据或移动平均值。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49528440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档