Eine Tensorflow -Implementierung von Google Qanet (zuvor schnelles Leseverständnis (FRC)) von ICLR2018. (Hinweis: Dies ist keine offizielle Implementierung der Autoren des Papiers)
Ich habe einen Blog -Beitrag über die Implementierung von Qanet geschrieben. Weitere Informationen finden Sie hier!
Trainings- und Vorverarbeitungspipeline wurde von Hkust-KnowComps von R-Net übernommen. Der Demo -Modus funktioniert. Verwenden Sie nach dem Training einfach python config.py --mode demo um einen interaktiven Demo -Server auszuführen.
Aufgrund eines Gedächtnisproblems wird eine Aufmerksamkeit des Kopfprodukts mit einer einzelnen Kopfprodukt im Gegensatz zu einer 8-Kopf-Aufmerksamkeit von 8 Köpfen wie im Originalpapier verwendet. Die versteckte Größe wird aufgrund der Verwendung eines GTX1080 im Vergleich zu einem in der Arbeit verwendeten P100 auch auf 96 reduziert. (8 GB GPU -Speicher ist nicht ausreichend. Wenn Sie eine 12 -GB -Speicher -GPU haben, teilen Sie uns bitte Ihre Trainingsergebnisse mit uns.)
Derzeit erreicht das beste Modell EM/F1 = 70,8/80.1 in 60 km Schritten (6 ~ 8 Stunden). Detaillierte Ergebnisse sind unten aufgeführt.

Der für diese Aufgabe verwendete Datensatz ist Stanford Frage, der den Datensatz beantwortet. Vorbereitete Handschuhbettendings, die aus gemeinsamem Kriechen mit 840B -Token erhalten wurden, die für Wörter verwendet werden.
Um die Daten herunterzuladen und vorzuverarbeiten, leiten Sie die Daten aus
# download SQuAD and Glove
sh download.sh
# preprocess the data
python config.py --mode preproGenau wie R-Net von Hkust-KnowComp werden Hyperparameter in config.py gespeichert. Debuggen/Train/Test/Demo, rennen
python config.py --mode debug/train/test/demoUm das Modell mit dem offiziellen Code zu bewerten, laufen Sie aus
python evaluate-v1.1.py ~ /data/squad/dev-v1.1.json train/{model_name}/answer/answer.json Das Standardverzeichnis für die Tensorboard -Protokolldatei ist train/{model_name}/event
Um das Docker-Bild zu erstellen (erfordert Nvidia-Docker), laufen Sie
nvidia-docker build -t tensorflow/qanet .
Stellen Sie die Lautstärkeregereiten und die Portzuordnungen ein (für den Demo -Modus)
export QANETPATH={/path/to/cloned/QANet}
export CONTAINERWORKDIR=/home/QANet
export HOSTPORT=8080
export CONTAINERPORT=8080
in den Behälter verprügeln
nvidia-docker run -v $QANETPATH:$CONTAINERWORKDIR -p $HOSTPORT:$CONTAINERPORT -it --rm tensorflow/qanet bash
Befolgen Sie die oben angegebenen Befehle im Container, beginnend mit dem Herunterladen der Datensätze der Kader und des Handschuhs.
Vorübergehende Modellgewichte sind vorübergehend nicht verfügbar.
Hier sind die gesammelten Ergebnisse aus diesem Repository und dem Originalpapier.
| Modell | Trainingsschritte | Größe | Aufmerksamkeitsköpfe | Datengröße (August) | Em | F1 |
|---|---|---|---|---|---|---|
| Mein Modell | 35.000 | 96 | 1 | 87k (nein August) | 69.0 | 78,6 |
| Mein Modell | 60.000 | 96 | 1 | 87k (nein August) | 70,4 | 79,6 |
| Mein Modell (gemeldet von @jasonbw) | 60.000 | 128 | 1 | 87k (nein August) | 70.7 | 79,8 |
| Mein Modell (gemeldet von @chesterkuo) | 60.000 | 128 | 8 | 87k (nein August) | 70,8 | 80.1 |
| Originalpapier | 35.000 | 128 | 8 | 87k (nein August) | N / A | 77.0 |
| Originalpapier | 150.000 | 128 | 8 | 87k (nein August) | 73.6 | 82.7 |
| Originalpapier | 340.000 | 128 | 8 | 240k (August) | 75.1 | 83.8 |
Führen Sie das Tensorboard zur Visualisierung aus.
$ tensorboard --logdir=./