首页 > 解决方案 > 将 y_true 和 y_pred 视为 Keras.Metric 中的单个样本还是一批样本?

问题描述

当我想构建一个可以与 一起使用的自定义指标时model.compile,我对如何理解y_truey_pred在可调用函数中感到困惑。这是Keras 文档中给出的示例。

def my_metric_fn(y_true, y_pred):
    squared_difference = tf.square(y_true - y_pred)
    return tf.reduce_mean(squared_difference, axis=-1)  # Note the `axis=-1`

model.compile(optimizer='adam', loss='mean_squared_error', metrics=[my_metric_fn])

从代码来看,我认为y_truey_pred一批样本。但它也表示“与损失函数非常相似,任何带有签名 metric_fn(y_true, y_pred)的可调用函数都可以返回一组损失(输入批次中的样本之一),可以作为度量传递给 compile()”。

这是否意味着可调用的输出返回是单个样本的损失?我们应该将y_truey_pred视为度量/损失函数中的单个样本还是一批样本?

标签: pythontensorflowkeras

解决方案


他们是一批样品,是的。

您的函数应该接受两个数组,然后返回一个相同长度的数组。因此,要回答您的问题,请将它们视为批次样本,而不是单个样本。


推荐阅读