首页 > 解决方案 > tf.keras.losses.categorical_crossentropy 是返回数组还是单个值?

问题描述

我正在使用自定义训练循环。返回的损失是tf.keras.losses.categorical_crossentropy我假设的数组(1,batch_size)。这是它应该返回的还是单个值?

在后一种情况下,知道我可能做错了什么吗?

标签: pythontensorflowkerasloss-function

解决方案


最常见的损失返回原始形状减去最后一个轴。

因此,如果您的原始y_pred形状是(samples, ..., ..., classes),那么您的最终形状将是(samples, ..., ...)

这可能是因为 Keras 可能会在进一步的计算中使用这个张量,用于样本权重和其他事情。

在自定义循环中,如果这些维度没有用,您可以K.mean(loss_result)在计算梯度之前简单地进行一次。(其中K一个keras.backendtensorflow.keras.backend


推荐阅读