python - 将 y_true 和 y_pred 视为 Keras.Metric 中的单个样本还是一批样本?
问题描述
当我想构建一个可以与 一起使用的自定义指标时model.compile
,我对如何理解y_true
和y_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_true
是y_pred
一批样本。但它也表示“与损失函数非常相似,任何带有签名 metric_fn(y_true, y_pred)的可调用函数都可以返回一组损失(输入批次中的样本之一),可以作为度量传递给 compile()”。
这是否意味着可调用的输出返回是单个样本的损失?我们应该将y_true
和y_pred
视为度量/损失函数中的单个样本还是一批样本?
解决方案
他们是一批样品,是的。
您的函数应该接受两个数组,然后返回一个相同长度的数组。因此,要回答您的问题,请将它们视为批次样本,而不是单个样本。
推荐阅读
- excel - Excel表格在两个表格之间填充多个值,每个表格都有一个唯一的值
- python-2.7 - Python2.7 -Zip和密码保护文件
- mobile - 我无法在 google play 上发布 android 应用程序,因为它需要我不知道在哪里添加的权限
- c++ - OpenMP 卸载数据竞争
- javascript - js强制在某些情况下是如何工作的
- join - oracle多次插入给出重复索引错误
- scala - 火花数据框添加一个带有返回字符串的函数的新列
- html - 防止自动进入前端
- docker - 使用 docker 和 nginx 设置反向代理时的无限循环
- java - java - 从java中用空格分隔的字符串中提取单词而不使用split函数?