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_true
和 y_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 中的 run_eagerly 标志的情况下将张量转换为 numpy 数组