caffe入門學習(6):繪製loss曲線

我們通過命令命令行進行訓練的時候,每一次都會打印出訓練loss和測試的準確率,這些都是衡量這個網絡的指標,直接看日誌,這個準確率和loss變化趨勢是不清晰的,最好的方式就是能把它繪製成圖形化,曲線圖是最適合表現變化趨勢的,下面就說說怎麼畫。

1、編寫python腳本

#Step1 import
import numpy as np
import matplotlib.pyplot as plt
import sys,os
caffe_root = 'E:/caffe/caffecase'  
sys.path.insert(0, caffe_root + 'python')
import caffe

#Step2 Setting
caffe.set_mode_gpu()
solver = caffe.SGDSolver('E:/caffe/caffecase/mnist/lenet_solver.prototxt')


niter =1000
test_interval = 200
train_loss = np.zeros(niter)
test_acc = np.zeros(int(np.ceil(niter / test_interval)))

#Step3 Draw
for it in range(niter):
    solver.step(1)  # SGD by Caffe

    # store the train loss
    train_loss[it] = solver.net.blobs['loss'].data
    solver.test_nets[0].forward(start='conv1')

    if it % test_interval == 0:
        acc=solver.test_nets[0].blobs['accuracy'].data
        print 'Iteration', it, 'testing...','accuracy:',acc
        test_acc[it // test_interval] = acc

print test_acc
_, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot(np.arange(niter), train_loss)
ax2.plot(test_interval * np.arange(len(test_acc)), test_acc, 'r')
ax1.set_xlabel('iteration')
ax1.set_ylabel('train loss')
ax2.set_ylabel('test accuracy')
plt.show()

2、執行腳本

執行腳本,如果缺少模塊就導入。
這裏寫圖片描述

3、繪製結果

這裏寫圖片描述

紅色的線是測試的準確率,藍色的線是訓練的loss值。
從圖上就能看到,1000次迭代的準確率並不是最高的,而是700次左右達到了一個峯值

發佈了155 篇原創文章 · 獲贊 59 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章