【发布时间】:2018-08-25 12:09:59
【问题描述】:
我正在使用 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's kappa,可以在sklearn.metrics.cohen_kappa_score中设置labels参数:
kappa = cohen_kappa_score(y_true, y_pred, labels=[0,1,2,3])
【问题讨论】:
-
所以你的意思是,你用五个 logit 值计算 softmax,然后是交叉熵,但是无论类是 5 的地方都只是掩盖了那个值?然后应该对所有元素进行均值,将 5 类交叉熵归零,还是仅对非 5 类元素进行平均?
-
只计算非5像素的交叉熵损失。
标签: python tensorflow semantic-segmentation