Я пытаюсь использовать слой Keras Attention, чтобы предсказать временной шаг в будущем. Мой целевой набор - это вектор, по одному элементу для каждой последовательности. Моя проблема в том, что кажется, что он хорошо обучается, но когда я использую модель для прогнозирования, она дает матрицу той же формы, что и набор последовательностей, для которых нужно делать прогнозы. Я создал нейронную сеть, которая выглядит так:
in_seq = Input(shape=(seq_len, 1))
x = time_embedding(in_seq)
x = Concatenate(axis=-1)([in_seq, x])
x = Attention()([x,x,x])
out = Dense(1, activation='linear')(x)
opt = tf.keras.optimizers.Adam(lr=0.01, decay=1e-6)
model = Model(inputs=in_seq, outputs=out)
model.compile(loss='mse', optimizer=opt)
когда я звоню:
model.fit(train_x, train_y, batch_size=128, epochs=1)
, она обучается и измеряет потери
1315/2409 [===============>..............] - ETA: 1s - loss: 0.0109
но, когда я делаю прогноз, форма такая же, как и набор проверок, который нужно прогнозировать, а не целевой набор.
prediction = model.predict(validation_x)
prediction.shape
(17130, 60, 1)
validation_y.shape
(17130,)
Если прогноз дает матрицу, почему он все еще может вычислить ошибка при обучении с целевым набором, являющимся вектором?