Keras 使用ImageDataGenerator和flow对分割集进行训练和测试

Keras 使用ImageDataGenerator和flow对分割集进行训练和测试,keras,data-augmentation,train-test-split,Keras,Data Augmentation,Train Test Split,我正试图用增强技术建立一个网络 首先,我使用带有验证的ImageDataGenerator\u 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

我正试图用增强技术建立一个网络

首先,我使用带有验证的ImageDataGenerator\u 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\u

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    
)

培训数据中的类数不等于验证数据中的类数。如果你没有洗牌,请洗牌。如果仍然出现错误,我假设类中的某些部分包含非常少量的数据。您可以重新调整它,但有时会出现相同的错误。您可以做的是,将更多数据添加到该特定类中,或者手动拆分为培训和验证

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