PerlとMXNetで文章生成: 原型の実行

[17/08/07 00:47 更新]

MXNetのソースのperl-package/AI-MXNet/examplesにあるchar_lstm.plが、今回の原型となるスクリプトである。まずは、これを実行することを目指す。同じディテクトリにあるget_ptb_data.shを実行すれば、トレーニングに使うデータ(data/input.txt)が得られる。

前回同様、${HOME}/lib/perl5AI::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」に戻る]