有3个神经网络像下面的代码一样连接,我们如何从初始网络中获取两个梯度??第一个梯度工作,但第二个梯度返回None
张量。看起来它们之间并没有关系,两个可以得到梯度。这里有什么问题
with tf.GradientTape() as tape1:
with tf.GradientTape() as tape2:
output1 = NN_model1(input1, training=True)
output2 = NN_model2(output1, training=True)
output3 = NN_model3([input1, output1, output2], training=True)
loss1 = -tf.math.reduce_mean(output3)
loss2 = -tf.math.reduce_mean(output2)
grad1 = tape2.gradient(loss1, NN_model1.trainable_variables)
grad2 = tape1.gradient(loss2, grad1)
optimizer.apply_gradients(zip(grad2, NN_model1.trainable_variables))
我认为正确的方法应该是:
相关问题 更多 >
编程相关推荐