Какую предварительную обработку масштабирования данных мне нужно сделать перед обучением LSTM NN?

Я пытаюсь построить простую однослойную нейронную сеть LSTM с использованием keras, у которой есть Dense() выходной слой с одним нейроном (используется для регрессии).

Я знаю, что данные обучения, когда я fit() модель, нужно масштабировать. Многие онлайн-примеры изменяют масштаб как на входе, так и на выходе в диапазоне [0,1], другие - в диапазоне [-1,1].

Как правильно масштабировать входные и выходные данные для простой задачи регрессии, подобной моей, и почему? Я знаю, что это связано с используемыми функциями активации, например. сигмоид выводит значения в пределах [0,1].

Я видел, что вы можете выбрать функцию активации и периодическую активацию. Как функции активации реализованы в контексте LSTM() в keras (например, входной вентиль имеет «сигмоид»)?

Спасибо!


person mrt    schedule 22.08.2017    source источник
comment
вы, вероятно, получите ответ на этот вопрос на этом сайте, поскольку это не вопрос программирования , и не имеет ничего общего с keras напрямую   -  person DJK    schedule 23.08.2017


Ответы (1)


Для масштабирования я обычно использую функцию preprocessing.scale из Scikit-Learn. Это дает хорошие результаты. Для более глубокого объяснения следует ли нормализовать / стандартизировать / изменить масштаб

Для слоев LSTM рекомендуется использовать функцию активации «RELU», это помогает решить проблему исчезающего градиента. Проверьте этот ответ: преимущества RELU. Для вашего второго слоя (последнего) используйте линейную активацию, так как вы выполняете регрессию, если вы выполняли классификацию, используйте «сигмоид».

person Germán Alfaro    schedule 24.08.2017