Я тренирую автоэнкодер в кератах, который определяется следующим образом:
model = Sequential()
model.add(LSTM(100, activation='relu', input_shape=(430, 3)))
model.add(RepeatVector(430))
model.add(LSTM(100, activation='relu', return_sequences=True))
model.add(TimeDistributed(Dense(3)))
model.compile(optimizer='adam', loss='mean_squared_error', metrics=['accuracy'])
print(model.summary())
context_paths = loadFile()
X_train, X_test = train_test_split(context_paths, test_size=0.20)
print('Fitting model.')
history = model.fit(X_train, X_train, epochs=1, batch_size=8, verbose=1, shuffle=True, validation_data=(X_test, X_test))
predict_sample = X_train[0].reshape((1, 430, 3))
predict_output = model.predict(predict_sample, verbose=0)
print(predict_output[0, :, 0])
Этот код не выдает никаких ошибок, но когда я его запускаю, потери равны nan. Я проверил некоторые вопросы по SO и обнаружил, что эта проблема возникает, когда:
- nan или бесконечные значения -> Я проверил свои входные данные с
numpy.isnan(myarray).any()
, который возвратил False
, поэтому Я также сделал numpy.isfinite(myarray).any()
, что вернуло True
, поэтому я предполагаю, что мои данные в порядке - размер пакета слишком велик -> Я уменьшил с 32 до 8, мало помогло
- размер слоя слишком велик -> Я уменьшил со 100 до 24, мало помогло
Вот изображение первых нескольких партий: ![enter image description here](https://i.stack.imgur.com/T94yS.png)
Здесь потеря гигантская c, но я не уверен, что ее вызывает. Диапазон чисел в моем наборе данных достигает пределов int32. Также мои данные дополняются нулями.