张量流。条件可训练变量和随机深度神经网络

Tensorflow. Conditionally trainable variables and stochastic depth neural networks

我在开始使用 Tensorflow 实现随机深度 regularization 方法时遇到了一个问题。论文 (https://arxiv.org/pdf/1603.09382.pdf) 指出,如果我们在训练期间 随机 删除一些残差单元,模型可以更快地收敛。 当前的 Torch 实现工作完美。在 Tensoflow 中,我可以在剩余单元分支上设置条件,这样在前向步骤中它的激活将被取消,但权重仍然会在后向步骤中更新。无法判断这些权重(在我们取消的残差分支中)不再可训练,它们不应包含在当前会话的优化中 运行.

我在 github 上创建了 issue,在那里我介绍了如何以天真的方式解决这个问题,当然有一些隐藏的东西会阻止应用简单的修复,否则真的很奇怪为什么tf.Variabletrainable参数不允许boolean Tensor作为一个值。如果有人知道这个问题的线索,如果你能恢复我对 Tensoflow 的信心,我将不胜感激 :)

trainable 参数用于控制是否构建用于训练该变量的图。使用条件停止梯度(一个 tf.condtf.identity 在一个分支和 tf.stopgradient 在另一个)将处理停止该变量的梯度。

但是,如果在前向步骤中未使用它的值,则计算的梯度保证为 0,因此更新将是空操作。