Почему будет базовый уровень для LSTM и как улучшить производительность? - PullRequest
0 голосов
/ 09 октября 2018

У меня есть сеть LSTM со следующей конфигурацией:

model3 = tf.keras.Sequential()
model3.add(tf.keras.layers.LSTM(15, input_shape=(1, 10), return_sequences=True)) 
model3.add(tf.keras.layers.LSTM(5))
model3.add(tf.keras.layers.Dense(1, activation=None))
model3.compile(loss='mean_squared_error', optimizer='adam')
model3.fit(trainX, trainY, epochs=100, batch_size=30)

Результат может предсказать тенденцию, но будет стабильный базовый уровень, который является ненормальным.Рисунок выглядит следующим образом:

prediction results

Поэтому мне интересно, почему существует стабильная линия, даже если в моем последнем слое нет функции активации.А также, как улучшить производительность.

1 Ответ

0 голосов
/ 09 октября 2018

Вы используете два довольно небольших слоя LSTM, чтобы предсказать, как я предполагаю, ограниченные данные.Поэтому отношения, полученные между входом и выходом, будут довольно простыми (в отличие от глубокой модели).

Что касается вашего вопроса, вы должны проанализировать результаты в соответствии с вашей функцией стоимости.Использование функции стоимости, такой как MSE, оштрафует модель за наличие больших расхождений между выходными и истинными значениями, и кажется, что модель узнала здесь, что значение (около 900) является значением, которое минимизирует MSE, используя небольшое количестводоступных параметров.Так это "ненормально", как вы описали?Я бы сказал, что было бы ненормально, если линия не выглядела как линия наилучшего соответствия для более низких значений данных.

Я бы посоветовал вам использовать более простую сеть, если ваши тренировочные данныенедостаточно (см., возможно, CNN, или оконные ANN), или просмотр возможности получения большего количества обучающих данных.

...