0
grads_and_vars = []
for var in tf.trainable_variables():
if 'synthetic' in var.name:
grads_and_vars.append(self.optim.compute_gradients(self.grad_total_loss, var_list=[var])[0])
else:
for k in self.grad_output.keys():
if k in var.name:
grads = tf.gradients(self.layer_out[k], var, self.grad_output[k])[0]
grads_and_vars.append((grads,var))
# minimize the gradient loss and only change the dni module
self.train_op = self.optim.apply_gradients(grads_and_vars, global_step=self.global_step)
我讀到別人的代碼,任何人都可以向我解釋什麼是他們在做同樣的事情張量流這兩種方法的梯度計算有什麼不同?
grads_and_vars.append(self.optim.compute_gradients(self.grad_total_loss, var_list=[var])[0])
和
grads = tf.gradients(self.layer_out[k], var, self.grad_output[k])[0]
grads_and_vars.append((grads,var))
之間的區別?