0

我正在使用 tensorflow 进行语义分割任务。我有 5 个班级,我这样计算损失:

loss = tf.reduce_mean((tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=tf.squeeze(annotation, squeeze_dims=[3]), name="entropy")))

logits有形状(batch_size,picture_height,picture_width,5)

annotation有形状(batch_size,picture_height,picture_width,1)

现在我只想计算前4类的损失,忽略第5类。我怎样才能做到这一点?

例如,如果我只想计算前 4 个类的 Cohen 的 kappa,我可以labels在 sklearn.metrics.cohen_kappa_score 中设置参数:

kappa = cohen_kappa_score(y_true, y_pred, labels=[0,1,2,3])
4

1 回答 1

0

您可以使用接受单热标签tf.losses.softmax_cross_entropy的非稀疏版本的交叉熵损失,并使用tf.one_hot手动创建单热向量。

它接受depth允许仅使用第一个标签的参数,或者您可以在传递给损失之前对结果单热编码张量进行切片。

于 2018-03-16T13:03:14.140 回答