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.数据样本量是否太少,最起码 ...
随机推荐
- CDQZ Day1
#include<cassert> #include<cstdio> #include<vector> using namespace std; ,maxt=,ma ...
- 危险系数(枚举点+bfs)--------蓝桥备战系列
标题:危险系数 抗日战争时期,冀中平原的地道战曾发挥重要作用. 地道的多个站点间有通道连接,形成了庞大的网络.但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系. 我们来定 ...
- 怎样把ppt格式文件放到网页上?
方法一:把ppt文件的扩展名直接修改为pps,嵌入到网页中嵌入代码:缺点:这种方式浏览器会提示是打开,还是下载,选择打开的话会直接在浏览器中打开,并且客户端一定要安装Office PowerPoint ...
- [转] docker save与docker export的区别
[From]http://cnodejs.org/topic/59a2304f7aeedce818249eeb 很久没有写博客了,坟头草都长了老高了.写博客要靠惯性,一旦停下来时间长了,就很难再坚持下 ...
- [转] Java:对Scanner的useDelimiter()方法的疑问
[From]https://segmentfault.com/q/1010000003885362 Windows下,我们在键盘上按下Enter键,实际上输入的是回车和换行两个字符:\r\n,ASCI ...
- vim(二) 代码查看
ctags,cscope 查看代码 生成cscope脚本文件 #!/bin/bash if [ -f "*.cscope" ]; then rm -fr *.cscope fi i ...
- CentOS-pam认证机制简介
前言 linux下PAM模块全称是Pluggable Authentication Module for linux(可插入式授权管理模块),该由Sun公司提供,在Linux中,PAM是可动态配置的, ...
- linux下——java——new Font("Times New Roman", 0, 18)验证码图片变成字符
j'ava部署到了tomcat,发现了一个问题,我们登录的验证码出现了乱码,和字符 然而在windows服务器上,或者说我们本地的开发环境上面,则没有这种现象, 这是为什么? 查看源码,发现有一段代码 ...
- APP在用户设备发生crash,应该怎么修复
Crash原因 Crash原因有共性,归纳起来有: 内存管理错误 程序逻辑错误 SDK错误 (部署版本< 编译版本) 主线程阻塞 内存管理错误 内存管理是iPhone开发所要掌握的最基本问题, ...
- Gradle发布项目到 maven 之novoda/bintray-release(3)
novoda/bintray-release 使用这个插件上传比较简单,只需要两步就可以 1.在项目根目录下的 build.gradle 添加插件依赖 // Top-level build file ...