Стратегии для ускорения обучения LSTM - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть сеть декодера кодера с: 3 BLSTM в кодере и 2 ванильными LSTM в декодере, связанные с общим вниманием с 4 узлами. Скрытый размер составляет 32, и мой общий образец выглядит как (10000,400,128). В сети кодировщика выпадает 0,2, а в декодере выпадает 0,3. Я использую оптимизатор Адама с коэффициентом обучения 0,001 и среднеквадратичной потерей ошибок. Наконец, у меня есть разделение проверки на 0,3. Я арендовал Nvidia Titan V (с Core ™ i9-9820X, 5,0 / 20 ядер и общей эффективной оперативной памятью 16/64 ГБ) на Vast.ai, и это занимает ~ 6 минут для каждой эпохи, когда я тренирую все это вместе (7000 поездов) и 3000 проверочных образцов).

Я надеялся найти способы сокращения общего времени поезда. Любые предложения будут великолепны.

1 Ответ

1 голос
/ 28 апреля 2020

Первое, что приходит на ум, - ранняя остановка обратных вызовов и изменение размера пакета.

Несмотря на то, что я сам не пробовал этого, нормализация пакета, как считается, также делает обучение более эффективным.

В моем (не очень актуальном) случае я увидел значительное улучшение скорости и качества тренировки после нормализации данных. Так что, возможно, нормализация / стандартизация данных может немного помочь.

Наконец, но не в последнюю очередь, сети GRU имеют тенденцию обучаться быстрее, но в некоторых случаях они работают хуже, чем в сетях LSTM. Я не знаю, хотите ли вы изменить свою модель, но я подумал, что должен упомянуть об этом.

...