0

我想知道为使用tf.dataAPI 构建的大型数据集计算类权重的最佳方法。考虑有关处理不平衡数据集的官方 TensorFlow 教程 - https://www.tensorflow.org/tutorials/structured_data/imbalanced_data

如果我要将它缩放到一个大小适中的图像数据集,那么我计算类权重、计算初始偏差等的策略应该是什么?

4

1 回答 1

0

如果按类权重表示要在 model.fit 中使用的字典,则下面的代码将返回类权重字典。

import numpy as np
def class_weight_calc(class_id_list, class_freq_list):
    class_weight={}
    total=0
    for num in class_freq_list:
        total += num
    smallest=np.Inf
    for  klass, count in zip(class_id_list, class_freq_list):
        class_weight[klass]=total/count
        if class_weight[klass]<smallest:
            smallest=class_weight[klass]
    for c in class_id_list:
        class_weight[c]=class_weight[c]/smallest
    return class_weight

注意 class_id_list 是您的类索引列表。Class_freq_list 是每个类有多少样本的对应列表。例如,如果您有 3 个类,则 class_id_list=[0,1,2]。如果类别 0 有 10 个样本,类别 1 有 20 个样本,类别 2 有 40 个样本,则 Class_freq_list=[10,20,40]。使用这些值,函数将返回 class_weight={0:4.0, 1:2.0, 2:1.0}

于 2021-01-14T16:24:35.550 回答