使用tensorflow,我是否可以将已计算的梯度反向传播到所有参数,然后将梯度应用到整个网络?

使用tensorflow,我是否可以将已计算的梯度反向传播到所有参数,然后将梯度应用到整个网络?,tensorflow,deep-learning,Tensorflow,Deep Learning,我可以得到网络输出的梯度(通过其他方式计算),我可以将梯度传播到所有参数,然后应用到整个网络吗?你可以检查这个 如果计算的梯度也是张量或变量,则可以替换梯度 但是如果你计算的梯度是数值的,我不确定tensorflow是否能轻松做到这一点。我认为,通过这种方式,你应该得到所有梯度,然后应用它们。但是我只能有最后一层的梯度,我想要的是首先将最后一层的梯度bp到前面的层,得到所有的梯度,然后我可以应用它们。非常感谢。 trainable_variables = tf.trainable_variabl

我可以得到网络输出的梯度(通过其他方式计算),我可以将梯度传播到所有参数,然后应用到整个网络吗?

你可以检查这个

如果计算的梯度也是
张量
变量
,则可以替换
梯度


但是如果你计算的梯度是数值的,我不确定tensorflow是否能轻松做到这一点。

我认为,通过这种方式,你应该得到所有梯度,然后应用它们。但是我只能有最后一层的梯度,我想要的是首先将最后一层的梯度bp到前面的层,得到所有的梯度,然后我可以应用它们。非常感谢。
trainable_variables = tf.trainable_variables()
grads = tf.gradients(self.cost, trainable_variables)

if self.hps.optimizer == 'sgd':
  optimizer = tf.train.GradientDescentOptimizer(self.lrn_rate)
elif self.hps.optimizer == 'mom':
  optimizer = tf.train.MomentumOptimizer(self.lrn_rate, 0.9)

apply_op = optimizer.apply_gradients(
    zip(grads, trainable_variables),
    global_step=self.global_step, name='train_step')