Я пытаюсь тренировать LSTM ae. Это как модель seq2seq, вы добавляете сигнал, чтобы получить восстановленную последовательность сигналов. И я использую последовательность, которая должна быть довольно простой. Функция потерь и метри c является MSE. Первые сто эпох прошли хорошо. Однако через несколько эпох я получил MSE, который очень высок, и иногда он идет в NaN. Я не знаю, что вызывает это. Можете ли вы проверить код и дать мне подсказку? Последовательность нормализуется раньше, поэтому она находится в диапазоне [0,1], как она может вызвать такую высокую ошибку MSE? Это входная последовательность, которую я получаю из обучающего набора:
sequence1 = x_train[0][:128]
выглядит следующим образом:
Я получаю данные из набора данных сигнала publi c (128 * 1) Это Код: (я изменяю его из блога keras)
# lstm autoencoder recreate sequence
from numpy import array
from keras.models import Sequential
from keras.layers import LSTM
from keras.layers import Dense
from keras.layers import RepeatVector
from keras.layers import TimeDistributed
from keras.utils import plot_model
from keras import regularizers
# define input sequence. sequence1 is only a one dimensional list
# reshape sequence1 input into [samples, timesteps, features]
n_in = len(sequence1)
sequence = sequence1.reshape((1, n_in, 1))
# define model
model = Sequential()
model.add(LSTM(1024, activation='relu', input_shape=(n_in,1)))
model.add(RepeatVector(n_in))
model.add(LSTM(1024, activation='relu', return_sequences=True))
model.add(TimeDistributed(Dense(1)))
model.compile(optimizer='adam', loss='mse')
for epo in [50,100,1000,2000]:
model.fit(sequence, sequence, epochs=epo)
Первые несколько эпох прошли хорошо. все потери около 0,003X или около того. Затем он внезапно стал большим, до какого-то очень большого числа, - все это поднимается к NaN.