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

我的模型有多个密集层的多个输出。我的模型'accuracy'是编译中的唯一指标。我想知道每个输出的损失和准确性。这是我的代码的一部分。

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()方法文档:

标量测试损失(如果模型具有单个输出且没有度量标准)或标量列表(如果模型具有多个输出和/或度量标准)。该属性model.metrics_names将为您提供标量输出的显示标签。

因此,您可以使用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']

表示您在evaluatemethod输出中看到的每个数字分别对应什么。

此外,如果您有许多层,则这些层dense_1dense_2名称可能会有点模棱两可。要解决这种歧义,您可以使用图层的name参数(不必在所有图层上,而仅在输入和输出图层上)为图层分配名称:

# ...

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']

以上是 Keras中的model.evaluate()返回什么值? 的全部内容, 来源链接: utcz.com/qa/425237.html

回到顶部