У меня есть эта проблема: Ошибка при проверке цели: ожидалось, что decoded_output будет иметь форму (50, 50), но получил массив с формой (50, 1). С этим кодом, авто-кодер с CONV1D и двумя выходными данными, но проблема в том, чтовыход реконструкции (decode_output):
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
TAM_VECTOR = X_train.shape[1]
input_tweet = Input(shape=(TAM_VECTOR,X_train.shape[2]))
encoded = Conv1D(64, kernel_size=1, activation='relu')(input_tweet)
encoded = Conv1D(32, kernel_size=1, activation='relu')(encoded)
decoded = Conv1D(32, kernel_size=1, activation='relu')(encoded)
decoded = Conv1D(64, kernel_size=1, activation='relu')(decoded)
decoded = Conv1D(TAM_VECTOR, kernel_size=1, activation='relu', name='decode_output')(decoded)
encoded = Flatten()(encoded)
second_output = Dense(1, activation='linear', name='second_output')(encoded)
autoencoder = Model(inputs=input_tweet, outputs=[decoded, second_output])
autoencoder.compile(optimizer="adam",
loss={'decode_output': 'mse', 'second_output': 'mse'},
loss_weights={'decode_output': 0.001, 'second_output': 0.999},
metrics=["mae"])
autoencoder.fit([X_train], [X_train, y_train], epochs=10, batch_size=32)
Вход (X) имеет форму (50000,50), но поскольку Conv1D получает 3D-вход, я изменяю его на:
X = np.reshape(X, (X.shape[0], X.shape[1], -1))
(50000,50,1)
А у (второй выход) составляет
y.shape
(50000,1)
А вот сводная модель
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_43 (InputLayer) (None, 50, 1) 0
__________________________________________________________________________________________________
conv1d_169 (Conv1D) (None, 50, 64) 128 input_43[0][0]
__________________________________________________________________________________________________
conv1d_170 (Conv1D) (None, 50, 32) 2080 conv1d_169[0][0]
__________________________________________________________________________________________________
conv1d_171 (Conv1D) (None, 50, 32) 1056 conv1d_170[0][0]
__________________________________________________________________________________________________
conv1d_172 (Conv1D) (None, 50, 64) 2112 conv1d_171[0][0]
__________________________________________________________________________________________________
flatten_62 (Flatten) (None, 1600) 0 conv1d_170[0][0]
__________________________________________________________________________________________________
decode_output (Conv1D) (None, 50, 50) 3250 conv1d_172[0][0]
__________________________________________________________________________________________________
pib_output (Dense) (None, 1) 1601 flatten_62[0][0]
==================================================================================================
Total params: 10,227
Trainable params: 10,227
Non-trainable params: 0