在訓練過程中畫出accuracy 和loss曲線能夠更直觀的觀察網路訓練的狀態,以便更好的優化網路的訓練。本文主要介紹在基於caffe框架訓練網路時,如何利用caffe自帶的一些實用的工具包來繪製曲線。
step1:儲存日誌檔案
在訓練過程中把終端輸出的結果儲存為乙個日誌檔案,注意檔案的字尾名必須是.log,這是因為後面再解析日誌檔案時有這個要求。如何把終端儲存到日誌檔案,例子如下:
$tools/caffe train --solver=$solverfile
2>&1 |tee out.log
step2:解析日誌檔案
這一步利用caffe中tools/extra資料夾下的parse_log.py來解析日誌檔案。具體例子如下:
python parse_log.py
out.log ./ #兩個引數,乙個是日誌檔案,另乙個是儲存的路徑
執行結束之後會發現在你儲存的路徑中會生成兩個檔案out.log.train和out.log.test
step3:繪製accuracy 和loss曲線。
利用caffe中tools/extra資料夾下的plot_training_log.py檔案來繪製。
python plot_training_log.py
2 testloss.png
out.log
這裡要解釋下,如果你直接執行這個是會報錯的。因為在out.log.test檔案是這樣的。
numiters,seconds,testaccuracy,testloss
0.0,2.318823,-1,0.360432
200.0,10.975734,-1,0.0757681
400.0,19.634317,-1,0.0610909
600.0,28.295885,-1,0.0554078
800.0,36.953475,-1,0.0510606
1000.0,45.644651,-1,0.0463909
load_data的時候第一行是不讀的,要麼你自己第一行加個#,要麼就直接不讀第一行。另外在split的時候不是用空格而是用『,』因此做如下修改。
def
load_data
(data_file, field_idx0, field_idx1):
data = [, ]
with open(data_file, 'r') as f:
num=len(f)
for line_num in range(1,num):#此處修改
line = f[line_num].strip()
#if line[0] != '#':#此處修改
fields = line.split(',')#此處修改
return data
上面還有個地方需要解釋就是那個2是什麼意思,這個你直接執行下python plot_training_log.py就會打出幫助資訊,就能看見了。
以上就是利用caffe自帶的工具包繪製曲線的方法。
numpy matplotlib繪函式曲線
f x sin 4x 2 x exp x x x 0.1 由於學模式識別,ppt中有該式子的圖,於是想畫出來看下。太菜了,查了半天才畫出來。因此記錄。直接import munpy as np np.sin np.exp 都是現成numpy自帶的。同時x np.linspace 1,3 表示x變數在圖...
caffe繪製train和loss曲線
caffe tools extra下面有幾個檔案,必備的 1 caffe tools extra parse log.sh 2 caffe tools extra extract seconds.py 3 caffe tools extra plot training log.py.example ...
MATLAB繪製caffe訓練日誌曲線
公司機器上,我是非管理員賬戶,python畫圖缺少一些庫,但是又沒有許可權安裝,所以考慮matlab。使用matlab畫caffe的訓練日誌,其實就是找規律 如下 function plot log logname fid fopen logname,r test loss fopen test l...