【问题标题】: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)

【问题讨论】:

    标签: python tensorflow keras python-3.7 loss-function


    【解决方案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。这将有助于解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-01
      • 2021-04-29
      • 2019-03-23
      • 2023-02-14
      • 2021-03-20
      • 2021-10-24
      • 2021-07-19
      • 1970-01-01
      相关资源
      最近更新 更多