Windows10+Cygwin64+PowerShellで
TensorflowのNMTのチュートリアル
GitHub - tensorflow/nmt: TensorFlow Neural Machine Translation Tutorial
をやったらきつかった。
以下、はまったとこのメモ
①「ImportError: attempted relative import with no known parent package」が出る
ImportError: attempted relative import with no known parent packageの解決方法 - Qiita
②tmpフォルダの位置
開発ツール/CygwinにcURLコマンドをインストールする手順 - Windowsと暮らす
インストールしないとdownload_iwslt15.shが実行できない
④mkdirのpath
ルートディレクトリ以外にフォルダを置いていたのではまった。
nmt/scripts/download_iwslt15.sh /tmp/nmt_data
のコマンドが 期待した通りに実行されず、そのままpython -m nmt.nmt (以下略)を走らせると
ValueError: vocab_file '/tmp/nmt_data/vocab.vi' does not exist.
が出る。
原因はmkdirコマンドでオプションの文頭にスラッシュがあると期待した動作をしない。
よってチュートリアルにあるコマンドはそのまま使えない。
変更前
nmt/scripts/download_iwslt15.sh /tmp/nmt_data
変更後
nmt/scripts/download_iwslt15.sh tmp/nmt_data
変更前
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
変更後
mkdir tmp/nmt_model -vp
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
⑤「UnicodeEncodeError: 'cp932' codec can't encode character~」というエラーが出る。
Windowsの標準出力の問題。CP932については
使っていた環境ではこれでうまくいかなかったのでPowerShellを使った。
PowerShellでは chcp 65001を叩くだけでUTF-8に切り替わる。