关于caffe训练网络时用到的命令

###训练网络
#sudo sh ./build/tools/caffe train --solver=examples/mnist/train_lenet.sh
--solver:必选参数。一个protocol buffer类型的文件,即模型的配置文件。如:
# ./build/tools/caffe train -solver examples/mnist/lenet_solver.prototxt
-gpu:可选参数。该参数用来指定用哪一块gpu运行,根据gpu的id进行选择,如果设置为"-gpu all"则使用所有的gpu运行。如使用第二块gpu运行:
# ./build/tools/caffe train -solver examples/mnist/lenet_solver.prototxt -gpu 1
-weights:可选参数。用预先训练好的权重来fine-tuning模型,需要一个caffemodel如:
# ./build/tools/caffe train -solver examples/finetuning_on_flickr_style/solver.prototxt -weights modela/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel
###测试网络
# ./build/tools/caffe test -model examples/mnist/lenet_train_test.prototxt -weights examples/mnist/lenet_iter_10000.caffemodel -gpu 0 -iterations 100
time参数用来在屏幕上显示程序运行时间。如:
# ./build/tools/caffe time -model examples/mnist/lenet_train_test.prototxt -iterations 10
###关于gpu
# ./build/tools/caffe train -solver examples/mnist/lenet_solver.prototxt -gpu 0,1
# ./build/tools/caffe train -solver examples/mnist/lenet_solver.prototxt -gpu all
###计算均值
#sudo /home/abc/caffe/build/tools/compute_image_mean /home/abc/caffe/examples/mnist/mnist_train_lmdb /home/abc/caffe_case/mean.binaryproto                                                
###绘制可视化网络模型
1、安装graphviz
#sudo apt-get install graphviz
2、安装pydot
#sudo pip install pydot

#sudo python /home/abc/caffe/python/draw_net.py /home/abc/caffe/examples/mnist/lenet_train_test.prototxt /home/abc/caffe_case/lenet.png --rankdir=BT
第一个参数:网络模型的prototxt文件
第二个参数:保存到图片路径及名字
第三个参数:--rankdir=x,x有四种选项,分别是LR,RL,TB,BT。用来表示网络的方向,分别是从左到右,从右到左,从上到下,从下到上。默认为LR。
###绘制loss曲线
import numpy as np
import matplotlib.pyplot as plt
import sys,os
caffe_root = '/home/abc/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,1)
caffe.set_mode_gpu()
solver = caffe.SGDSolver('/home/abc/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('train accuracy')  
plt.show()
   












猜你喜欢

转载自blog.csdn.net/QLULIBIN/article/details/80762145
今日推荐