簡體   English   中英

是否有可能有一個返回數組(或張量)而不是數字的度量?

[英]Is it possible to have a metric that returns an array (or tensor) rather than a number?

我有一個輸出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 數組)作為度量標准? 當然,在我的具體情況下,我不會返回上面示例中的虛擬列表,但我的自定義指標更復雜。

每個 M 制定一個指標。

一個輸出的工作代碼:

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)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM