前回までで訓練処理のstep数が大きすぎて、訓練が完全に終了しなかったので、今回はstep数を小さくして再トライしようと思います。
ソースファイルを眺めていたら、max_steps なるFLAGがあるようなので、これを500にして試してみます。ちなみにデフォルトは10000000です。終わらないわけです。
下のようにして、max_stepsに500を指定します。 これなら、1時間程度で完了するはずです。
bazel-bin/inception/flowers_train \ --train_dir="/tmp/flowers_train/" \ --data_dir="/tmp/flowers-data/" \ --pretrained_model_checkpoint_path="${HOME}/AI/inception-v3-model/inception-v3/model.ckpt-157585" \ --fine_tune=True \ --initial_learning_rate=0.001 \ --input_queue_memory_factor=1 \ --max_steps=500
完了しました。500step訓練されたモデルが生成されています。
では、訓練して生成されたモデルを評価してみます。
評価処理を実行するプログラムをビルドしていない場合は、下のコマンドでビルドします。
bazel build //inception:flowers_eval
下のコマンドで評価処理を実行します。
bazel-bin/inception/flowers_eval \ --eval_dir="/tmp/flowers_eval/" \ --data_dir="/tmp/flowers-data/" \ --subset=validation \ --num_examples=500 \ --checkpoint_dir="/tmp/flowers_train/" \ --input_queue_memory_factor=1 \ --run_once
500step訓練されたモデルを使用して、精度は94%となっています。 訓練済みのモデルをベースに使って訓練しているので、500stepでも運が良ければ このくらいの精度は出るようです。
これで、daisy, dandelion, roses, sunflowers, tulips の5種類の花の画像を94%の精度で識別できるDNNモデルが生成できました。
/tmp ディレクトリにある flowers-data, flowers_eval, flowers_train ディレクトリは、~/AI/inception ディレクトリにコピーしておきました。(/tmp ディレクトリはUbuntu起動時にクリアされるため)
今回は ここまでです。