python – Keras中的model.evaluate()返回了什么值?

我的模型中有多个Dense图层的多个输出.我的模型具有“准确性”作为编译中唯一的度量标准.我想知道每个输出的损失和准确性.这是我的代码的一部分.

scores = model.evaluate(X_test, [y_test_one, y_test_two], verbose=1)

当我打印出分数时,这就是结果.

[0.7185557290413819, 0.3189622712272771, 0.39959345855771927, 0.8470299135229717, 0.8016634374641469]

这些数字代表什么?

我是Keras的新手,这可能是一个微不足道的问题.但是,我已经阅读了Keras的文档,但我仍然不确定.

最佳答案
引自 evaluate() method documentation:

Returns

Scalar test loss (if the model has a single output and no metrics) or
list of scalars (if the model has multiple outputs and/or metrics).
The attribute model.metrics_names will give you the display labels
for the scalar outputs.

因此,您可以使用模型的metrics_names属性来查找每个值对应的内容.例如:

from keras import layers
from keras import models
import numpy as np

input_data = layers.Input(shape=(100,)) 
out_1 = layers.Dense(1)(input_data)
out_2 = layers.Dense(1)(input_data)

model = models.Model(input_data, [out_1, out_2])
model.compile(loss='mse', optimizer='adam', metrics=['mae'])

print(model.metrics_names)

输出以下内容:

['loss', 'dense_1_loss', 'dense_2_loss', 'dense_1_mean_absolute_error', 'dense_2_mean_absolute_error']

表示您在evaluate方法的输出中看到的每个数字对应的内容.

此外,如果你有很多层,那么dense_1和dense_2名称可能有点模棱两可.要解决这种歧义,可以使用图层的名称参数为图层指定名称(不一定在所有图层上,只在输入和输出图层上):

# ...
out_1 = layers.Dense(1, name='output_1')(input_data)
out_2 = layers.Dense(1, name='output_2')(input_data)
# ...

print(model.metrics_names)

它输出更清晰的描述:

['loss', 'output_1_loss', 'output_2_loss', 'output_1_mean_absolute_error', 'output_2_mean_absolute_error']
点击查看更多相关文章

转载注明原文:python – Keras中的model.evaluate()返回了什么值? - 乐贴网