Richでプログレスバーをととのう
tqdm
ニューラルネットワークの学習で進捗率をプログレスバーで表示することがある
電子の海での定番は tqdm
をだと思われる
簡単な使用例は
from tqdm import tqdm
import time
for i in tqdm(range(100)):
time.sleep(1)
#100%|██████████| 100/100 [01:40<00:00, 1.00s/it]
update
update()
を使うと自分で進捗率を設定できる
from tqdm import tqdm
import time
bar = tqdm(total = 1000)
for i in range(100):
bar.update(10)
time.sleep(1)
#100%|██████████| 1000/1000 [01:39<00:00, 9.96it/s]
説明文と状態
set_description()
で説明をつけられる
機械学習などでは学習中のlossの値などを見たい, そういうときにはset_postfix
やset_postfix_str
が便利
set_postfix
はdict
を入力として
from tqdm import tqdm
import time
bar = tqdm(total = 10)
bar.set_description('training')
for i in range(10):
bar.set_postfix(loss=i*0.1, accuracy=i+10)
bar.update(1)
time.sleep(1)
#training: 100%|█████████| 10/10 [00:10<00:00, 1.00s/it, accuracy=19, loss=0.9]
とうまい具合に見たい情報を表示してくれる
tqdm
は簡単にプログレスバーをいい感じに出してくれてとれも便利なのだが, 使っているといくるか不満がでてくる
- 複数のプログレスバーの扱い
- 途中で時間のカウントを止めたり復帰したり
- 色とか
これらの不満点は機械学習の学習をしていると出てくる, 例えばtrainとvalidでバーを分けたい場合は上の不満点はもろにくらう
Rich
Richは出力等をリッチにしてくれるライブラリ, たとえばテーブルを簡単につくれたり絵文字を出したり, マークダウンを出してくれたり...
できることが多すぎて自分でもすべての機能は理解できていない
Richでは, プログレスバーもサポートしていて, かなり直感的にきれいなプログレスバーを扱える
Richのプログレスバー
基本的な使い方はシンプルで
import time
from rich.progress import track
for i in track(range(20), description="Processing..."):
time.sleep(1) # Simulate work being done
これで幸せになれます
Richはプログレスバー以外にも様々な機能があり非常に有能です。
みなさんのpythonライフにサチアレ