TensorFlow-Implementierung von End-to-End-Speichernetzwerken für die Sprachmodellierung (siehe Abschnitt 5). Der ursprüngliche Torchcode von Facebook finden Sie hier.
Dieser Code erfordert TensorFlow. Im data gibt es eine Reihe von PTB -Korpus (PTB) -Korpus (PTB), was ein beliebter Benchmark für die Messung der Qualität dieser Modelle ist. Sie können jedoch Ihren eigenen Textdatensatz verwenden, der so formiert werden sollte.
Wenn Sie Docker Image Tensorflw/TensorFlow: Last GPU verwenden, müssen Sie die Zukunft des Python-Pakets verwenden.
$ pip install future
Wenn Sie --show True möchten, müssen Sie progress des Python -Pakets installieren.
$ pip install progress
Führen Sie den folgenden Befehl aus, um ein Modell mit 6 Hopfen und Speichergröße von 100 zu trainieren:
$ python main.py --nhop 6 --mem_size 100
Um alle Trainingsoptionen zu sehen, rennen Sie:
$ python main.py --help
die drucken:
usage: main.py [-h] [--edim EDIM] [--lindim LINDIM] [--nhop NHOP]
[--mem_size MEM_SIZE] [--batch_size BATCH_SIZE]
[--nepoch NEPOCH] [--init_lr INIT_LR] [--init_hid INIT_HID]
[--init_std INIT_STD] [--max_grad_norm MAX_GRAD_NORM]
[--data_dir DATA_DIR] [--data_name DATA_NAME] [--show SHOW]
[--noshow]
optional arguments:
-h, --help show this help message and exit
--edim EDIM internal state dimension [150]
--lindim LINDIM linear part of the state [75]
--nhop NHOP number of hops [6]
--mem_size MEM_SIZE memory size [100]
--batch_size BATCH_SIZE
batch size to use during training [128]
--nepoch NEPOCH number of epoch to use during training [100]
--init_lr INIT_LR initial learning rate [0.01]
--init_hid INIT_HID initial internal state value [0.1]
--init_std INIT_STD weight initialization std [0.05]
--max_grad_norm MAX_GRAD_NORM
clip gradients to this norm [50]
--checkpoint_dir CHECKPOINT_DIR
checkpoint directory [checkpoints]
--data_dir DATA_DIR data directory [data]
--data_name DATA_NAME
data set name [ptb]
--is_test IS_TEST True for testing, False for Training [False]
--nois_test
--show SHOW print progress [False]
--noshow
(Optional) Wenn Sie eine Fortschrittsleiste sehen möchten, installieren Sie progress mit pip :
$ pip install progress
$ python main.py --nhop 6 --mem_size 100 --show True
Nach Abschluss des Trainings können Sie mit: validieren und validieren:
$ python main.py --is_test True --show True
Die Trainingsleistung sieht aus wie:
$ python main.py --nhop 6 --mem_size 100 --show True
Read 929589 words from data/ptb.train.txt
Read 73760 words from data/ptb.valid.txt
Read 82430 words from data/ptb.test.txt
{'batch_size': 128,
'data_dir': 'data',
'data_name': 'ptb',
'edim': 150,
'init_hid': 0.1,
'init_lr': 0.01,
'init_std': 0.05,
'lindim': 75,
'max_grad_norm': 50,
'mem_size': 100,
'nepoch': 100,
'nhop': 6,
'nwords': 10000,
'show': True}
I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 12
I tensorflow/core/common_runtime/direct_session.cc:45] Direct session inter op parallelism threads: 12
Training |################################| 100.0% | ETA: 0s
Testing |################################| 100.0% | ETA: 0s
{'perplexity': 507.3536108810464, 'epoch': 0, 'valid_perplexity': 285.19489755719286, 'learning_rate': 0.01}
Training |################################| 100.0% | ETA: 0s
Testing |################################| 100.0% | ETA: 0s
{'perplexity': 218.49577035468886, 'epoch': 1, 'valid_perplexity': 231.73457031084268, 'learning_rate': 0.01}
Training |################################| 100.0% | ETA: 0s
Testing |################################| 100.0% | ETA: 0s
{'perplexity': 163.5527845871247, 'epoch': 2, 'valid_perplexity': 175.38771414841014, 'learning_rate': 0.01}
Training |################################| 100.0% | ETA: 0s
Testing |################################| 100.0% | ETA: 0s
{'perplexity': 136.1443535538306, 'epoch': 3, 'valid_perplexity': 161.62522958776597, 'learning_rate': 0.01}
Training |################################| 100.0% | ETA: 0s
Testing |################################| 100.0% | ETA: 0s
{'perplexity': 119.15373237680929, 'epoch': 4, 'valid_perplexity': 149.00768378137946, 'learning_rate': 0.01}
Training |############## | 44.0% | ETA: 378s
Die Verwirrung der Testsets von Penn Treebank Corpora.
| Anzahl der versteckten | Anzahl der Hopfen | Speichergröße | Memn2n (Sukhbaatar 2015) | Dieses Repo. |
|---|---|---|---|---|
| 150 | 3 | 100 | 122 | 129 |
| 150 | 6 | 150 | 114 | im Gange |
Taehoon Kim / @carpedm20