Caffe框架,了解三个文件
2015-09-30 11:33
399 查看
不知道从什么时候开始,Deep Learning成为了各个领域研究的热点,也不知道从什么时候开始,2015CVPR的文章出现了很多Deep Learning的文章,更不知道从什么时候开始,三维重建各个研究方向也要被Deep Learning攻破了。
从这个时候开始,我要开始学习Deep Learning了,因为我研究的方向已然被攻破!
以上是引言部分,下面开始介绍本文的内容。
我前段时间已经配置好Caffe这个框架,现在来摸索一下。本文分为两个部分,第一部分说明学习Caffe框架需要重点记住那些文件;第二部分使用Caffe框架对MNIST数据集进行训练学习。
一. Caffe框架文件
以‘$root’作为Caffe的主目录,以MNIST数据集训练学习作为例子,我觉得只要掌握三个文件就够了:
1. train_lenet.sh $root /examples/mnist/train_lenet.sh
使用caffe调用lenet_solver.prototxt进行train,’.prototxt’是一种文本文件,这里需要知道的是lenet_solver.prototxt是CNN网络学习的核心,下面我们将要学习它。
2. lenet_solver.prototxt $root /examples/mnist/lenet_solver.prototxt
net: “examples/mnist/lenet_train_test.prototxt”是网络结构设置,其他部分是参数设置,看注释就很明白了。
3. lenet_train_test.prototxt $root /examples/mnist/lenet_train_test.prototxt
这是各层网络的设置,看内容就知道了。需要注意的是,include {phase: TEST}是指测试网络,未标明的是train和test都可以使用。
二. MNIST数据集进行训练学习
get_mnist.sh下载MNIST数据集
create_mnist.sh将MNIST数据转换为lmdb格式的数据
在网络中的数据存储和操作是以Blobs形式
train_lenet.sh训练
参考:http://caffe.berkeleyvision.org/gathered/examples/mnist.html
从这个时候开始,我要开始学习Deep Learning了,因为我研究的方向已然被攻破!
以上是引言部分,下面开始介绍本文的内容。
我前段时间已经配置好Caffe这个框架,现在来摸索一下。本文分为两个部分,第一部分说明学习Caffe框架需要重点记住那些文件;第二部分使用Caffe框架对MNIST数据集进行训练学习。
一. Caffe框架文件
以‘$root’作为Caffe的主目录,以MNIST数据集训练学习作为例子,我觉得只要掌握三个文件就够了:
1. train_lenet.sh $root /examples/mnist/train_lenet.sh
#!/usr/bin/env sh ./build/tools/caffe train --solver=examples/mnist/lenet_solver.prototxt
使用caffe调用lenet_solver.prototxt进行train,’.prototxt’是一种文本文件,这里需要知道的是lenet_solver.prototxt是CNN网络学习的核心,下面我们将要学习它。
2. lenet_solver.prototxt $root /examples/mnist/lenet_solver.prototxt
# 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
net: “examples/mnist/lenet_train_test.prototxt”是网络结构设置,其他部分是参数设置,看注释就很明白了。
3. lenet_train_test.prototxt $root /examples/mnist/lenet_train_test.prototxt
name: "LeNet" layer { name: "mnist" type: "Data" top: "data" top: "label" include { phase: TRAIN } transform_param { scale: 0.00390625 } data_param { source: "examples/mnist/mnist_train_lmdb" batch_size: 64 backend: LMDB } } layer { name: "mnist" type: "Data" top: "data" top: "label" include { phase: TEST } transform_param { scale: 0.00390625 } data_param { source: "examples/mnist/mnist_test_lmdb" batch_size: 100 backend: LMDB } } layer { name: "conv1" type: "Convolution" bottom: "data" top: "conv1" param { lr_mult: 1 } param { lr_mult: 2 } convolution_param { num_output: 20 kernel_size: 5 stride: 1 weight_filler { type: "xavier" } bias_filler { type: "constant" } } } layer { name: "pool1" type: "Pooling" bottom: "conv1" top: "pool1" pooling_param { pool: MAX kernel_size: 2 stride: 2 } } layer { name: "conv2" type: "Convolution" bottom: "pool1" top: "conv2" param { lr_mult: 1 } param { lr_mult: 2 } convolution_param { num_output: 50 kernel_size: 5 stride: 1 weight_filler { type: "xavier" } bias_filler { type: "constant" } } } layer { name: "pool2" type: "Pooling" bottom: "conv2" top: "pool2" pooling_param { pool: MAX kernel_size: 2 stride: 2 } } layer { name: "ip1" type: "InnerProduct" bottom: "pool2" top: "ip1" param { lr_mult: 1 } param { lr_mult: 2 } inner_product_param { num_output: 500 weight_filler { type: "xavier" } bias_filler { type: "constant" } } } layer { name: "relu1" type: "ReLU" bottom: "ip1" top: "ip1" } layer { name: "ip2" type: "InnerProduct" bottom: "ip1" top: "ip2" param { lr_mult: 1 } param { lr_mult: 2 } inner_product_param { num_output: 10 weight_filler { type: "xavier" } bias_filler { type: "constant" } } } layer { name: "accuracy" type: "Accuracy" bottom: "ip2" bottom: "label" top: "accuracy" include { phase: TEST } } layer { name: "loss" type: "SoftmaxWithLoss" bottom: "ip2" bottom: "label" top: "loss" }
这是各层网络的设置,看内容就知道了。需要注意的是,include {phase: TEST}是指测试网络,未标明的是train和test都可以使用。
二. MNIST数据集进行训练学习
cd $root ./data/mnist/get_mnist.sh ./examples/mnist/create_mnist.sh ./examples/mnist/train_lenet.sh
get_mnist.sh下载MNIST数据集
create_mnist.sh将MNIST数据转换为lmdb格式的数据
在网络中的数据存储和操作是以Blobs形式
train_lenet.sh训练
参考:http://caffe.berkeleyvision.org/gathered/examples/mnist.html
相关文章推荐
- web-js入门
- eval、json.parse()的介绍和使用注意点
- jstl fmt:formatNumber 数字货币格式化
- ReactiveCocoa 和 MVVM 入门
- jsp语法 指令 内置对象
- 前端自动化开发之grunt
- JavaScript(一)
- 通过前端获取客户端ip和所在城市,并在后端获得这些值
- JSP学习笔记之基础语法
- JSON.parse()和eval()的区别
- js 一个等号"=" 二个等号"==" 三个等号"===" 的区别
- OutputStreamWriter和BufferedWriter疑惑
- jquery 实现 div 拖动效果
- CSS立体标签实现
- css圆形图片处理示例(方形图片变圆形图片)
- 浅谈HTML5的Camera API
- JS实现密码加密
- NIO简介、缓冲区与Buffer
- Reactivecoco 文档翻译(1) 基本操作方法
- Features/Snapshots