caffe-windows之网络描述文件和参数配置文件注释(mnist例程)
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例程)的更多相关文章
- 利用caffe生成 lmdb 格式的文件,并对网络进行FineTuning
利用caffe生成 lmdb 格式的文件,并对网络进行FineTuning 数据的组织格式为: 首先,所需要的脚本指令路径为: /home/wangxiao/Downloads/caffe-maste ...
- 【caffe】绘制网络结构图
@tags caffe 网络结构 可视化 当拿到一份网络定义文件net.prototxt,可以用工具画出网络结构.最快速的方法是使用在线工具netscope,粘贴内容后shift+回车就可以看结果了. ...
- windows C++ 网络编程
转载:https://blog.csdn.net/yao_hou/article/details/91400832 https://blog.csdn.net/Ctrl_qun/article/li ...
- mac与windows通过ftp传输文件
1.两个系统相互传文件,比较通用的方式是用QQ,两台电脑一台各登陆一个qq,发文件就行了,在同一个网段时,qq会自动转换为按局域网的方式传输. 2.本人不愿安装qq,以ftp方式进行传输,先在wndo ...
- Caffe fine-tuning 微调网络
转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ 目前呢,caffe,theano,torch是当下比较流行的De ...
- Windows、Linux下文件操作(写、删除)错误的产生原因、及解决方法
catalog . 引言 . Linux平台上涉及的File IO操作 . Windows平台上涉及的File IO操作 0. 引言 本文试图讨论在windows.linux操作系统上基于C库进行文件 ...
- caffe windows学习:第一个测试程序
caffe windows编译成功后,就可以开始进行测试了.如果还没有编译成功的,请参考:caffe windows 学习第一步:编译和安装(vs2012+win 64) 一般第一个测试都是建议对手写 ...
- [转载]解析WINDOWS中的DLL文件---经典DLL解读
[转载]解析WINDOWS中的DLL文件---经典DLL解读 在Windows世界中,有无数块活动的大陆,它们都有一个共同的名字——动态链接库.现在就走进这些神奇的活动大陆,找出它们隐藏已久的秘密吧! ...
- Caffe训练AlexNet网络,精度不高或者为0的问题结果
当我们使用Caffe训练AlexNet网络时,会遇到精度一值在低精度(30%左右)升不上去,或者精度总是为0,如下图所示: 出现这种情况,可以尝试使用以下几个方法解决: 1.数据样本量是否太少,最起码 ...
随机推荐
- Python操作hdfs
Python直接操作hdfs,包括追加数据文件到hdfs文件 #!coding:utf-8 import sys from hdfs.client import Client #设置utf-8模式 r ...
- 获取当前按钮或者html的ID名称
今天做的上传图片,点击图片删除. 随机给图片id,获取图片id,然后删除图片. 由于图片id是随机的,用点击img或者点击class,获取id都不行,最后用onclick事件获取. js代码如下: $ ...
- scrapy 请求和响应
scrapy Request类的一些参数意义 url: 就是需要请求,并进行下一步处理的url callback: 指定该请求返回的Response,由那个函数来处理. method: 一般不需要指定 ...
- JavaWeb学习笔记(四)—— response
一.response概述 response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse.在客户端发出每个请求时,服 ...
- svn学习笔记(二)
一.TortoiseSVN日常使用 1.1 浏览仓库 Repo-browser : 浏览仓库中资源信息 1.2 导入导出 Export :导出项目 ,和checkout区别 (checkout检出后文 ...
- struts2学习笔记(五)—— OGNL
一.OGNL概述 1.1 什么是OGNL OGNL的全称是对象图导航语言( object-graph Navigation Language),它是一种功能强大的开源表达式语言,使用这种表达式语言,可 ...
- PHP 位运算符
位运算符 位运算符是指对二进制位从低位到高位对齐后进行运算. 符号 作用 举例 个人理解 & 按位与 $m & $n 全1为1,否则为0 | 按位或 $m | $n 全0为0,有1为1 ...
- Windows 环境 ABP前端运行 ng test 无法执行
Command: ng test Error Information: Schema validation failed with the following errors: Data path &q ...
- SPOJ - LOCKER 数论 贪心
题意:求出\(n\)拆分成若干个数使其连乘最大的值 本题是之江学院网络赛的原题,计算规模大一点,看到EMAXX推荐就做了 忘了大一那会是怎么用均值不等式推出结果的(还给老师系列) 结论倒还记得:贪心分 ...
- Hibernate处理一个实体映射多张相同结构的数据表--动态映射
[转自] http://blog.csdn.net/majian_1987/article/details/8725197 LZ在项目中需要处理这样一个业务,每天都有终端设备上传GPS位置信息到服务端 ...