Как исправить ошибку: TypeError: неподдерживаемые типы операндов для +: 'NoneType' и 'int' - PullRequest
0 голосов
/ 01 июня 2019

Я пытаюсь построить нейронную сеть, которая классифицирует видео на 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)))

Что я могу сделать, чтобы решить проблему? Что вызывает это? Любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...