tensorflow是否支持计算语义分段的标签子集的交叉熵损失?

时间:2018-03-16 12:13:29

标签: python tensorflow semantic-segmentation

我正在使用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,picuture_width,5)

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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