Keras:检索每个模型输出的准确性

时间:2017-05-17 12:21:06

标签: python performance deep-learning keras

我目前正在实施具有多个输入和输出的Keras模型。输入和输出的数量是相同的。

我的代码的输出部分如下所示。它包含for循环,因为它应该是一个动态的多流模型:

...
for s in range(NUM_STREAMS):
        x[s] = Dense3(x[s])
        logits.append(Softmax0(x[s]))

model = Model(
    inputs=[inp_ele for inp_ele in inp],
    outputs=[logit for logit in logits]
)
sgd = optimizers.SGD(lr=0.1)
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])

现在我想检索模型中每个logit的准确度。但是,应用print(model.metrics_names)会给我以下内容(在此示例中为3流模型):

['loss', 'activation_8_loss', 'activation_8_loss', 'activation_8_loss', 
'activation_8_acc', 'activation_8_acc', 'activation_8_acc']

现在,当我尝试从model.fit函数中检索历史对象时,它会给我一个

KeyError: [-1] #Instead of the -1, it is respectively and of the lower list-indecies

我尝试使用以下方法检索准确性,但没有一种方法有效。

print(history.history['activation_8_acc'])
print(history.history['activation_8_acc'][-1])
print(history.history[-1])

如何检索个人准确度?或者如果可能,我该如何检索此模型的平均精度?

1 个答案:

答案 0 :(得分:1)

我添加了一行print(history.history)输出:

'activation_8_loss_3': [1.3723259580135345], 'loss': [4.1188646435737608], 'activation_8_loss_1': [1.3680831426382065], 'activation_8_loss_2': [1.37177708029747], 'activation_8_acc_1': [0.46729998335242273] ...

表明print(model.metrics_names)没有讲述整个故事。