我想计算权重的梯度。我正在使用以下代码:
(假设模型已经定义)
(数据和标签也都作为输入提供)
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)
但是,这将返回以下错误:
我正在使用Keras(v2.0.6)和Tensorflow(v1.2.1)作为后端。
另外,还有其他方法可以不使用K.function吗? (我是Keras和Tensorflow的新手)。
最佳答案
发现了错误:model.sample_weights是一个列表,这是一个问题。将其更改为model.sample_weights [0]即可。
input_tensors = [model.input, model.sample_weights[0], K.learning_phase() ]