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=./