Caffe time和caffe train gpu的区别

相关文章推荐
caffe的运行提供三种接口:c++接口(命令行)、python接口和matlab接口。本文先对命令行进行解析,后续会依次介绍其它两个接口。
caffe的c++主程序(caffe.cpp)放在根目录下...
$ ./build/tools/caffe.bin test -model=examples/mnist/lenet_train_test.prototxt -weights=examples/mni...
在caffe中计算某个model的整个net以及各个layer的向前向后传播时间,可以使用下面的命令格式:
./build/tools/caffe time --model=examples/mnis...
1、怎么用这个命令
在caffe根目录下输入如下命令:
./build/tools/caffe.bin, 得到如下显示
usage:caffe
# 这个是告诉你使用格式, caffe 后接...
time工具使用命令:(以lenet为例)${CAFF_ROOT}/build/tools/caffe.bin time -model examples/mnist/lenet_train_test....
在使用 Caffe 过程中经常会有这样的需求:已有 Layer 不符合我的应用场景;我需要这样这样的功能,原版代码没有实现;或者已经实现但效率太低,我有更好的实现。
方案一:简单粗暴...
关于cpu_timer具体请看:
http://blog.csdn.net/pdcxs007/article/details/参考实例为:#include
前分享过只用js实现倒计时的功能,后来测试时发现,刷新或关闭网页后,倒计时就不能用了.网上也没找到合适的解决方案,所以自己就写了个,这次的算是优化版吧,能满足刷新或重新打开网页后,倒计时依然能用
实习的时候,公司注册页面需要加上短信验证码的功能,就自己做了一个,使用的是聚合数据的短信验证SDK进行验证。首先下载短信验证码SDK,不懂的朋友自行百度聚合数据,然后配置环境,导入相关的jar包.
他的最新文章
讲师:董晓杰
讲师:姚远
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Caffe time和caffe train的区别_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
Caffe time和caffe train的区别
我有更好的答案
0 decay_mult: &upsample&: {{C}} group: {{C}}pad: {{ceil((factor - 1) / 2: &{{top_name}}&convolution_param {kernel_size, type: {{factor}}num_{{bottom_name}}& top: {{2 * factor - factor % 2}}bottom: &quot: &Deconvolution&quot, C, H.layer {name, W) by any integer factor using the following protoA common use case is with the DeconvolutionLayer acting as upsampling. You can upsample a feature map with shape of (B;bilinear& } bias_term: false}param { lr_mult.)}}weight_filler: { type: &quot
采纳率:83%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包相关文章推荐
简单的线性回归是回归理论的入门基础。简单线性回归的公式为y=wTx+by=w^Tx+b,其中y、w、x均为多维向量数据。求解线性回归,就是在已知y和x的情况下,求解参数wTw^T和b。现在我用pyth...
在做图像处理中,常用的函数接口有OpenCV中的Mat图像类,有时候需要直接用二维指针开辟内存直接存储图像数据,有时候需要用到CxImage类存储图像。本文主要是总结下这三类存储方式之间的图像数据的转...
转自denny402
改网络结构
cifar_quick_train_test.prototxt 和 caffenet的trian_val.prototxt
5.1 其他常用层参...
本文部分内容来源于CDA深度学习实战课堂,由唐宇迪老师授课
如果你企图用CPU来训练模型,那么你就疯了…
训练模型中,最耗时的因素是图像大小size,一般227*227用CPU来训练的话,训练1万次可...
caffe中的train_val.prototxt的文件的理解
原文地址:http://blog.csdn.net/cyh_24/article/details/
solver.prototxt
net: "models/bvlc_alex...
做的标签文件如下:(无打乱)
image/Audi/000001.jpg 0
image/Audi/000002.jpg 0
image/Audi/000003.jpg 0
image/Audi/00...
本文以CaffeNet为例:
在刚开始学习的时候,觉得train_val.prototxt文件和deploy.prototxt文件很相似,然后当时想尝试利用deploy.prototxt还原出trai...
使用自己的数据集“煮caffe”时候需要生成train.txt 和 val.txt。但是,没有找到一个有效的方法。今天跟大家分享一下使用shell自动生成train.txt 和 val.txt
他的最新文章
讲师:董晓杰
讲师:姚远
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)  caffe虽然已经安装了快一个月了,但是caffe使用进展比较缓慢,果然如刘老师说的那样,搭建起来caffe框架环境比较简单,但是完整的从数据准备-&模型训练-&调参数-&合理结果需要一个比较长的过程,这个过程中你需要对caffe中很多东西,细节进行深入的理解,这样才可以知道为什么能有这样的结果,在训练或者fine-tuning时知道针对调整的方法。下面针对caffe中的使用进行讲解。
  在使用过程中,caffe官网上提供了详细的使用说明,如果感觉仍然存在一些困难,可以使用谷歌或百度搜索自己遇到的问题和想要了解的过程进行搜索学习。
一、Caffe模型基本组成
想要训练一个caffe模型,需要配置两个文件,包含两个部分:网络模型,参数配置,分别对应***.prototxt , ****_solver.prototxt文件
Caffe模型文件讲解:
预处理图像的leveldb构建
输入:一批图像和label (2和3)
输出:leveldb (4)
指令里包含如下信息:
conver_imageset (构建leveldb的可运行程序)
train/ (此目录放处理的jpg或者其他格式的图像)
label.txt (图像文件名及其label信息)
输出的leveldb文件夹的名字
CPU/GPU (指定是在cpu上还是在gpu上运行code)
CNN网络配置文件
Imagenet_solver.prototxt (包含全局参数的配置的文件)
Imagenet.prototxt (包含训练网络的配置的文件)
Imagenet_val.prototxt (包含测试网络的配置文件)
网络模型:即定义你网络的每一层,下图是用caffe中 /python/draw_net.py画出的的siamese的模型,非常清晰
层包含:(以LeNet为例)
DATA:一般包括训练数据和测试数据层两种类型。 一般指输入层,包含source:数据路径,批处理数据大小batch_size,scale表示数据表示在[0,1],0.即 1/255
训练数据层:
name: "mnist"
type: "Data"
top: "data"
top: "label"
phase: TRAIN
transform_param {
data_param {
source: "examples/mnist/mnist_train_lmdb"
batch_size: 64
backend: LMDB
测试数据层:
name: "mnist"
type: "Data"
top: "data"
top: "label"
phase: TEST
transform_param {
data_param {
source: "examples/mnist/mnist_test_lmdb"
batch_size: 100
backend: LMDB
CONVOLUATION:卷积层,blobs_lr:1 , blobs_lr:2分别表示weight 及bias更新时的学习率,这里权重的学习率为solver.prototxt文件中定义的学习率真,bias的学习率真是权重学习率的2倍,这样一般会得到很好的收敛速度。
num_output表示滤波的个数,kernelsize表示滤波的大小,stride表示步长,weight_filter表示滤波的类型
name: "conv1"
type: "Convolution"
bottom: "data"
top: "conv1"
lr_mult: 1 //weight学习率
lr_mult: 2 //bias学习率,一般为weight的两倍
convolution_param {
num_output: 20
//滤波器个数
kernel_size: 5
weight_filler {
type: "xavier"
bias_filler {
type: "constant"
POOLING: 池化层
name: "pool1"
type: "Pooling"
bottom: "conv1"
top: "pool1"
pooling_param {
kernel_size: 2
INNER_PRODUCT: 其实表示全连接,不要被名字误导
name: "ip1"
type: "InnerProduct"
bottom: "pool2"
top: "ip1"
lr_mult: 1
lr_mult: 2
inner_product_param {
num_output: 500
weight_filler {
type: "xavier"
bias_filler {
type: "constant"
RELU:激活函数,非线性变化层 max( 0 ,x ),一般与CONVOLUTION层成对出现
name: "relu1"
type: "ReLU"
bottom: "ip1"
top: "ip1"
name: "loss"
type: "SoftmaxWithLoss"
bottom: "ip2"
bottom: "label"
top: "loss"
参数配置文件:
***_solver.prototxt文件定义一些模型训练过程中需要到的参数,比较学习率,权重衰减系数,迭代次数,使用GPU还是CPU等等
# The train/test net protocol buffer definition
net: "examples/mnist/lenet_train_test.prototxt"
# test_iter specifies how many forward passes the test should carry out.
# In the case of MNIST, we have test batch size 100 and 100 test iterations,
# covering the full 10,000 testing images.
test_iter: 100
# Carry out testing every 500 training iterations.
test_interval: 500
# The base learning rate, momentum and the weight decay of the network.
base_lr: 0.01
momentum: 0.9
weight_decay: 0.0005
# The learning rate policy
lr_policy: "inv"
gamma: 0.0001
power: 0.75
# Display every 100 iterations
display: 100
# The maximum number of iterations
max_iter: 10000
# snapshot intermediate results
snapshot: 5000
snapshot_prefix: "examples/mnist/lenet"
# solver mode: CPU or GPU
solver_mode: GPU
device_id: 0
#在cmdcaffe接口下,GPU序号从0开始,如果有一个GPU,则device_id:0
&训练出的模型被存为***.caffemodel,可供以后使用。
二、使用caffe训练模型包含以下几个步骤:
在caffe中使用数据来对机器学习算法进行训练时,首先需要了解基本数据组成。不论使用何种框架进行CNNs训练,共有3种数据集:
Training Set:用于训练网络
Validation Set:用于训练时测试网络准确率
Test Set:用于测试网络训练完成后的最终正确率
重建lmdb/leveldb文件,caffe支持三种数据格式输入:images, levelda, lmdb
Caffe生成的数据分为2种格式:Lmdb和Leveldb
它们都是键/值对(Key/Value Pair)嵌入式数据库管理系统编程库。
虽然lmdb的内存消耗是leveldb的1.1倍,但是lmdb的速度比leveldb快10%至15%,更重要的是lmdb允许多种训练模型同时读取同一组数据集。
因此lmdb取代了leveldb成为Caffe默认的数据集生成格式。
定义name.prototxt , name_solver.prototxt文件
三、caffe中比较有用且基础的接口(cmdcaffe)
注:在使用cmdcaffe时,需要默认切换到Caffe_Root文件夹下
1、训练模型,以mnist为例子
./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt
注:caffe官网上给的例子不能直接执行,需要使用上述命令才可以使用tools下的caffe接口,因为caffe默认都需要从根目录下面执行文件。
2、观察各个阶段的运行时间可以使用
./build/tools/caffe time --model=models/bvlc_reference_caffenet/train_val.prototxt
3、使用已有模型提取特征
./build/tools/extract_features.bin models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel examples/_temp/imagenet_val.prototxt conv5 examples/_temp/features 10
&conv5表示提取第五个卷积层的特征, examples/_temp/feaures表示存放结果的目录(这里的目录需要提前构建好)
4、对已有模型进行find-tuning,比如我们现在有一个1000类的分类模型,但目前我们的需求仅是20类,此时我们不需要重新训练一个模型,只需要将最后一层换成20类的softmax层,然后使用已有数据对原模型进行fine-tuning即可
  在很多时候,使用Caffe框架学习深度学习模型时,从ImageNet或者其他大型数据集从头开始训练获得一个fine-tuing合适的模型难度太大,这时候最好的情况,就是在已经训练好的模型上面来进行fine-tuning,通过这些过程可以加深自己对深度学习,以及对caffe使用的了解和熟悉,以方便自己在后续提出自己的模型,自己进行模型训练和fine-tuning的过程。
已经训练好的caffe模型可以在git的caffe项目中下载,比较经典的模型有:AlexNet.caffemodel , LeNet.caffemodel , RCnn.caffemodel,其他的大家可以在caffe的git官网上面下载。
使用自己的数据集对已经训练好的模型进行fine-tuning的操作(使用cmdcaffe接口来进行):
./build/tools/caffe train -solver models/finetune_flickr_style/solver.prototxt -weights models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel -gpu 0[option] 2&&1 | tee log.txt
第一个参数:选择好caffe模块
train:选取train函数
后面接具体的参数,分别为配置命令,配置文件路径,fine-tuning命令,fine-tuning依赖的基准模型文件目录,选用的训练方式:gpu或者cpu,使用cpu时可以默认不写
注:fine-tuning的过程与训练过程类似,只是在调用caffe接口时的命令不同,因此在fine-tuning之前,仍然需要按照训练流程准备数据。
下载数据-&生成trainset和testset-&生成db-&设置好路径-&fine-tuning。
5、还有一个是python下面的接口,draw_net.py可以根据.prototxt文件将模式用图示的方法表示出来,博文开始的模型图即用该接口所绘
./python/draw_net.py ./examples/siamese/mnist_siamese.prototxt
./examples/siamese/mnist_siamese.png
使用该接口进行网络的绘制示例化
&第一个参数为模型文件,第二个参数为所绘模型图的保存地址
深度学习中batch_size的作用:
在深度学习训练过程中,有两种训练方法,一种意识batch ,一种是stochastic训练方法
solver:使用forward和backward接口来更新参数,并迭代对loss进行降低(定义的优化方法,有stochastic gradient descent,SGD;Adaptive gradient ,NAG和Scaffolding)
solver作用:(指定优化方法)
1.可以逐步对网络寻优,创建训练得到的网络,并对测试网络进行评价;
2.通过调用forward和backward来对网络参数进行迭代寻优;
3.周期性更新网络;
4.记录网络训练中间过程,寻优过程中记录状态
Caffe网络模型文件分析:
一个完整的基于caffe的网络模型,应该包含以下几个文件:
其中,deploy.prototxt是用来在网络完成训练之后进行部署的(其他深度学习框架导入caffemodel文件时,也是以此为原型),solver.prototxt用于设定网络训练时的参数,train_val.prototxt用于对网络进行训练的模型定义,*.caffemodel是预训练好的网络模型,存储网络中的参数。
caffe和theano以及lasagne转化过程中的一些基础知识:
在caffe结构中,在convLayer层中有group这样一个参数,该参数来自于经典的ImageNet论文,关于group参数,yangqing给的解释为:
It was there to implement the grouped convolution in Alex Krizhevsky's paper: when group=2, the first half of the filters are only connected to the first half of the input channels, and the second half only connected to the second half.
即当group=2时,filter的前半部分同输入连接,后半部分同后半部分的filter连接,而在lasagne中并没有对应的该参数,因此需要使用官方给定的函数接口来进行实现。
参考博客:
阅读(...) 评论()转:&学习笔记:Caffe上配置和运行MNIST
MNIST,一个经典的手写数字库,包含60000个训练样本和10000个测试样本,图片大小28*28,在Caffe上配置的第一个案例
1首先,获取minist的数据包。
这个版本是四个数据包
$CAFFE_ROOT
./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh
在这一步做了什么工作呢?
create_mnist.sh是利用caffe-master/build/examples/mnist/的convert_mnist_data.bin工具,将mnist
date转化为可用的lmdb格式的文件。并将新生成的2个文件mnist-train-lmdb 和
mnist-test-lmdb放于create_mnist.sh同目录下。
数据准备好了,那么接下来的工作就是训练了。
http://caffe.berkeleyvision.org/gathered/examples/mnist.html
给出来的例子是&
./examples/mnist/train_lenet.sh
这个脚本调用的工具如下:
还有其他的示例,如:
./examples/mnist/train_mnist_autoencoder.sh
这个脚本调用的工具如下:&
运行完结果如下:
生成四个文件
lenet_iter_10000.caffemodel & &
lenet_iter_10000.solverstate & &
lenet_iter_5000.caffemodel & &
lenet_iter_5000.solverstate&
屏幕显示每次
.......................
I:32.90 solver.cpp:246] Iteration 10000, loss =
I:32.90 solver.cpp:264] Iteration 10000,
Testing net (#0)
I:40.90 solver.cpp:315] &
& Test net output #0: accuracy = 0.9903
I:40.90 solver.cpp:315] &
& Test net output #1: loss = 0.0309918 (* 1 =
0.0309918 loss)
I:40.90 solver.cpp:251] Optimization
I:40.90 caffe.cpp:121] Optimization
首先讨论训练的网络模型:LeNet: the MNIST Classification Model
LeNet 模型之前在手写识别上就有非常好的表现。caffe 这里提供的是一个改进版的LeNet模型,其中的 sigmoid
被rectified linear units (ReLUs) 替换。
(标准的sigmoid输出不具备稀疏性,需要用一些惩罚因子来训练出一大堆接近0的冗余数据来,从而产生稀疏数据,例如L1、L1/L2或Student-t作惩罚因子。因此需要进行无监督的预训练。多层的神经网络如果用sigmoid或tanh激活函数也不做pre-training的话会因为
gradient vanishing problem
而会无法收敛。ReLU则这没有这个问题。ReLU是线性修正,公式为:g(x)&= max(0,
x),是purelin的折线版。它的作用是如果计算出的值小于0,就让它等于0,否则保持原来的值不变。这是一种简单粗暴地强制某些数据为0的方法,然而经实践证明,训练后的网络完全具备适度的稀疏性。而且训练后的可视化效果和传统方式预训练出的效果很相似,这也说明了ReLU具备引导适度稀疏的能力。
来自讨论)
LeNet的结构和CNN的结构是由相似之处的,是由两个 convolutional layer 和 pooling layer交错连接
,然后两个fully&connected layers结构组成。
&具体可参见,此外DeepID
有个简单直观的结构图,可以辅助了解&
定义MNIST网络和MNIST Solver:
./examples/mnist/train_lenet.sh&脚本调用的指令我们就可以看到,solver是定义在了$CAFFE_ROOT/examples/mnist/lenet_solver.prototxt
再看一下./examples/mnist/train_mnist_autoencoder.sh
调用的&mnist_autoencoder_solver.prototxt
&的solver定义&
当所有数据都训练好之后,接下来就是如何将模型应用到实际数据了:
./build/tools/caffe.bin test
-model=examples/mnist/lenet_train_test.prototxt
-weights=examples/mnist/lenet_iter_10000.caffemodel
如果没有GPU则使用
./build/tools/caffe.bin test
-model=examples/mnist/lenet_train_test.prototxt
-weights=examples/mnist/lenet_iter_10000.caffemodel
test:表示对训练好的模型进行Testing,而不是training。其他参数包括train, time,
device_query。
-model=XXX:指定模型prototxt文件,这是一个文本文件,详细描述了网络结构和数据集信息。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 caffe train gpu 的文章

 

随机推荐