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

标签 tensorflow keras metrics tensorflow2.0

我有一个输出为 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.1 的平均值5.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)))

关于tensorflow - 是否有可能有一个返回数组(或张量)而不是数字的度量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59952527/

相关文章:

python - Grad-cam 在带有 inceptionv3 的 keras 中无法正常工作

azure - 为什么 "FileSystemUsage"的 "Microsoft.Web/sites"指标始终返回零?

python - 如何在另一台计算机上打开 Tensorflow 保护程序

python - 如何使用相同的测试数据测试 .tflite 模型以证明它的行为与原始模型一样?

python - Tensorflow 中的 Softmax 雅可比矩阵

machine-learning - 损失和准确性-这些学习曲线是否合理?

tensorflow - 无法启用 Tensorflows Eager execution

machine-learning - 如何使用卷积网络将图像分类为 'not categorized image'

ruby-on-rails - "Business"软件指标

machine-learning - 如何估计大型数据集的准确性?