持续踩坑:
- 如果model.fit中的参数suffle=True时,会随机打算每一次epoch的数据。(默认打乱),但是验证数据默认不会打乱。
- fit函数里,先执行validation_split 再 执行shuffle=True,所以val很有可能全是某一类样本了。
- 多图像输入的generator写法:
generator = ImageDataGenerator(
featurewise_center=True,
featurewise_std_normalization=True,
rotation_range=20,
width_shift_range=0.2,
height_shift_range=0.2,
horizontal_flip=True)
def generate_data_generator_for_two_images(X1, X2, Y):
genX1 = generator.flow(X1,Y, seed=7)
genX2 = generator.flow(X2, seed=7)
while True:
X1i = genX1.next()
X2i = genX2.next()
yield [X1i[0], X2i ], X1i[1]
model.fit_generator(generate_data_generator_for_two_images(audio, image, label),
steps_per_epoch=step, epochs=epochs,verbose=2, callbacks=callbacks_list,
validation_data=([audio_val,image_val],val_label),
max_q_size=3*batch_size, workers=4, pickle_safe=False)