我目前正在实施具有多个输入和输出的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])
如何检索个人准确度?或者如果可能,我该如何检索此模型的平均精度?
答案 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)
没有讲述整个故事。