Я создал NN со следующей архитектурой:
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=0)
print(X_train.shape, X_test.shape, Y_train.shape, Y_test.shape)
(1901, 456, 3) (476, 456, 3) (1901, 3, 3) (476, 3, 3)
model = Sequential()
model.add(Flatten(input_shape=(456,3)))
model.add(Dense(64, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(3 * 3))
model.add(Reshape((3, 3)))
model.compile('adam', 'mse')
history = model.fit(X_train, Y_train, validation_data=(X_test, Y_test), epochs=100)
Теперь я хочу заменить эту архитектуру на аналоговый CNN, который делает то же самое; но при попытке реализовать это у меня всегда возникают проблемы с размерами разных слоев. И моя ошибка всегда такая:
ValueError: Ошибка при проверке ввода: ожидалось, что conv2d_3_input имеет 4 измерения, но получил массив с формой (x, x, x)
набор данных остается прежним меняется только архитектура NN, и это мой первый подход:
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),
activation='relu',
input_shape=(1901,456,3)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(3, activation='softmax'))
Может ли кто-нибудь помочь мне заменить мой первый NN на CNN?