我正在尝试使用Keras中的深度神经网络(尤其是VGG16)进行二进制分类。不幸的是,我的数据集非常不平衡(15.000 / 1.800张图像),但找不到解决该问题的方法。
我看到的结果 (有关培训和验证数据)
1
0.1208
(恰好是0
类和1
类样本之间的比率)0.88
(在大约30个SGD之后,似乎是1 - Precision
)我做了什么
class_weight
之类的here似乎无济于事BatchNormalization
层,并在卷积层上将use_bias
设置为False
。 将我的整个网络视为gist here。 ImageDataGenerator
进行增强以扩大数据集。 我认为可以进一步提供帮助的(但尚未尝试)
ImageDataGenerator
,而且我不知道如何比另一个增加更多的课程。binary_crossentropy
。
steps_per_epoch = int(len(train_gen.filenames) / args.batch_size)
validation_steps = int(len(val_gen.filenames) / args.batch_size)
您认为我应该首先解决什么,或者您有更好的主意?对于实施细节方面的每一次帮助,我也感到很高兴。
非常感谢您!
答案 0 :(得分:0)
也许可以像https://community.rstudio.com/t/ensure-balanced-mini-batches-while-training/7505(R Studio)中所述准备类平衡的批次(包括1类的加倍)。另请阅读Neural Network - Working with a imbalanced dataset和balancing an imbalanced dataset with keras image generator
另一种可能性是在预处理中执行特征提取,这意味着可以对图像运行图像处理算法以突出显示特征