我正在使用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
。这将有助于解决您的问题。