我想计算权重的梯度。我使用以下代码:
(假设已经定义了模型)
(数据和标签也作为输入提供)
weights = model.trainable_weights
gradients = model.optimizer.get_gradients(model.total_loss, weights)
input_tensors = [model.input, model.sample_weights, K.learning_phase() ]
getGradients = K.function(inputs=input_tensors, outputs=gradients)
sampleWeights = np.ones(len(image_data))
inputs = [[image_data, labels], sampleWeights, 0 ]
print getGradients(inputs)
我使用带有Tensorflow(v1.2.1)的Keras(v2.0.6)作为后端。
另外,有没有其他方法可以不使用K.function? (我是Keras和Tensorflow的新手。)
答案 0 :(得分:1)
发现错误: model.sample_weights 是一个列表,这是一个问题。将其更改为 model.sample_weights [0] 有效。
input_tensors = [model.input, model.sample_weights[0], K.learning_phase() ]