我想知道使用tf.data应用编程接口构建的大型数据集计算类权重的最佳方法。考虑一下关于处理不平衡数据集的官方TensorFlow教程-- https://www.tensorflow.org/tutorials/structured_data/imbalanced_data。
如果我要将其缩放到一个相当中等大小的图像数据集,我应该采取什么策略来计算类权重、计算初始偏差等?
发布于 2021-01-15 00:24:36
如果您所说的类权重是指在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}
https://stackoverflow.com/questions/65716209
复制相似问题