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】10分钟教你用Python做个打飞机小游戏超详细教程
更多精彩尽在微信公众号[程序猿声] 我知道你们一定想先看效果如何 00 目录 整体框架 开始之前-精灵类Sprite 子弹类class Bullet 玩家飞机类class Player 敌机类clas ...
- php文件下载方法收藏(附js下载技巧)
function down($url){ header('Content-Description: File Transfer'); header('Content-Type: application ...
- (STM32F4) 精準的Delay不透過Timer
從一個厲害的國外工程師看來的delay寫法,使用while loop會使用幾個指令去計算,可能會需要多少時間. while(variable--); 這行代碼執行一次預估會消耗MCU 4 clock ...
- 【算法笔记】B1029 旧键盘
1029 旧键盘 (20 分) 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在 2 ...
- 【算法笔记】B1024 科学计数法
1024 科学计数法 (20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位, ...
- 毕业设计 python opencv实现车牌识别 码云地址
码云地址:https://gitee.com/yinghualuowu/Python_VLPR 删除了冗余代码,可以更加便于运行.其实是为了那些进不去github准备的~
- iptables 深入分析
四表五链四表:filter , nat, manager, raw五链: 五个HOOK点的链接,pre_rout, foward, post_rout, in ,out 问题:内核如何匹配,内核使能 ...
- 【总结】ettercap工具之DNS劫持
在arp欺骗成功基础上开始进行dns劫持,,, 1.修改/etc/ettercap/etter.dns文件内容,如下图所示. 将所有域名解析到192.168.1.250地址上,,, 2.etterca ...
- EntityFramework 并发处理
转载自:http://www.cnblogs.com/TianFang/p/4439215.html 什么是并发? 并发分悲观并发和乐观并发. 悲观并发:比如有两个用户A,B,同时登录系统修改一个文档 ...
- storm(2)-机制
1.storm vs esper 2.storm vs spark streaming storm处理的是每次传入的一个事件:spark streaming 处理的是某个时间段窗口内的事件流. 因此 ...