是否有可能返回一个数组(或张量)而不是数字的度量?

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

我有一个带有输出NxM的神经网络,其中N是批处理大小,M是网络需要进行预测的输出数量。我想为网络的每个M输出计算一个指标,即跨批次的所有实例,但为每个M输出分别计算一个指标,以便该指标有M个值。我尝试如下创建自定义指标。

def my_metric(y_true, y_pred):
    return [3.1, 5.2] # a list of dummy values

然后将此度量传递到模型的compile方法的度量列表,然后Keras输出一个数字,该数字是3.15.2的平均值(在这种情况下为(3.1 + 5.2)/2 = 4.15),而不是打印实际列表。那么,是否有一种方法可以返回并打印列表(或numpy数组)作为度量?当然,在我的特定情况下,我不会在上面的示例中返回虚拟列表,但是我的自定义指标更加复杂。

tensorflow keras metrics tensorflow2.0
1个回答
0
投票
一个输出的工作代码:

from keras.layers import Dense, Input from keras.models import Model import keras.backend as K import numpy as np inputs = Input((5,)) outputs = Dense(3)(inputs) model = Model(inputs, outputs) def metricWrapper(m): def meanMetric(true, pred): return pred[:, m] meanMetric.__name__ = 'meanMetric_' + str(m) return meanMetric metrics = [metricWrapper(m) for m in range(3)] model.compile(loss='mse', metrics=metrics, optimizer='adam') model.fit(np.random.rand(10,5), np.zeros((10,3)))

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