我正在使用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])
答案 0 :(得分:0)
您可以使用不接受单热标签tf.losses.softmax_cross_entropy的稀疏版本的交叉熵丢失,并使用tf.one_hot手动创建单热矢量。
它接受允许仅使用第一个标签的depth
参数,或者您可以在传递给损失之前切换结果一个热编码张量。