当使用Tensorflow开始实现随机深度regularization
approch时,我遇到了一个问题。论文(https://arxiv.org/pdf/1603.09382.pdf)指出,如果我们在训练期间随机随机某些剩余单位,模型可以更快地收敛。 Current Torch实现完美无缺。在Tensoflow中,我可以在剩余单位分支上设置条件,这样在前进步骤期间,它的激活将被取消,但权重仍将在后退步骤中更新。没有办法告诉我们这些权重(在我们取消的剩余分支中)不再可训练,并且它们不应包含在当前会话运行的优化中。
我已经在github上创建了issue,在那里我介绍了如何以天真的方式解决这个问题,当然有些东西会阻止应用一个简单的修复,否则真的很奇怪为什么tf.Variable
的 trainable 参数不允许布尔Tensor作为值。如果有人对这个问题有所了解,如果你恢复对Tensoflow的信心,我将非常感激:)
答案 0 :(得分:1)
trainable
参数用于控制是否构建训练该变量的图形。使用条件停止梯度(一个分支中tf.cond
,另一个分支tf.identity
而另一个分支tf.stopgradient
)将处理停止该变量的渐变。
但是,如果在前进步骤中未使用其值,则计算的梯度保证为0,因此更新将为无操作。