【发布时间】:2021-03-26 18:27:15
【问题描述】:
只需简单的代码即可生成无渐变。 如果我使用其他变量而不是“model_tmp.trainable_variables [0]”(tf.Variable b)一切都会好的,我得到正确的梯度
@tf.function
def cat(model, model_tmp):
with tf.GradientTape(persistent=True, watch_accessed_variables=False) as g:
g.watch(model.trainable_variables[0])
model_tmp.trainable_variables[0] = tf.multiply(model.trainable_variables[0], 2)
a = tf.reduce_mean(model_tmp.trainable_variables[0])
grads_out = g.gradient(a, model.trainable_variables[0])
tf.print(grads_out)
return grads_out
cat(model, model2)
输出:
None
model 是一个自定义的 Keras 模型。 model2 是第一个模型的克隆 (model2 = tf.keras.models.clone_model(model)) 这个问题的可能根源是什么?谢谢
【问题讨论】:
标签: python tensorflow keras