python - 自定义 keras 损失为 'sparse_softmax_cross_entropy_with_logits' - 排名不匹配

标签 python tensorflow keras

我一直致力于使用 tensorflow 损失(sparse_softmax_cross_entropy_with_logits)编写 keras 模型,并且遇到了这个问题。对于此模型,真实值应该是形状为 (batch_size) 的张量,并且模型的输出将具有形状 (batch_size, num_classes)。我已经验证模型的输出的形状为 (?, num_classes),并且我已经为真实值创建了一个目标张量,但这似乎并没有解决问题。有人对如何修复它有任何想法吗?我有什么遗漏的吗?下面是相关代码。

def tf_loss(y_true, y_pred):
    return tf.nn.sparse_softmax_cross_entropy_with_logits(labels=y_true, logits=y_pred)

pred = tf.placeholder(dtype=tf.int32, shape=[None])
model.compile(optimizer='adam', loss=tf_loss, target_tensor=pred)

当我查看损失函数内部时,我发现 y_true 具有形状 (?, num_classes),y_pred 具有形状 (?, ?)。

最佳答案

好吧,我感到非常尴尬,但这个错误只是一个拼写错误。 “target_tensors”而不是“target_tensor”。如果不是这样,另一种选择就是简单地修改损失函数中的张量。

关于python - 自定义 keras 损失为 'sparse_softmax_cross_entropy_with_logits' - 排名不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58870065/

相关文章:

python - TypeError: Fetch argument has invalid type float32, must be a string or Tensor

python - Tensorflow:静态和动态形状

python - 嵌入数值类别

python - 当没有附加对象时,如何删除 django-taggit 标签?

python - 强化学习如何通过高斯策略进行连续控制?

python - 尝试从 Python (w/PyObjC) 写入二进制 plist 格式,以便由 Cocoa Touch 获取和读取

machine-learning - 模型训练后的 Keras 预测

python - 了解 LSTM - 层数据维度

python - 将dataframe分成n个相等的时间间隔,进行groupby,其中时间间隔为(time.max() - time.min())/n

python - SQL 数据库是否比大型 Pandas 数据框的内存/性能效率更高?