Простая реализация трансформатора с нуля в Pytorch. См. Http://peterbloem.nl/blog/transformers для глубокого объяснения.
Реализованные здесь модели предназначены для того, чтобы показать простоту моделей трансформаторов и самооценка. Как таковые, они не будут масштабироваться до больших трансформаторов. Для этого вам понадобится несколько хитростей, которые усложняют код (подробности см. В блоге).
Все модели в репозитории состоят из одной стопки блоков трансформатора (то есть нет структур энкодера/декодера). Оказывается, эта простая конфигурация часто работает лучше всего.
Во -первых, скачать или клонировать репозиторий. Затем в каталоге, который содержит setup.py, запустите
pip install -e .
Переключатель -e гарантирует, что при редактировании кода также изменяется установленная упаковка. Это означает, что вы можете, например, добавить операторы печати в код, чтобы увидеть, как он работает.
Затем, из того же каталога, запустите:
python experiments/classify.py
Это проведет простой классификационный эксперимент на наборе данных IMDB.
Гиперпараметры передаются в качестве аргументов командной строки. По умолчанию должны работать хорошо. Данные классификации автоматически загружаются, а данные Википедии включены в репозиторий.
Требуется Python 3.6+. Команда PIP выше должна установить все необходимые пакеты. Вам также может потребоваться pip install future в зависимости от точной версии Python.
File environment.yml описывает полную среду Conda со всеми зависимостями. После клонирования или загрузки проекта вы создаете среду следующим образом:
conda env create -f environment.yml --name former
conda activate former