【发布时间】:2018-04-20 17:30:53
【问题描述】:
我当前使用sparse_softmax_cross_entropy 的代码工作正常。
loss_normal = (
tf.reduce_mean(tf.losses
.sparse_softmax_cross_entropy(labels=labels,
logits=logits,
weights=class_weights))
)
但是,当我尝试使用hinge_loss:
loss_normal = (
tf.reduce_mean(tf.losses
.hinge_loss(labels=labels,
logits=logits,
weights=class_weights))
)
报错说:
ValueError: Shapes (1024, 2) and (1024,) are incompatible
错误似乎来自losses_impl.py文件中的这个函数:
with ops.name_scope(scope, "hinge_loss", (logits, labels)) as scope:
...
logits.get_shape().assert_is_compatible_with(labels.get_shape())
...
我修改了我的代码如下,只提取了 logits 张量的 1 列:
loss_normal = (
tf.reduce_mean(tf.losses
.hinge_loss(labels=labels,
logits=logits[:,1:],
weights=class_weights
))
)
但是还是报类似的错误:
ValueError: Shapes (1024, 1) and (1024,) are incompatible.
有人可以帮忙指出为什么我的代码在sparse_softmax_cross_entropy loss 上运行良好,但在hinge_loss 上运行良好?
【问题讨论】:
标签: machine-learning tensorflow cross-entropy