Замораживание слоев BERT после импорта через TF-хаб и их обучение? - PullRequest
0 голосов
/ 28 марта 2020

Я опишу свое намерение здесь. Я хочу импортировать предварительно подготовленную модель BERT через функцию tf-hub hub.module (bert_url, trainable = True) и использовать ее для задачи классификации текста. Я планирую использовать большой корпус для точной настройки весов BERT, а также несколько плотных слоев, входы которых являются выходами BERT. Затем я хотел бы заморозить слои BERT и тренировать только плотные слои после BERT. Как я могу сделать это эффективно?

1 Ответ

0 голосов
/ 30 марта 2020

Вы упоминаете TF1 API Hub hub.Module, поэтому я полагаю, что вы пишете код TF1 и используете совместимые с TF1 ресурсы хаба google / bert / ..., такие как https://tfhub.dev/google/bert_cased_L-12_H-768_A-12/1

Собираетесь ли вы провести отдельный прогон вашей программы для двух этапов обучения? Если это так, возможно, вы можете просто удалить trainable=True из вызова hub.Module во втором запуске. Это не влияет на имена переменных, поэтому вы можете восстановить результат обучения с первого запуска, включая скорректированные веса BERT. (Для ясности: предварительно обученные веса, поставляемые с концентратором. Модуль используется только для инициализации в самом начале обучения; восстановление контрольной точки отменяет их.)

...