Стратегии ускорения обучения LSTM

У меня есть сеть декодера кодировщика с: 3 BLSTM в кодировщике и 2 ванильными LSTM в декодере, связанными с общим вниманием с 4 узлами. Скрытый размер равен 32, и моя общая выборка выглядит как (10 000 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 проверочных образцов).

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


person Crossfit_Jesus    schedule 28.04.2020    source источник


Ответы (1)


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

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

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

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

person bonobo    schedule 28.04.2020