梯度会流过张量流中不可训练的变量吗?

时间:2019-02-28 14:33:49

标签: python tensorflow neural-network deep-learning

我正在训练一个集成了mean teachers的神经网络。过程如下:

  1. 采用受监管的体系结构并复制它。让我们将原始模型称为学生,将新模型称为老师。

  2. 在每个训练步骤中,使用相同的小批量作为对学生和老师的输入,但分别向输入添加随机增强或噪声。 在softmax之后,在学生和教师的输出之间增加额外的一致性成本。

  3. 让优化器正常更新学生权重。

  4. 让老师的权重成为学生权重的指数移动平均值(EMA)。也就是说,在每个训练步骤之后,将老师的权重向学生的权重进行一些更新。

此外,tensorflow文档说EMA变量是使用(trainable = False)创建的,并已添加到GraphKeys.ALL_VARIABLES集合中。现在,由于它们不可训练,因此不会在其上应用渐变,我明白这一点。但是,由于它们取决于图形的当前可训练变量,因此,对教师网络的预测也是如此。由于ema依赖于可训练变量,是否还会有额外的梯度流向可训练变量?通常,不可训练变量会通过它们传递梯度吗?

1 个答案:

答案 0 :(得分:1)

是的。 TLDR:造成损失的所有因素都会产生梯度。

流程如下:

  • 计算损失
  • 弄清楚渐变。通常那是为了降低损失。渐变是通过模型反向传播的。
  • 采用可训练变量并根据梯度/优化算法对其进行调整。

如果该变量不可训练,则不会对其进行调整,但仍会传播渐变。

  

由于ema依赖于可训练变量,是否还会有额外的梯度流向可训练变量?

仅根据图形中的其他内容计算ema,它不会更改渐变。 但是,如果将结果合并到损耗中,则会生成梯度并传播更多的梯度以优化损耗。