使用ImageDataGenerator和流程训练和测试拆分集

时间:2020-06-22 01:25:18

标签: keras data-augmentation train-test-split

我正在尝试使用增强来建立网络。

首先我将ImageDataGenerator与validate_split = 0.2。一起使用

train_generator = ImageDataGenerator(
    rotation_range=90,
    zoom_range=0.15,
    width_shift_range=0.2,
    height_shift_range=0.2,
    fill_mode="nearest",
    validation_split=0.2
)

然后我尝试创建一个增强的训练数据,而不是创建一个非增强的验证数据。 我必须使用flow而不是flow_from_directory

train_augm = train_generator.flow([data_train, ebv_train], z_train, batch_size=128,subset='training')
valid_augm = train_generator.flow([data_train, ebv_train], z_train, batch_size=1,subset='validation')

我得到这个错误提示。

ValueError: Training and validation subsets have different number of classes after the split. If your numpy arrays are sorted by the label, you might want to shuffle them.

我做错了什么?

model.fit代码是这样的

training_history = model.fit(
    train_augm,
    steps_per_epoch= len(data_train)//128,
    epochs=10,
    validation_data=valid_augm    
)

1 个答案:

答案 0 :(得分:0)

训练数据中的课程数量不等于验证数据中的课程数量。如果您没有洗牌,请洗牌。如果仍然出现错误,我假设某些类的数据量很小。您可以对其进行改组,但有时会遇到相同的错误。您可以做的是,向该特定班级添加更多数据,或手动将其分为训练和验证。

对于随机拆分,您可以查看train_test_split库。