caffe-windows之网络描述文件和参数配置文件注释(mnist例程)

lenet_solver.prototxt:在训练和测试时涉及到一些参数配置,训练超参数文件

<-----lenet_solver.prototxt----->

# The train/test net protocol buffer definition 网络配置文件的位置
net: "examples/mnist/lenet_train_test.prototxt" # 训练阶段迭代次数,这个要与test layer中的batch_size结合起来理解。
# mnist数据中测试样本总数为10000,一次性执行全部数据效率很低,因此我们将测试数据分成几个批次来执行,每个批次的数量就是batch_size。
# 假设我们设置batch_size为100,则需要迭代100次才能将10000个数据全部执行完,因此test_iter设置为100。执行完一次全部数据,称之为一个epoch。test_iter*test batch size =10000
test_iter: 100 # Carry out testing every 500 training iterations.每训练500次,进行一次测试
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 //迭代100次 打印输出一次结果 # The maximum number of iterations
max_iter: 10000 //最大迭代数 # snapshot intermediate results
# 快照,将训练出来的model和solver状态进行保存,snapshot用于设置训练多少次后进行保存,默认为0,不保存。snapshot_prefix设置保存路径。
snapshot: 5000
snapshot_prefix: "examples/mnist/lenet" # solver mode: CPU or GPU // 使用CPU还是GPU
solver_mode: GPU //打开GPU <-----lenet_solver.prototxt在训练和测试时涉及到一些参数配置-----> name: "LeNet" // 网络的名称为 LeNet

lenet_train_test.prototxt:定义网络每一层以及网络整体的结构,这里讲得很具体参考

<-----lenet_train_test.prototxt----->

	//  训练时数据层的定义
layer { // 定义一个网络层(Layer)
name: "mnist" // 该网络层的名称为 mnist
type: "Data" // 该网络层的类型是数据层
top: "data" // 层的输出有两个: data 和 label
top: "label"
include {
phase: TRAIN // 该层参数只在训练阶段有效
}
transform_param {
scale: 0.00390625 //将输入图像数据归一化为0-1,参数为1/255
}
data_param { // 数据层参数
source: "examples/mnist/mnist_train_lmdb" //LMDB路径
batch_size: 64 // 一次训练的样本数
backend: LMDB //读入的训练数据格式,默认leveldb
}
} // 测试(预测)时数据层的定义
layer {
name: "mnist"
type: "Data"
top: "data"
top: "label"
include {
phase: TEST // 该层的参数只 test 时使用
}
transform_param {
scale: 0.00390625 // 1/255 归一化数据
}
data_param {
source: "examples/mnist/mnist_test_lmdb"//测试数据路径
batch_size: 100 // 一次测试使用100个数据
backend: LMDB
}
} // 第一卷积层的定义
layer {
name: "conv1" // 该网络层的名称
type: "Convolution" // 该网络层类型:卷积层
bottom: "data" // 输入是 data
top: "conv1" // 输出命名为 conv1
param {
lr_mult: 1 //weights的学习率与全局相同
}
param {
lr_mult: 2 //biases的学习率是全局的2倍
}
convolution_param { // 卷积参数设置
num_output: 20 // 输出 20个 featur maps
kernel_size: 5 // 卷积核 尺寸 5*5
stride: 1 // 卷积步长
weight_filler {
type: "xavier" // 指定权值参数初始化方式
}
bias_filler {
type: "constant" // bias用0初始化
}
}
} // 第一池化层的定义
layer {
name: "pool1" // 该网络层的名称
type: "Pooling" // 该网络层的类型:池化
bottom: "conv1" // 该网络层的输入
top: "pool1" // 输出的名称
pooling_param { // 池化层的参数设置
pool: MAX // 池化类型: 最大池化
kernel_size: 2 // 2*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" // 使用ReLU激活函数
bottom: "ip1" // 输入输出都是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 // 输出个数 0-9 完成分类
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
} //计算分类准确率的层,只在 test 阶段有效
layer {
name: "accuracy"
type: "Accuracy" //类型
bottom: "ip2" // 输入
bottom: "label" //输入
top: "accuracy" //输出
include {
phase: TEST //只在 test 阶段有效 }
} //损失层
layer {
name: "loss"
type: "SoftmaxWithLoss" //指定采用 SoftmaxWithLoss 损失函数
bottom: "ip2" //输入
bottom: "label" //输入
top: "loss" //输出
}

caffe-windows之网络描述文件和参数配置文件注释(mnist例程)的更多相关文章

  1. 利用caffe生成 lmdb 格式的文件,并对网络进行FineTuning

    利用caffe生成 lmdb 格式的文件,并对网络进行FineTuning 数据的组织格式为: 首先,所需要的脚本指令路径为: /home/wangxiao/Downloads/caffe-maste ...

  2. 【caffe】绘制网络结构图

    @tags caffe 网络结构 可视化 当拿到一份网络定义文件net.prototxt,可以用工具画出网络结构.最快速的方法是使用在线工具netscope,粘贴内容后shift+回车就可以看结果了. ...

  3. windows C++ 网络编程

    转载:https://blog.csdn.net/yao_hou/article/details/91400832  https://blog.csdn.net/Ctrl_qun/article/li ...

  4. mac与windows通过ftp传输文件

    1.两个系统相互传文件,比较通用的方式是用QQ,两台电脑一台各登陆一个qq,发文件就行了,在同一个网段时,qq会自动转换为按局域网的方式传输. 2.本人不愿安装qq,以ftp方式进行传输,先在wndo ...

  5. Caffe fine-tuning 微调网络

    转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ 目前呢,caffe,theano,torch是当下比较流行的De ...

  6. Windows、Linux下文件操作(写、删除)错误的产生原因、及解决方法

    catalog . 引言 . Linux平台上涉及的File IO操作 . Windows平台上涉及的File IO操作 0. 引言 本文试图讨论在windows.linux操作系统上基于C库进行文件 ...

  7. caffe windows学习:第一个测试程序

    caffe windows编译成功后,就可以开始进行测试了.如果还没有编译成功的,请参考:caffe windows 学习第一步:编译和安装(vs2012+win 64) 一般第一个测试都是建议对手写 ...

  8. [转载]解析WINDOWS中的DLL文件---经典DLL解读

    [转载]解析WINDOWS中的DLL文件---经典DLL解读 在Windows世界中,有无数块活动的大陆,它们都有一个共同的名字——动态链接库.现在就走进这些神奇的活动大陆,找出它们隐藏已久的秘密吧! ...

  9. Caffe训练AlexNet网络,精度不高或者为0的问题结果

    当我们使用Caffe训练AlexNet网络时,会遇到精度一值在低精度(30%左右)升不上去,或者精度总是为0,如下图所示: 出现这种情况,可以尝试使用以下几个方法解决: 1.数据样本量是否太少,最起码 ...

随机推荐

  1. POM很重要的3个关系

    POM有3个很重要的关系:依赖.继承.合成. 1.依赖关系 <dependencies></dependencies> 2.继承 <parent></pare ...

  2. ubtuntu 如何查看内存用量 mongostat详解

    free -h top free或者top或者cat /proc/meminfo mongostat是mongdb自带的状态检测工具,在命令行下使用.它会间隔固定时间获取mongodb的当前运行状态, ...

  3. 了解一个名词——GTD

    概念:就是Getting Things Done的缩写,翻译过来就是“把事情做完”,是一个管理时间的方法. 核心理念概括:就是必须记录下来要做的事,然后整理安排并使自己一一去执行. 五个核心原则是:收 ...

  4. Python开发MapReduce系列(一)WordCount Demo

    原创,转发请注明出处. MapReduce是hadoop这只大象的核心,Hadoop 中,数据处理核心就是 MapReduce 程序设计模型.一个Map/Reduce 作业(job) 通常会把输入的数 ...

  5. Nginx+certbot 实现泛域名的https证书

    yum -y install git git clone  https://github.com/certbot/certbot cd certbot ./certbot-auto certonly ...

  6. 校园网络安全CTF 第一题 和 你真了解我吗?

    第一题: 需要先找到相应头(REsponse header中的tips) <?php$flag = "***";if (isset($_GET['repo']))//检测变量 ...

  7. ssm框架的搭建流程

    1.新建一个Maven project (1)选中create a simple project,自动配置必要的文件 (2)Packaging选择war类型.jar和war的区别就是一个是普通的jav ...

  8. POJ - 1733 离散化 并查集

    题意:求问数列区间奇偶信息正确与否 和上一题一样(甚至弱化),加个离散就ok啦 #include<iostream> #include<algorithm> #include& ...

  9. hdu 1754 I Hate It 线段树基础题

    Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求, ...

  10. java获取缓存通用类

    1 class JedisHelper { public static <T, R> T getBySecond(String cacheKey, int seconds, R p, Fu ...