0

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

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

4

1 回答 1

1

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

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

于 2017-03-30T22:44:44.337 回答