如何在多类图像分类中获取权重图



我正在使用keras和TensorFlow进行多类图像分割。我训练的网络给了我很好的预测,但无法分离触摸对象,这就是为什么我想使用softmax_cross_entropy具有"weights"参数的损失函数。

知道我的y_true形状是(batch-size,128,128,3),我怎么能计算这些权重?

tf.losses.softmax_cross_entropy(y_true,y_pred,weights=my_weights)

根据 tf.losses.softmax_cross_entropy 的文档,您可以使用该参数以不同的方式对每个批次的样本进行加权,它应该是形状batch_size的张量。

weights充当损失系数。如果提供了标量, 然后,损失只是按给定值缩放。如果weights是 形状为 [batch_size] 的张量,则损失权重应用于每个 相应的样本。

但是,这个答案显示了如何为每个类分配不同的权重(也许你有一个不平衡的数据集?我想这更是你可能想要实现的。

您可以使用 sklearn 来计算不平衡数据集的类权重。并使用这些计算参数在tf.losses.softmax_cross_entropy中分配weights。这将有助于解决您的问题。