Error when checking input: expected time_distributed_184_input to have 5 dimensions, but got array with shape (32, 224, 224, 3)

I am trying to do an image classification, not the one like cat vs dog but the one with time series in it. Such as predict the dog is running etc. I have compiled the model but faced error when I am trying to use the fit.generator

The code is:

train_datagen        = ImageDataGenerator(rescale=1./255,                                    shear_range=0.2,                                    zoom_range=0.2,                                    rotation_range=45,                                    horizontal_flip=True,                                    vertical_flip=True,                                    validation_split = .2) validation_datagen   = ImageDataGenerator(rescale=1./255,                                   validation_split = .2) test_datagen         = ImageDataGenerator(rescale = 1./255)  train_generator      = train_datagen.flow_from_directory(directory=r'C:\Users\wuboy\MA0218\CNN\train',                                                    target_size=(224, 224),                                                    color_mode="rgb",                                                    batch_size=32,                                                    class_mode='categorical',                                                    shuffle=True,                                                    seed=42) validation_generator = validation_datagen.flow_from_directory(directory=r'C:\Users\wuboy\MA0218\CNN\validation',                                                    target_size=(224, 224),                                                    color_mode="rgb",                                                    batch_size=32,                                                    class_mode='categorical',                                                    shuffle=True,                                                    seed=42) test_generator       = test_datagen.flow_from_directory(directory=r'C:\Users\wuboy\MA0218\CNN\test',                                                    target_size=(224, 224),                                                    color_mode="rgb",                                                    batch_size=1,                                                    class_mode=None,                                                    shuffle=False,                                                    seed=42)  num_classes = 4  model = Sequential()  #First conv, 64 model.add(TimeDistributed(Conv2D(64, (3,3), padding='same', strides=(2,2), activation='relu',input_shape = (5, 224, 224, 3)))) model.add(TimeDistributed( Conv2D(64, (3,3), padding='same', strides=(2,2), activation='relu'))) model.add(TimeDistributed(MaxPooling2D((2,2), strides=(2,2))))  # Second conv, 128 model.add(TimeDistributed(Conv2D(128, (3,3),padding='same', strides=(2,2), activation='relu'))) model.add(TimeDistributed( Conv2D(128, (3,3),padding='same', strides=(2,2), activation='relu'))) model.add(TimeDistributed(MaxPooling2D((2,2), strides=(2,2))))  #Third conv. 256 model.add(TimeDistributed(Conv2D(256, (3,3),padding='same', strides=(2,2), activation='relu'))) model.add(TimeDistributed( Conv2D(256, (3,3),padding='same', strides=(2,2), activation='relu'))) model.add(TimeDistributed(MaxPooling2D((2,2), strides=(2,2))))  #Fourth conv, 512 model.add(TimeDistributed(Conv2D(512, (3,3),padding='same', strides=(2,2), activation='relu'))) model.add(TimeDistributed( Conv2D(512, (3,3),padding='same', strides=(2,2), activation='relu'))) model.add(TimeDistributed(MaxPooling2D((2,2), strides=(2,2))))  #Fifth conv, 1024 model.add(TimeDistributed(Conv2D(1024, (3,3),padding='same', strides=(2,2), activation='relu'))) model.add(TimeDistributed( Conv2D(1024, (3,3),padding='same', strides=(2,2), activation='relu'))) model.add(TimeDistributed(MaxPooling2D((2,2), strides=(2,2))))  model.add(Flatten()) model.add(Dense(10))  model = Sequential() # after having Conv2D... model.add(TimeDistributed(Conv2D(64, (3,3), activation='relu'), input_shape=(5, 224, 224, 3))) model.add(TimeDistributed(Conv2D(64, (3,3), activation='relu'))) model.add(TimeDistributed(GlobalAveragePooling2D())) model.add(LSTM(1024, activation='relu', return_sequences=False))  model.add(Dense(1024, activation='relu')) model.add(Dropout(.5))  model.add(Dense(4, activation='sigmoid')) model.compile('adam', loss='categorical_crossentropy') model.summary()  STEP_SIZE_TRAIN=train_generator.n//train_generator.batch_size STEP_SIZE_VALID=validation_generator.n//validation_generator.batch_size model.fit_generator(generator=train_generator,                     steps_per_epoch=50,                     validation_data=validation_generator,                     validation_steps=STEP_SIZE_VALID,                     epochs=30) 

I suspect that I have missed a parameter in the datagen_parameter section but I am not really sure of it. The model have been compiled but I am stuck at this step QAQ

Asked on July 16, 2020 in Python.
Add Comment
0 Answer(s)

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.