唐宇迪深度學習框架Caffe系列-10
阿新 • • 發佈:2018-12-29
繪製LOSS曲線
安裝matplotlib庫(這個庫需要安裝python-tk)
sudo apt-get install python-tk
sudo pip install matplotlib
import numpy as np import matplotlib.pyplot as plt import sys,os caffe_root = '/home/apple/caffe/' # this file should be run from {caffe_root}/examples (otherwise change this line) sys.path.insert(0, caffe_root + 'python') import caffe #caffe.set_device(0) caffe.set_mode_cpu() solver = caffe.SGDSolver('/home/apple/caffe/examples/mnist/lenet_solver.prototxt') niter =1000 test_interval = 200 train_loss = np.zeros(niter) test_acc = np.zeros(int(np.ceil(niter / test_interval))) # the main solver loop 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()
如果你使用的是GPU
caffe.set_mode_gpu()
caffe.set_device(0)
這種操作相當於一邊訓練網路,一遍記錄loss值,在網路的最後,繪製loss曲線
藍色的線表示 train loss
紅色的線表示 test accuracy