多类图像分类中如何获取权重图
Posted
技术标签:
【中文标题】多类图像分类中如何获取权重图【英文标题】:How to obtain weights map in multi class image classification 【发布时间】:2019-09-08 13:25:43 【问题描述】:我正在使用 keras 和 TensorFlow 进行多类图像分割。我训练有素的网络给了我很好的预测,但无法分离触摸对象,这就是为什么我想使用具有"weights"
参数的softmax_cross_entropy
损失函数。
知道我的y_true
形状是(batch-size,128,128,3)
,我如何计算这些权重?
tf.losses.softmax_cross_entropy(y_true,y_pred,weights=my_weights)
【问题讨论】:
【参考方案1】:根据tf.losses.softmax_cross_entropy
的文档,您可以使用该参数对每个批次的样本进行不同的加权,它应该是形状为batch_size
的张量。
weights
充当损失系数。如果提供标量, 然后损失只是按给定值缩放。如果weights
是 形状为[batch_size]
的张量,然后将损失权重应用于每个 对应的样本。
但是,this answer 显示了如何为每个类分配不同的权重(也许您的数据集不平衡?)。我想这可能是您想要实现的更多目标。
【讨论】:
我的标签中的类分布不一样,所以我假设我的数据集不平衡。根据您发布的链接中的答案,他们使用ratio
来计算class_weight
,当我有 800 个训练图像标签时,如何找到这个配给?【参考方案2】:
您可以使用 sklearn 计算不平衡数据集的 class weight。并使用这些计算出的参数在tf.losses.softmax_cross_entropy
中分配weights
。这将有助于解决您的问题。
【讨论】:
以上是关于多类图像分类中如何获取权重图的主要内容,如果未能解决你的问题,请参考以下文章
如何在 DecisionTreeClassifier 中设置类权重以进行多类设置