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

问题描述 投票:2回答:2

我正在使用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)
tensorflow keras python-3.7 weight loss-function
2个回答
0
投票

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

weights作为损失的系数。如果提供了标量,那么损失将简单地按给定值进行缩放。如果weights是形状[batch_size]的张量,那么损失权重适用于每个相应的样本。

但是,this answer显示了如何为每个类分配不同的权重(可能你有一个不平衡的数据集?)。我想这更像是你想要达到的目标。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.