Реализация TensorFlow of Google QANET (ранее быстрое понимание прочитанного (FRC)) из ICLR2018. (Примечание: это не официальная реализация от авторов статьи)
Я написал сообщение в блоге об реализации QANET. Проверьте здесь для получения дополнительной информации!
Обучение и предварительная обработка трубопровода была принята из R-Net Hkust-Sonkcomp. Демо -режим работает. После обучения просто используйте python config.py --mode demo для запуска интерактивного демонстрационного сервера.
Из-за проблемы с памятью используется внимание однополосного продукта с одной головкой в отличие от многоголового внимания 8 голов, как в оригинальной статье. Скрытый размер также уменьшается до 96 с 128 из -за использования GTX1080 по сравнению с P100, используемым в бумаге. (8 ГБ памяти графического процессора недостаточны. Если у вас есть графический процессор памяти 12 ГБ, пожалуйста, поделитесь с нами результатами обучения.)
В настоящее время лучшая модель достигает EM/F1 = 70,8/80,1 на 60K шагах (6 ~ 8 часов). Подробные результаты перечислены ниже.

Набор данных, используемый для этой задачи, представляет собой набор данных для ответов на вопрос Стэнфорда. Предварительные вставки перчатки, полученные из общего ползания с токенами 840b, используемыми для слов.
Чтобы загрузить и предварительно обрабатывать данные, запустите
# download SQuAD and Glove
sh download.sh
# preprocess the data
python config.py --mode preproТак же, как R-Net от HKUST-SONKSCOMP, гипер-парамеры хранятся в config.py. Чтобы отлаживать/поезда/тест/демо, запустите
python config.py --mode debug/train/test/demoЧтобы оценить модель с официальным кодом, запустите
python evaluate-v1.1.py ~ /data/squad/dev-v1.1.json train/{model_name}/answer/answer.json Каталог по умолчанию для файла журнала Tensorboard IS train/{model_name}/event
Чтобы построить изображение Docker (требует Nvidia-Docker), запустите
nvidia-docker build -t tensorflow/qanet .
Установите пути монтирования объема и сопоставления портов (для демонстрационного режима)
export QANETPATH={/path/to/cloned/QANet}
export CONTAINERWORKDIR=/home/QANet
export HOSTPORT=8080
export CONTAINERPORT=8080
вмешиваться в контейнер
nvidia-docker run -v $QANETPATH:$CONTAINERWORKDIR -p $HOSTPORT:$CONTAINERPORT -it --rm tensorflow/qanet bash
Оказавшись внутри контейнера, следуйте приведенным выше командам, начиная с загрузки наборов данных Squad и Glove.
Предварительно проведенные веса модели временно недоступны.
Вот собранные результаты этого хранилища и оригинальной статьи.
| Модель | Учебные шаги | Размер | Внимание головы | Размер данных (август) | ЭМ | F1 |
|---|---|---|---|---|---|---|
| Моя модель | 35 000 | 96 | 1 | 87K (нет августа) | 69,0 | 78.6 |
| Моя модель | 60 000 | 96 | 1 | 87K (нет августа) | 70.4 | 79,6 |
| Моя модель (сообщается @jasonbw) | 60 000 | 128 | 1 | 87K (нет августа) | 70.7 | 79,8 |
| Моя модель (сообщается @chesterkuo) | 60 000 | 128 | 8 | 87K (нет августа) | 70.8 | 80.1 |
| Оригинальная бумага | 35 000 | 128 | 8 | 87K (нет августа) | НА | 77.0 |
| Оригинальная бумага | 150 000 | 128 | 8 | 87K (нет августа) | 73,6 | 82,7 |
| Оригинальная бумага | 340 000 | 128 | 8 | 240K (август) | 75,1 | 83,8 |
Запустите Tensorboard для визуализации.
$ tensorboard --logdir=./