QANet
1.0.0
ICLR2018的Google的Qanet(以前快速阅读理解(FRC))的张力实现。 (注意:这不是本文作者的官方实施)
我写了一篇有关实施Qanet的博客文章。在此处查看以获取更多信息!
HKUST-SKNECOMP已采用R-NET的培训和预处理管道。演示模式正在工作。训练后,只需使用python config.py --mode demo即可运行交互式演示服务器。
由于记忆问题,与原始论文一样,使用了单个头点产生的注意力,而不是8头多头注意。由于使用GTX1080,与纸中使用的P100相比,由于使用GTX1080,隐藏尺寸也从128减少到96。 (8GB的GPU内存不足。如果您有12GB内存GPU,请与我们分享您的培训结果。)
当前,最佳型号以60k步长(6〜8小时)达到EM/F1 = 70.8/80.1。详细结果如下列出。

用于此任务的数据集是Stanford问题回答数据集。从普通爬网获得的术前的手套嵌入,使用用于单词的840b令牌。
要下载和预处理数据,请运行
# download SQuAD and Glove
sh download.sh
# preprocess the data
python config.py --mode prepro就像HKUST-KEWNOMP的R-NET一样,Hyper参数也存储在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张板日志文件的默认目录是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
进入容器进入容器后,请按照下面下载小队和手套数据集的命令。
预处理的模型权重暂时不可用。
这是该存储库和原始论文的收集结果。
| 模型 | 训练步骤 | 尺寸 | 注意力头 | 数据大小(8月) | Em | F1 |
|---|---|---|---|---|---|---|
| 我的模型 | 35,000 | 96 | 1 | 87K(没有8月) | 69.0 | 78.6 |
| 我的模型 | 60,000 | 96 | 1 | 87K(没有8月) | 70.4 | 79.6 |
| 我的模型(@JasonBW报道) | 60,000 | 128 | 1 | 87K(没有8月) | 70.7 | 79.8 |
| 我的模型(@chesterkuo报道) | 60,000 | 128 | 8 | 87K(没有8月) | 70.8 | 80.1 |
| 原始纸 | 35,000 | 128 | 8 | 87K(没有8月) | na | 77.0 |
| 原始纸 | 150,000 | 128 | 8 | 87K(没有8月) | 73.6 | 82.7 |
| 原始纸 | 340,000 | 128 | 8 | 240k(8月) | 75.1 | 83.8 |
运行张量板以进行可视化。
$ tensorboard --logdir=./