[17/08/07 00:47 更新]
MXNetのソースのperl-package/AI-MXNet/examples
にあるchar_lstm.pl
が、今回の原型となるスクリプトである。まずは、これを実行することを目指す。同じディテクトリにあるget_ptb_data.sh
を実行すれば、トレーニングに使うデータ(data/input.txt
)が得られる。
前回同様、${HOME}/lib/perl5
にAI::MXNet
を置いてるなら、2行目あたりに、
use lib "$ENV{HOME}/lib/perl5";
と書くだけでうまくいくはずだ。
……、が、そうは問屋が卸さない。1つ目のエポックが終った時点でエラーが出る。
いろいろ試すのにも時間がかかりそうだったので、データを100分の1に切り詰めたdata/input_short.txt
を用意した。また、sample-size
が無駄に大きいので、デフォルトを小さくした。
ついでに、エポック数を少なくして実行しようとしたら、罠があった。ヘルプ・メッセージに表示される該当オプションは--num-epochs
なのだが、実際のオプションは--num-epoch
である。末尾に「s」が無いのが正しい。
……、サテオキ、
エラー・メッセージとソースを見比べてみると、スクリプトの最後の方にあるsample
というサブルーチンの中の$model->forward
の引数の[「の」の連続]mx->io->DataBatch
で、label
を指定してないときに起きるエラーだということが分かった。
なので、ソースの他の部分を参考にlabel
をでっちあげて指定すると、うまく動いてるように見える。……、いいのか、それで?
ともあれ、動いたので、次の段階へ。
[次の「間に合わせのパッケージ」へ] [「インストール」に戻る] [「PerlとMXNetで文章生成」に戻る] [「あえてのPerl」に戻る]