Есть ли способ исправить форму плотного слоя при добавлении conv2d слоя с помощью lstm? - PullRequest
1 голос
/ 24 марта 2019

Я пытаюсь вписать свои данные в слои conv2d + lstm, но я получил ошибку в последнем плотном слое

Я уже пытался изменить форму, но это дает мне ту же ошибку .. и потому что яЯ не мог понять, как исправить мою ошибку. Моя модель состоит в том, чтобы объединить cnn со слоем lstm, и у меня есть 2892 обучающих изображения и 1896 тестовых изображений с общим количеством изображений в 4788 изображений каждое размером 128 * 128

Ивот окончательное резюме модели

enter image description here

Вот часть моего кода

cnn_model = Sequential()

cnn_model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(128,128,3)))
cnn_model.add(MaxPooling2D(pool_size=(2, 2)))

cnn_model.add(Conv2D(32, (3, 3), activation='relu'))
cnn_model.add(MaxPooling2D(pool_size=(2, 2)))

cnn_model.add(Conv2D(64, (3, 3), activation='relu'))
cnn_model.add(MaxPooling2D(pool_size=(2, 2)))

cnn_model.add(Conv2D(128, (3, 3), activation='relu'))
cnn_model.add(MaxPooling2D(pool_size=(2, 2)))
cnn_model.add(Flatten())

model = Sequential()
model.add(cnn_model)
model.add(Reshape((4608, 1)))
model.add(LSTM(16, return_sequences=True, dropout=0.5))
model.add(Dense(3, activation='softmax'))
model.compile(optimizer='adadelta', loss='categorical_crossentropy', metrics=['accuracy'])
model.summary()
X_data = np.array(X_data)
X_datatest = np.array(X_datatest)
X_data= X_data.astype('float32') / 255.
X_datatest = X_datatest.astype('float32') / 255.

hist=model.fit(X_data, X_data,epochs=15,batch_size=128,verbose = 2,validation_data=(X_datatest, X_datatest))

Ошибка, которую я ожидал увидеть вСлой в качестве его выходных данных выдает следующую ошибку

Traceback (последний вызов был последним): файл "C: \ Users \ bdyssm \ Desktop \ Master \ LSTMCNN2.py", строка 212, в Hist = модель.fit (X_data, X_data, epochs = 15, batch_size = 128, verbose = 2, validation_data = (X_datatest, X_datatest)) Файл "C: \ Users \ bdyssm \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages\ keras \ engine \ training.py ", строка 952, в подгонке batch_size = batch_size) Файл" C: \Users \ bdyssm \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ keras \ engine \ training.py ", строка 789, в _standardize_user_data exception_prefix = 'target') Файл" C: \ Users \ bdyssm \ AppData\ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ keras \ engine \ training_utils.py ", строка 128, в standardize_input_data 'с shape' + str (data_shape))

ValueError: Ошибка при проверкеtarget: ожидается, что плотность_1 имеет 3 измерения, но получен массив с формой (2892, 128, 128, 3)

, и это сводка cnn_model

enter image description here

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