У меня есть следующий образец набора данных формы 3D
X_train = [[array([[0.32225183]]),
array([[0.28631562]]),
array([[0.30552849]]),
array([[0.33142298]]),
array([[0.28376102]])],
[array([[0.28631562]]),
array([[0.30552849]]),
array([[0.33142298]]),
array([[0.28376102]]),
array([[0.20635083]])],
[array([[0.30552849]]),
array([[0.33142298]]),
array([[0.28376102]]),
array([[0.20635083]]),
array([[0.26855856]])]]
Приведенные выше данные имеют форму 5 временных меток / последовательность, 1 особенность и 3 образца.
Я пытаюсь запустить простой автокодер LSTM для обнаружения аномалий временных рядов, поэтому ввод - это последовательность, а вывод - последовательность, ошибка восстановления может сообщить мне об аномалии в конкретное время.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from numpy import array
from keras.models import Sequential
from keras.layers import LSTM, Dense, RepeatVector, TimeDistributed
from keras.utils import plot_model
from keras import optimizers
from keras.callbacks import EarlyStopping
lstm_autoencoder = Sequential()
##EncodingPart
lstm_autoencoder.add(LSTM(units = 10, activation='relu', input_shape=(5, 1), return_sequences=True))
##DecodingPart
lstm_autoencoder.add(LSTM(5, activation='relu', return_sequences=True))
lstm_autoencoder.summary()
## Compile
lstm_autoencoder.compile(loss='mse', optimizer='adam')
early_stop = EarlyStopping(monitor='loss', patience=2, verbose=1)
lstm_autoencoder_history = lstm_autoencoder.fit(X_train, X_train,
epochs = 100,
batch_size = 10,
verbose=2, callbacks=[early_stop])
Обычно я выравниваю вывод после фитпредсказка и сравниваю ошибку восстановления.
Но это дает мне следующую ошибку
ValueError: Error when checking target: expected lstm_8 to have shape (5, 5) but got array with shape (5, 1)
Пожалуйста, помогите мне получить этот простой последовательный вывод