Моя проблема здесь в том, что я хочу сделать количество входных каналов в python равным размеру фильтров
вот код того, что я пробовал
я уже пытался изменить форму, но это дает мне ту же ошибку .. и, поскольку я новичок в python, я не мог понять, как исправить свою ошибку. Моя модель состоит в комбинировании cnn со слоем lstm, и у меня есть 2892 тренировочных образа и 1896 тестовых изображений, всего 4788 изображений каждое изображение размером 128 * 128
cnn_model = Sequential()
cnn_model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(128,128,3),data_format='channels_last'))
print (cnn_model.output_shape)
cnn_model.add(MaxPooling2D(pool_size=(2, 2)))
print (cnn_model.output_shape)
cnn_model.add(Conv2D(32, (3, 3), activation='relu',data_format='channels_last'))
print (cnn_model.output_shape)
cnn_model.add(MaxPooling2D(pool_size=(2, 2)))
print (cnn_model.output_shape)
cnn_model.add(Conv2D(64, (3, 3), activation='relu',data_format='channels_last'))
print (cnn_model.output_shape)
cnn_model.add(MaxPooling2D(pool_size=(2, 2)))
print (cnn_model.output_shape)
cnn_model.add(Conv2D(128, (3, 3), activation='relu',data_format='channels_last'))
print (cnn_model.output_shape)
cnn_model.add(MaxPooling2D(pool_size=(2, 2)))
print ("MP",cnn_model.output_shape)
cnn_model.add(Flatten())
print (cnn_model.output_shape)
cnn_model.summary()
model = Sequential()
model.add(cnn_model)
print (model.output_shape)
model.add(Reshape((4608,1)))
model.add(LSTM(16,return_sequences=True, dropout=0.5))
print ("LSTM",model.output_shape)
model.add(Dense(1, 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)
model.add(Reshape((-1,128,128,3)))
hist=model.fit(X_data, X_data,epochs=15,batch_size=128,verbose = 2,validation_data=(X_data, X_data))
но я получаю следующую ошибку
Traceback (последний вызов был последним): File
«C: \ Users \ bdyssm \ Desktop \ Master \ LSTMCNN2.py», строка 193, в
model.add (Reshape ((2892,1))) Файл "C: \ Users \ bdyssm \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ keras \ engine \ sequential.py",
строка 181, в добавлении
output_tensor = layer (self.outputs [0]) Файл "C: \ Users \ bdyssm \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ keras \ engine \ base_layer.py",
линия 474, вызов
output_shape = self.compute_output_shape (input_shape) Файл "C: \ Users \ bdyssm \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ keras \ layer \ core.py",
строка 398, в compute_output_shape
input_shape [1:], self.target_shape) Файл "C: \ Users \ bdyssm \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ keras \ layer \ core.py",
строка 386, в _fix_unknown_dimension
повысить ValueError (msg) ValueError: общий размер нового массива должен быть неизменным