pytorch裡如何使用logger儲存訓練引數日誌?

時間 2021-06-02 00:37:28

1樓:vmn171

不知道說的儲存是什麼引數

一些是可以提前定義,需要經常調整或自動搜尋的超引數:比如實驗名,batch size,epoch,lr……建議寫入argparse中,隨便寫入乙個字典也行,需要記錄的時候直接列印argparse就可以。

一些如網路、優化器什麼的,生成例項以後,直接print(model)或str(model)就可以列印或記錄。

開始訓練後生成的loss,metric這些,就自己設定個週期記錄就可以。

前面這些是文字的引數,可以全部統一在tensorboard中記錄,優點是好看,缺點是多了比較卡。自己用個csv,txt儲存也是可以的,都是文字。

儲存模型和優化器、apex等權重引數,用stat_dict()得到,打包到乙個字典中,儲存為檔案即可。如果想中斷後繼續訓練,儲存時候記錄一下全域性的step或epoch數。

2樓:Victor

如果是指儲存訓練過程中的loss,accuracy等metric的話,可以採用下面的方法:

import

logging

defget_logger

(filename

,verbosity=1

,name

=None

):level_dict

=formatter

=logging

.Formatter("[

%(asctime)s

][%(filename)s

][line:

%(lineno)d

][%(levelname)s

] %(message)s")

logger

=logging

.getLogger

(name

)logger

.setLevel

(level_dict

[verbosity

])fh

=logging

.FileHandler

(filename

,"w")fh

.setFormatter

(formatter

)logger

.addHandler(fh

)sh=logging

.StreamHandler

()sh

.setFormatter

(formatter

)logger

.addHandler(sh

)return

logger

可以在輸出到終端的同時輸出到filename檔案中。

使用時在訓練指令碼train.py中寫入:

logger

=get_logger

('/path/to/exp/exp.log'

)logger

.info

('start training!'

)for

epoch

inrange

(MAX_EPOCH

):...

loss

=...

acc=

...logger

.info

('Epoch:[{}/{}]

\tloss=

\tacc='

.format

(epoch

,MAX_EPOCH

,loss

,acc

))...

logger

.info

('finish training!'

)這樣在終端和'/path/to/exp/exp.log檔案中都會輸出相應的日誌,格式如下:

[2019-12

-1913:

56:52,

338]

[train.py]

[line:3

][INFO]

start

training![

2019-12

-1913:

57:52,

338]

[train.py]

[line:8

][INFO]

Epoch:[

1/10]

loss

=...

acc=...

[2019-12

-1913:

58:52,

338]

[train.py]

[line:8

][INFO]

Epoch:[

2/10]

loss

=...

acc=...

...2019-12

-1913:

59:52,

338]

[train.py]

[line:11

][INFO]

finish

training!

pytorch如何使用多塊gpu

東方碩 自己寫的多卡訓練框架,可多機多卡,供參考 artintel2017 torch multi gpu原答案 最近剛花幾天時間搞了下torch.distributed,寫了個demo測試一下,發現確實如官方文件所說,比DataParallel快,而且是快很多。4卡用DataParallel,2....

Pytorch為什麼使用分組卷積時訓練速度變慢了?

Angzz 可以參考ShuffleNet V2 Practical Guidelines for Efficient CNN Architecture Design 裡面對現在depth wise,group conv等op的bottleneck從訪存角度做了很詳細的分析。 準確的說,是group ...

新手如何入門pytorch?

君玉工作室 入門pytorch分六個步驟 1.配置好開發環境。這邊直接參考官網的教程就可。2.理解張量的概念,以及相應的運算,在pytorch中實現。3.用pytorch搭建感知機 神經網路 卷積神經網路以及LSTM等常見的簡單的網路,進行前向傳播推理,能夠執行即可,其中理解全連線,池化,卷積模組,...