【caffe】可視化網絡的訓練過程的loss和accuracy(效果由於官方繪製腳本)

前言:我們在訓練網絡的時候,網絡訓練完畢後,需要可視化訓練過程中loss和accuracy的變化情況,方便了解整個訓練過程模型的優化情況。(之前使用caffe自帶的腳本繪製曲線圖,出現各種報錯,遂採用python腳本來繪製曲線。)

1、保存訓練過程的log。

我們在執行訓練指令時,可以通過以下方式保存訓練日誌。

#這是sh指令,最後一句爲設置保存訓練日誌
/data_1/caffe-master/build/tools/caffe train \
	-solver /data_1/ResNet/mobilenet_resnet18_solver.prototxt \
	--weights /data_1/model/mobile_resnet_iter_300000.caffemodel \
	2>&1 | tee train.log  

2、使用Caffe自帶的log文件的解析工具parse_log.py解析訓練過程保存的日誌。

parse_log.py文件在caffe root路徑的 CAFFE_ROOT/tools/extra/下,(此處不要直接把parse_log.py移出來使用,因爲它需要依賴該路徑下的extract_seconds.py等文件)

#python  parse_log.py文件路徑   log日誌路徑  解析文件保存路徑  
python CAFFE_ROOT/tools/extra/parse_log.py train.log ./

解析之後會得到train和test兩個解析文件。

文件中的內容如下:(ps:這裏是parse_log.py,而不是parse_log.sh,兩個腳本生成的格式是不一樣的。)

3.最後使用python腳本繪製loss和accuracy的變化曲線。

import pandas as pd

import matplotlib.pyplot as plt

train_log = pd.read_csv("/data_1/deep_learning_layer/layer/Resnet18/net/ResNet-18-depthwise/net_dw_thin/photo/train_refinedet_1026.log.train")

test_log = pd.read_csv("/data_1/deep_learning_layer/layer/Resnet18/net/ResNet-18-depthwise/net_dw_thin/photo/train_refinedet_1026.log.test")

_, ax1 = plt.subplots()

ax1.set_title("train loss and test loss")

ax1.plot(train_log["NumIters"], train_log["loss"], alpha=0.5)

ax1.plot(test_log["NumIters"], test_log["loss"], 'g')

ax1.set_xlabel('iteration')

ax1.set_ylabel('train loss')

plt.legend(loc='upper left')

ax2 = ax1.twinx()

ax2.plot(test_log["NumIters"], test_log["acc/top-1"], 'r')

ax2.plot(test_log["NumIters"], test_log["acc/top-5"], 'm')

ax2.set_ylabel('test accuracy')

plt.legend(loc='upper right')

plt.show()

print ('Done.')

其中綠色曲線爲測試的loss,藍色的柱形爲訓練的loss。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章