1. 为了方便查看模型如何,是否存在过拟合,收敛等情况,最好的方法是把 损失曲线和验证集的准确率曲线画出来。直观的查看分析。
是否需要降学习率继续训练,通过准确率图来选取最好的模型。
代码在caffe/python里面有,这里面很多Python接口,熟练应用这些接口能够方便快捷的很多。
2、 首先要安装相关的库。
. 安装pycaffe必须的一些依赖项:
$ sudo apt-get install -y python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython
$ sudo apt-get install -y protobuf-c-compiler protobuf-compiler
http://www.linuxdiyf.com/linux/12708.html 这个博客的安装指南不错,可以参考一下3、编译 pycaffe
make pycaffe
最终查看python接口是否编译成功:
进入python环境,进行import操作
# python >>> import caffe
如果没有提示错误,则编译成功。
make distribute
执行完后修改bashrc文件,添加
PYTHONPATH=${HOME}/caffe/distribute/python:$PYTHONPATH
LD_LIBRARY_PATH=${HOME}/caffe/build/lib:$LD_LIBRARY_PATH
使得python能够找到caffe的依赖。
进入python,import caffe,如果成功则说明一切ok,否则检查路径从头再来,甚至需要重新编译python。
加载必要的库
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import sys,os,caffe
#设置当前目录
caffe_root = '/home/bnu/caffe/'
sys.path.insert(0, caffe_root + 'python')
os.chdir(caffe_root)
# set the solver prototxt
caffe.set_device(0)
caffe.set_mode_gpu()
solver = caffe.SGDSolver('examples/cifar10/cifar10_quick_solver.prototxt')
%%time
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_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')