随着tensorflow的不断更新,直接按照nmt的教程搭建nmt环境会报错的。。。因此,需要一些不太好的办法来避免更多的问题出现。
tensorflow看来在ubuntu和debian中运行是没有问题的。因此,选用ubuntu作为环境系统。
由于tf-nightly越来越远了,因此,先使用tf-1.4让程序能够正常运行再考虑其他的问题吧。
python选用默认的2.7,安装easy-pip。
有了python的支持,我们同样需要使用指定版本的tf,一边支持nmt对应的版本(否则会报错,无法正常使用).
pip install tensorflow==1.4.0(这里只安装了CPU版本)
git clone https://github.com/tensorflow/nmt/
使用 git branch -a 查看所下载的nmt的所有分支。
切换到tf-1.4版本:
git checkout -b tf-1.4 origin/tf-1.4
Branch tf-1.4 set up to track remote branch tf-1.4 from origin.
Switched to a new branch ‘tf-1.4’
至此,我们可以按照nmt教程去做了:
mkdir /tmp/nmt_model
python -m nmt.nmt
–src=vi –tgt=en
–vocab_prefix=/tmp/nmt_data/vocab
–train_prefix=/tmp/nmt_data/train
–dev_prefix=/tmp/nmt_data/tst2012
–test_prefix=/tmp/nmt_data/tst2013
–out_dir=/tmp/nmt_model
–num_train_steps=12000
–steps_per_stats=100
–num_layers=2
–num_units=128
–dropout=0.2
–metrics=bleu
可以看到,上面的参数把越南语翻译为英语了.反向翻译,则只需要调换,即:
–src=en –tgt=vi
由于这个过程比较慢,我们可以用tf的cgi接口查看状态:
tensorboard –port 22222 –logdir /tmp/nmt_model/
这样,就可以访问本地22222端口来看具体训练状态了.
我在三代笔记本i5训练了小规模语料库,不到10个小时。
接下来,可以翻译一些文本了:
cat > /tmp/my_infer_file.vi
# (copy and paste some sentences from /tmp/nmt_data/tst2013.vi)
python -m nmt.nmt
–out_dir=/tmp/nmt_model
–inference_input_file=/tmp/my_infer_file.vi
–inference_output_file=/tmp/nmt_model/output_infer
cat /tmp/nmt_model/output_infer # To view the inference as output
参考网文:
nmt官方教程