caffe的prototxt文件
caffe的prototxt文件
data_layer
1、Data层
layer {name: "cifar"type: "Data"top: "data"top: "label"include {phase: TRAIN}transform_param {mean_file: "examples/cifar10/mean.binaryproto"}data_param {source: "examples/cifar10/cifar10_train_lmdb"batch_size: 100backend: LMDB}
}
name任取,表示这一层的名字
type:层类型,如果是Data,表示数据来源是LevelDB后者LMDB,根据数据来源的不同,数据层的类型也不同,有些还是从磁盘中存储hdf5或者图片格式。
top和bottom:top为此层输出,bottom为此层输入,在数据层中,至少有一个命名为data的top。如果有第二个top,一般命名为label。这种(data, label)的配对是分类模型所必需的。
include:一般训练和测试的时候,模型的参数有些不一样。所以这个是用来指定该数据层是属于训练阶段或者测试阶段的层。若未指定,则该层既用在训练模型又用在测试模型上。
transform_param:数据的预处理,可以将数据变换到定义的范围内。如设置scale为0.00390625,实际上就是1/255,即将输入数据由0255归一化到01之间。
data_param:根据数据来源的不同,来进行不同的设置。必须设置的参数有source和batch_size,source包含数据库的目录名字,batch_size就是每次处理的数据个数。可选参数有rand_skip和backend,backend是选择采用LevelDB还是LMDB,默认是LevelDB【这个应该是选择数据库引擎】
vision_layer
【Convolution、Pooling】
2、Convolution层
layer {name: "conv1"type: "Convolution"bottom: "data"top: "conv1"param {lr_mult: 1decay_mult: 1}param {lr_mult: 2decay_mult: 0}convolution_param {num_output: 96kernel_size: 11stride: 4pad: 2weight_filler {type: "gaussian"std: 0.01 #标准差:distribution with stdev 0.01(default mean: 0)}bias_filler {type: "constant"value: 0}}
}
lr_mult:学习率的系数,最终的学习率是这个数乘以solver.prototxt配置文件中的base_lr。如有两个lr_mult,则第一个表示权值w的学习率,第二个表示偏置项的学习率。一般偏置项的学习率是权值学习率的两倍。
必须设置的参数有:
num_output:卷积核的个数
kernel_size:卷积核的大小,如果kernel_size长宽不一样,则需要通过kernel_h,kernel_w分别设定。
其他参数:
stride:卷积核的步长,默认为1, 也可以用stride_h, stride_w来设置。
pad
weight_filter:权值初始化。默认为“constant”,值权威0,很多时候我们用“xavier”算法来进行初始化,也可以设置为“gaussian”
bias_filter:偏置项的初始化,一般设置为“constant”,值全为0。
bias_term:是否开启偏置项,默认为true
group:分组,默认为1组。如果大于1,我们限制卷积的连接操作在一个子集里。
pooling层
layer {name: "pool1"type: "Pooling"bottom: "conv1"top: "pool1"pooling_param {pool: MAXkernel_size: 3stride: 2}
}
4、Local Response Normalization层
LRN是对一个局部的输入进行的归一化操作。【貌似现在不怎么用了】
5、im2col层
在caffe中,卷积运算就是先对数据矩阵进行im2col操作,在进行内积运算,这样做,会比原始的卷积操作更快。
common_layer
【InnerProductLayer、SplitLayer、FlattenLayer、ConcatLayer、SilenceLayer、(Elementwise Operations)这个是我们常说的激活函数层Activation Layers、EltwiseLayer、SoftmaxLayer、ArgMaxLayer、MVNLayer】
6、inner_product层(FC)
layers {name: "fc8"type: "InnerProduct"blobs_lr: 1 # learning rate multiplier for the filtersblobs_lr: 2 # learning rate multiplier for the biasesweight_decay: 1 # weight decay multiplier for the filtersweight_decay: 0 # weight decay multiplier for the biasesinner_product_param {num_output: 1000weight_filler {type: "gaussian"std: 0.01}bias_filler {type: "constant"value: 0}}bottom: "fc7"top: "fc8"
7、accuracy
layer {name: "accuracy"type: "Accuracy"bottom: "ip2"bottom: "label"top: "accuracy"include {phase: TEST}
}
accuracy只在test有,因此要设置include为TEST。输出分类(预测)的精确度。
8、reshape
layer {name: "reshape"type: "Reshape"bottom: "input"top: "output"reshape_param {shape {dim: 0 # copy the dimension from belowdim: 2dim: 3dim: -1 # infer it from the other dimensions}}}
有一个可选的参数组shape,用于指定blob数据的各维的值(blob是一个四维的数据nxcxwxh)
"dim:0"表示维度不变,即输入和输出是一样的维度。"dim:-1"表示由系统自动计算维度。数据总量不变,系统根据其他三维来确定这一维。
9、dropout
layer {name: "drop7"type: "Dropout"bottom: "fc7-conv"top: "fc7-conv"dropout_param {dropout_ratio: 0.5 #只需要设置一个dropout_ratio参数即可}
}
Neuron_layer
10、Sigmoid
layer {name: "encode1neuron"bottom: "encode1"top: "encode1neuron"type: "Sigmoid"
}
11、ReLU/Rectified-linear and Leaky-ReLU
layers {
name: "relu1"
type: RELU
bottom: "conv1"
top: "conv1"
}
loss_layer
【待续,还有很多的】
16、softmax-loss
layer {name: "loss"type: "SoftmaxWithLoss"bottom: "ip1"bottom: "label"top: "loss"
}
ps:
solver算是caffe核心的核心,它协调着整个模型的运作,caffe程序运行必须带一个参数就是solver配置文件。
caffe提供了六种优化算法来求解最优解,在solver配置文件中,通过设置type类型来选择
Stochastic Gradient Descent (type: "SGD"),
AdaDelta (type: "AdaDelta"),
Adaptive Gradient (type: "AdaGrad"),
Adam (type: "Adam"),
Nesterov’s Accelerated Gradient (type: "Nesterov") and
RMSprop (type: "RMSProp")
Solver的流程:
1. 设计好需要优化的对象,以及用于学习的训练网络和用于评估的测试网络。(通过调用另外一个配置文件prototxt来进行)2. 通过forward和backward迭代的进行优化来跟新参数。3. 定期的评价测试网络。 (可设定多少次训练后,进行一次测试)4. 在优化过程中显示模型和solver的状态
#每一次的迭代过程
• 1、调用forward算法来计算最终的输出值,以及对应的loss
• 2、调用backward算法来计算每层的梯度
• 3、根据选用的slover方法,利用梯度进行参数更新
• 4、记录并保存每次迭代的学习率、快照,以及对应的状态。
caffe的prototxt文件相关推荐
- 浅谈caffe中train_val.prototxt和deploy.prototxt文件的区别
浅谈caffe中train_val.prototxt和deploy.prototxt文件的区别 标签: caffe深度学习CaffeNet 2016-11-02 16:10 1203人阅读 评论(1) ...
- caffe中solver.prototxt文件参数解释
在训练或者微调网络时我们需要设置一些参数,在caffe中这些参数保存在sovler.prototxt文件中(当然这只是一个文件名,你也可以随意换成其他的名称).在下面的代码中以注释的形式解释每一个参数 ...
- caffe将用训练好的caffemodel和train_val.prototxt文件分类新的一张图片-下篇--caffe学习(7)
接上篇caffe将用训练好的caffemodel和train_val.prototxt文件分类新的一张图片-上篇 得到deploy.prototxt文件之后,我们可以自己编写python代码实现对单个 ...
- 利用prototxt文件绘制网络的结构图
本文转自:http://blog.csdn.net/u014568921/article/details/53947006 如何对prototxt文件绘制网络的结构图 caffe 使能python接口 ...
- 根据 *_train_test.prototxt文件生成 *_deploy.prototxt文件
根据 *_train_test.prototxt文件生成 *_deploy.prototxt文件 发表于2016/8/6 19:43:11 1218人阅读 本文参考博文 (1)介绍 *_tra ...
- train_val.prototxt文件和deploy.prototxt文件开头的区别
1.开头不同 对train_val.prototxt文件来说,开头部分定义训练和测试的网络及参数 对deploy.prototxt文件来说,开头部分定义实际运用场景的配置文件,其参数不定义数据来源,仅 ...
- caffe中通过prototxt文件查看神经网络模型结构的方法
在修改propotxt之前我们可以对之前的网络结构进行一个直观的认识: 可以使用http://ethereon.github.io/netscope/#/editor 这个网址. 将propotxt文 ...
- solver.prototxt文件里面参数含义及其设置
solver 是caffe的核心之重,它是整个模型运行的参数配置文件.运行代码一般为: #caffe train --solver=*_solver.prototxt 在DL中,损失函数(loss f ...
- caffe:无法读取文件cuda8.0.props
在使用VS2015导入老版本的caffe程序时候,导入一个solution的多个工程,其中一个project不能导入,出现: 无法读取文件 cuda8.0.props 错误, 问题:新的win10 系 ...
最新文章
- excel模糊匹配两列文字_高效便捷的Word、Excel操作技巧
- 一个ioc例子jdk和spring版本导致问题
- ado.net 插入一条数据
- UE4学习-材质快捷键及材质帮助手册
- 设计模式学习笔记——命令(Command)模式
- 解决Mac没有任何来源问题
- list去除重复值的方法(面试高频)
- C语言小程序显示心形,如何用vc6.0编出来一个心形
- JAVA操作文件大全(一)
- java打印菱形图案
- 开始学习 limodou 的 Django step by step 了
- 2018百战程序员大数据全套教程
- ​新手到底如何入门PLC?
- 速读原著-TCP/IP(Archie、WAIS、Gopher、Veronica和WWW)
- msf生成windows后门程序
- 如果楼市崩盘,我们怎么活?
- 联想Lephone与Apple iPAD的完美组合
- 利用SUS实现自动补丁管理
- 西北师范大学计算机科学与工程学院院长,西北师范大学计算机科学与工程学院.doc...
- 详译:RESIDUAL AND PLAIN CONVOLUTIONAL NEURAL NETWORKS FOR 3D BRAIN MRICLASSIFICATION