我有一个预先训练的Keras序列模型,称为agent,我正在尝试使用损失函数对其进行微调。
json_file = open('model/prior_model_RMSprop.json', 'r')
json_model = json_file.read()
json_file.close()
agent = model_from_json(json_model)
prior = model_from_json(json_model)
# load weights into model
agent.load_weights('model/model_RMSprop.h5')
prior.load_weights('model/model_RMSprop.h5')
agent_output = agent.output
prior_output = prior.output
loss = tf.reduce_mean(tf.square(agent_output - prior_output))
optimizer = tf.train.GradientDescentOptimizer(0.01)
train = optimizer.minimize(loss)
到目前为止,一切正常。但是,当我添加一些基本的tensorflow操作时,会发生错误
agent_logits = tf.cast(tf.argmax(agent_output, axis = 2), dtype = tf.float32)
prior_logits = tf.cast(tf.argmax(prior_output, axis = 2), dtype = tf.float32)
loss = tf.reduce_mean(tf.square(agent_logits - prior_logits))
optimizer = tf.train.GradientDescentOptimizer(0.01)
train = optimizer.minimize(loss)
ValueError:没有为任何变量提供渐变
那么张量流操作会打破模型与损失函数之间的联系吗?我已经在这里停留了将近2个星期,请帮忙。对于如何使用我定义的损失函数更新Keras模型的可训练权重,我也不太清楚。任何提示或相关链接将不胜感激!!!