K.function返回“TypeError:unhashable type:'list'”

时间:2017-07-20 13:04:24

标签: python tensorflow deep-learning keras

我想计算权重的梯度。我使用以下代码:

(假设已经定义了模型

(数据和标签也作为输入提供)

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)

然而,这会返回以下错误: enter image description here

我使用带有Tensorflow(v1.2.1)的Keras(v2.0.6)作为后端。

另外,有没有其他方法可以不使用K.function? (我是Keras和Tensorflow的新手。)

1 个答案:

答案 0 :(得分:1)

发现错误: model.sample_weights 是一个列表,这是一个问题。将其更改为 model.sample_weights [0] 有效。

input_tensors = [model.input, model.sample_weights[0], K.learning_phase() ]