Ad

Generator Not Being Recognized When Passing Validation Data To .fit In Keras Sequential

- 1 answer

The exact error:

ValueError: When passing validation_data, it must contain 2 (x_val, y_val) or 3 (x_val, y_val, val_sample_weights) items, however it contains 39 items

I literally cannot find that error anywhere except the source code.

model.fit(  train_x
            , train_y
            , epochs=1
            , validation_data=validation_data_flow
            , callbacks=[checkpointer]
        )

validation_data is a DirectoryIterator, by flow_from_directory

validation_data_flow = ImageDataGenerator().flow_from_directory(
        validation_data_dir,
        target_size = (img_width, img_height),
        batch_size = batch_size,
        class_mode = 'categorical')
Ad

Answer

Validation and training data need to be the same type, either both generators or both ndarrays. To fix this, you need to convert one to the other type. Look at this answer for how to convert a generator to an ndarray. To convert an ndarray to a generator, use ImageDataGenerator.flow().

Ad
source: stackoverflow.com
Ad