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

Tensorflow 张量流。条件可训练变量与随机深度神经网络,tensorflow,neural-network,deep-learning,conv-neural-network,stochastic,Tensorflow,Neural Network,Deep Learning,Conv Neural Network,Stochastic,我在开始使用Tensorflow实现随机深度正则化方法时遇到了一个问题。论文()指出,如果我们在训练过程中随机丢弃一些剩余单元,模型可以更快地收敛。目前火炬的实施效果很好。在Tensoflow中,我可以对剩余的单元分支设置条件,以便在前进步骤中取消对它的激活,但在后退步骤中权重仍将更新。无法判断这些权重(在我们取消的剩余分支中)不再是可训练的,它们不应包含在当前会话运行的优化中 我已经在github上创建了,在那里我介绍了如何以一种简单的方式解决这个问题,当然有一些东西会阻止应用一个简单的修复方

我在开始使用Tensorflow实现随机深度
正则化
方法时遇到了一个问题。论文()指出,如果我们在训练过程中随机丢弃一些剩余单元,模型可以更快地收敛。目前火炬的实施效果很好。在Tensoflow中,我可以对剩余的单元分支设置条件,以便在前进步骤中取消对它的激活,但在后退步骤中权重仍将更新。无法判断这些权重(在我们取消的剩余分支中)不再是可训练的,它们不应包含在当前会话运行的优化中


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

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


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

谢谢您的评论。是的,从某种意义上说你是对的。尽管我们不会在图中包含梯度的计算,但我们仍然不能阻止对参数应用梯度,因为它们在可训练变量列表中。这是一个要点。ps:只是为了使它符合文档
tf。stopgradient
应该是
tf.stop\u gradient