如果不需要绘制曲线,只需要训练出一个caffemodel, 直接调用solver.solve()就可以了。如果要绘制曲线,就需要把迭代过程中的值保存下来,因此不能直接调用solver.solve(), 需要迭代。在迭代过程中,每迭代200次测试一次
#加载必要的库
import numpy as np
import matplotlib.pyplot as plt #matplotlib inline
import sys,os,caffe
#设置当前目录
caffe_root = '/caffe/'
sys.path.insert(0, caffe_root + 'python')
os.chdir(caffe_root)
# set the solver prototxt
caffe.set_mode_cpu()
solver = caffe.SGDSolver('examples/cifar10/cifar10_quick_solver.prototxt')
niter = 4000
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_interv