OpenNMT-py "raise lengths array has to be sorted in decreasing order"
まだクローズしていないバグを踏んでちょっと時間をとられたので情報共有です*1
OpenNMT-py, 正確にはtorchtext-0.20の修正のせいで、いま、最新のOpenNMT-pyをgitダウンロードで使うと、train.pyやtranslate.pyが表題エラーの通りに死ぬ事象が起きています。
フィックスの方法としては、torchtextのバージョンを下げるのが一番簡単なのですが、今後pytorch, openNMTはtorchtext-0.20の方針でいくので、このworkaroundはあまりアレです。
10/30追記
下記の修正で訓練(train.py)は動くのですが、どうやらtranslate.py(翻訳側)はだめなようです。なので、現段階はtorchtext-0.1.1にダウングレードしてください・・・
で、私の修正方法ですが、
- torchtextをpythonシステムからアンインストール
- pipで改めて最新版のtorchtextをインストール
- 上記リンクの中ほど、@JianyuZhan さんがベタ書きしているパッチの内容を OpenNMT-py/onmt/IO.py, OpenNMT-py/train.py, OpenNMT-py/translate.pyにそれぞれ適用する
の3段階でした。
*1:NMTやっていて、しかもpytorchという奇特な方にしか役立ちませんが・・・