python - tf.keras.losses.categorical_crossentropy 是返回数组还是单个值?
问题描述
我正在使用自定义训练循环。返回的损失是tf.keras.losses.categorical_crossentropy
我假设的数组(1,batch_size)
。这是它应该返回的还是单个值?
在后一种情况下,知道我可能做错了什么吗?
解决方案
最常见的损失返回原始形状减去最后一个轴。
因此,如果您的原始y_pred
形状是(samples, ..., ..., classes)
,那么您的最终形状将是(samples, ..., ...)
。
这可能是因为 Keras 可能会在进一步的计算中使用这个张量,用于样本权重和其他事情。
在自定义循环中,如果这些维度没有用,您可以K.mean(loss_result)
在计算梯度之前简单地进行一次。(其中K
一个keras.backend
或tensorflow.keras.backend
)
推荐阅读
- bash - grep 循环返回每个文件而不是每个搜索词的输出
- r - R markdown:如何紧凑地打印数据框
- c# - 无法打开证书存储
- python - 如何将单引号列表与双引号列表转换
- laravel - 试图仅在服务器上获取非对象的属性“全名”
- java - 访问被拒绝(“javax.net.ssl.SSLPermission”“setDefaultSSLContext”)
- c# - 在读取 CSV 期间计算文件中的所有字符
- html - 单击时如何更改角度材料表中特定行的垫子图标的颜色?
- node.js - 'Axios' 显示错误:服务器上的网络错误返回 200 http 状态
- ruby-on-rails - Rails 应用程序在本地使用 nginx,但在部署到 EC2 时重定向 301