keras 的指标返回啥值?标量还是张量?

Posted

技术标签:

【中文标题】keras 的指标返回啥值?标量还是张量?【英文标题】:what values does the keras' metrics return? a scalar or a tensor ?keras 的指标返回什么值?标量还是张量? 【发布时间】:2019-10-04 21:24:03 【问题描述】:

我正在编写有关 Keras 中的自定义损失函数和自定义指标函数的代码。现在代码有问题了。

我不知道这些自定义函数应该返回什么值,一个标量或一个大小为“batch_size”的张量?我尝试了所有这些方法,令人惊讶的是它们都有效,但结果不同。

所以我想知道哪一个是对的。在训练中完成一个epoch时,“loss”和“metrics”的计算机制是什么?

y_truey_predict 的形状是 (batch_size,1)

def loss_scalar(y_true,y_pred):

main_loss=K.sum(K.reshape((1+0.2*(K.abs((5-y_true)-5/2)))*K.square(y_true-y_pred),shape=(-1,)))

def loss_tensor(y_true,y_pred):

main_loss=(K.reshape((1+0.2*(K.abs((5-y_true)-5/2)))*K.square(y_true-y_pred),shape=(-1,))

def mae_tensor(y_true,y_pred):

return  (K.mean(K.abs(y_true-y_pred),axis=-1))

def mae_scalar(y_true,y_pred):

return  K.sum(K.mean(K.abs(y_true-y_pred),axis=-1))

【问题讨论】:

【参考方案1】:

Keras 指标返回: 单个张量值表示所有数据点的输出数组的平均值。根据doc

【讨论】:

以上是关于keras 的指标返回啥值?标量还是张量?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Keras 中将标量添加到张量或从标量创建张量?

如何在不启用 keras 中的 run_eagerly 标志的情况下将张量转换为 numpy 数组

Keras 自定义目标需要张量评估

用标量角张量创建变换矩阵

keras loss 必须每批输出一个标量还是整批输出一个标量?

为啥张量板不显示所有指标?