如何在多元模型中获得平均准确度?

How to get average accuracy in multivariate model?

我已经对具有 100 多个不同输出层的多变量模型进行了并行建模。 我能够获得平均损失函数,但我真的不可能获得平均准确度值。 (我正在做回归) 您能否提出有关如何在 KERAS 中执行此操作的任何想法? 谢谢

我创建了一个自定义回调来执行此操作

class MergeMetrics(Callback):

    def __init__(self,**kargs):
        super(MergeMetrics,self).__init__(**kargs)

    def on_epoch_begin(self,epoch, logs={}):
        return

    def on_epoch_end(self, epoch, logs={}):
        logs['merge_mse'] = np.mean([logs[m] for m in logs.keys() if 'mse' in m])
        logs['merge_mae'] = np.mean([logs[m] for m in logs.keys() if 'mae' in m])

我使用此回调合并来自 2 个不同输出的 2 个指标。例如,我使用了一个简单的问题,但您可以轻松地将其集成到您的问题中并将其与验证集集成

这是我使用 mse 和 mae 作为指标的虚拟示例

X = np.random.uniform(0,1, (1000,10))
y1 = np.random.uniform(0,1, 1000)
y2 = np.random.uniform(0,1, 1000)

inp = Input((10,))
x = Dense(32, activation='relu')(inp)
out1 = Dense(1, name='y1')(x)
out2 = Dense(1, name='y2')(x)
m = Model(inp, [out1,out2])
m.compile('adam','mae', metrics=['mse','mae'])

checkpoint = MergeMetrics()
m.fit(X, [y1,y2], epochs=10, callbacks=[checkpoint])

打印输出为:

loss: ... - y1_mse: 0.2227 - y1_mae: 0.3884 - y2_mse: 0.1163 - y2_mae: 0.2805 - merge_mse: 0.1695 - merge_mae: 0.3345