Я пытаюсь построить нейронную сеть, которая классифицирует видео на 2 категории. Я использую CNN и LSTM для этого, но я не совсем понимаю, что вызывает эту ошибку
Я пытался изменить input_shape в первом TimeDistributed(LSTM)
слое, но это не сработало. Вот код:
df = pd.read_csv('name_of_the_file.csv', dtype=str)
datagen = ImageDataGenerator(rescale=1./255, validation_split=0.25)
train_generator = datagen.flow_from_dataframe(dataframe=df, directory='some_path', x_col="title", y_col="labels",class_mode='binary', target_size=(150,150), batch_size=256)
validation_generator=datagen.flow_from_dataframe(dataframe=df, directory='some_path', x_col="title", y_col="labels",subset="validation", class_mode="binary", target_size=(150,150), batch_size=256)
df_test=pd.read_csv('test_data.csv', dtype=str)
test_datagen=ImageDataGenerator(rescale=1./255)
test_generator=test_datagen.flow_from_dataframe(dataframe=df_test, directory='some_path',x_col="title",y_col="labels",class_mode='binary', target_size=(150,150))
model = Sequential()
model.add(TimeDistributed(Conv2D(32,(3,3),activation='relu',padding='same'),input_shape=(50,150,150,3)))
model.add(TimeDistributed(Dropout(0.2)))
model.add(TimeDistributed(MaxPooling2D((2, 2))))
model.add(TimeDistributed(Conv2D(64, (3, 3), activation='relu')))
model.add(TimeDistributed(MaxPooling2D((2, 2))))
model.add(TimeDistributed(Dropout(0.3)))
model.add(TimeDistributed(Conv2D(128, (3, 3), activation='relu')))
model.add(TimeDistributed(MaxPooling2D((2, 2))))
model.add(TimeDistributed(Dropout(0.3)))
model.add(TimeDistributed(Conv2D(128, (3, 3), activation='relu')))
model.add(TimeDistributed(MaxPooling2D((2, 2))))
model.add(TimeDistributed(Flatten()))
model.add(TimeDistributed(LSTM(128,return_sequences=True,activation='relu',recurrent_dropout=0.2, dropout=0.2)))
model.add(TimeDistributed(LSTM(128,activation='relu',recurrent_dropout=0.5, dropout=0.3,return_sequences=False)))
model.add(TimeDistributed(Dense(128, activation='relu')))
model.add(TimeDistributed(Dense(1, activation='sigmoid')))
model.compile(loss='binary_crossentropy',optimizer=optimizers.RMSprop(),metrics=['acc'])
history = model.fit_generator(train_generator,steps_per_epoch=1000,validation_data=validation_generator,validation_steps=250,epochs=7)
выдает ошибку: TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
в строке model.add(TimeDistributed(LSTM(128,return_sequences=True, activation='relu', recurrent_dropout=0.2, dropout=0.2)))
Что я могу сделать, чтобы решить проблему? Что вызывает это? Любая помощь приветствуется.