Model.evaluate() 返回浮点数,而不是列表

问题描述 投票:0回答:1

我有一个多任务神经网络。我想确保当我在模型上调用

Model.evaluate()
时,我看到的分数是损失的总和。然而,它返回的是标量而不是列表,所以我不确定这个损失是什么。根据文档,对于多个输出或损失,应返回标量列表。下面是一个最小的可重现示例

import numpy as np
from keras.layers import Input, Dense
from keras.models import Model

X = np.random.random((10, 10))
y = {'pi': np.random.random((10,)), 'u':  np.random.random((10,))}

in_layer = Input(shape=X.shape[1:])
out1 = Dense(1, name='pi')(in_layer)
out2 = Dense(1, name='u')(in_layer)
model = Model(inputs=in_layer, outputs=[out1,out2])
model.compile(loss={'pi': 'mean_squared_error', 'u': 'mean_squared_error'}, optimizer = 'adam')

model.fit(X,y)
print(model.evaluate(X, y)) # Returns a float.

我尝试将

y
作为列表传递,但我仍然得到相同的结果。
print(model.metrics_names)
返回
'loss'

python tensorflow keras
1个回答
0
投票

为此,您需要单独指定指标,否则 Model.evaluate 将聚合结果。对编译函数进行以下更改:

model.compile(
    loss={'pi': 'mean_squared_error', 'u': 'mean_squared_error'}, 
    optimizer='adam',
    metrics={'pi': 'mean_squared_error', 'u': 'mean_squared_error'}
)

查看此链接,了解有关 API 的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.