中学生から大学のAI初学者が対象です。
ログファイルは、ダラダラと出されても疲れてしまいます。
loggingはOSに近いところで動作するためか、使い分けが困難です。
そこで、loggingをlogファイルに出力するようします。
import logging
logging.basicConfig(level=logging.INFO, filename='log')
このようにしてしまうと、全部がファイル出力となってしまいます。
そこで、chainerrlを魔改造します。
前にも書いてありますが、一部をchokozainerrlにして、いじっているので、そちらを変更します。
train_agent.pyとevaluator.pyのlog出力部分を一部だけ、print出力に変更しました。
そして、進捗バーをつけます。
# add
import tqdm
if log_type=='pbar' :
pbar= tqdm(total=steps,position=0)
if step_offset>0:
pbar.update(step_offset)
# 必要なところに追加 1%を超えるくらい進行したらバーをupdate
if(log_type=='pbar'):
if(t-pbar.n)>= steps*0.01:
pbar.update(t-pbar.n)
気になる方は、chokozainerRLのtrain_agent.pyの中身を見てください。
ポイントは、position=0と設定するところです。
こうしておくと、進捗中に追加されたコンソール出力は進捗バーの下に表示されます。
また、pbar.nですが、公式のマニュアルにも、いろいろなところにも書いていません。なので、少しだけ説明します。
tqdmは、下記のgithubにあります。
https://github.com/tqdm/tqdm
こちらのソースコードからすると、pythonで書かれているようです。pipでインストールできるのでそうなのでしょう。
nはtqdmのクラスメンバー変数で、tqdmの現在値を表しています。不勉強なのでわかっていないのですが、pythonのクラス変数は、全部public変数のようです。なので、pbar.nのようにアクセスできてしまいます。
道理で探しても、getやset関数が見つからないわけだ。
これから検証していきますが、ダラダラコンソール出力は、webクライアントに過剰な負担をかけているように思っています。