Caffe 关于 LetNet-5 之 lenet_train_test.prototxt 解析
前面我们深入分析了 lenet.prototxt 这个网络参数描述文件,但是这是对广义 LetNet-5 网络进行描述的。
在实际训练和测试中,LetNet-5 网络 稍有不同,那么针对 训练和测试, Caffe 又是如何定义 LetNet-5 网络 了?
对应的描述文件是 lenet_train_test.prototxt
下面我们来仔细看看这个文件:
name: "LeNet" // 网络的名称为 LeNet// 训练时数据层的定义
layer { // 定义一个网络层(Layer)name: "mnist" // 该网络层的名称为 mnisttype: "Data" // 该网络层的类型是数据层top: "data" // 层的输出有两个: data 和 labeltop: "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" // 输入是 datatop: "conv1" // 输出命名为 conv1param {lr_mult: 1 //weights的学习率与全局相同}param {lr_mult: 2 //biases的学习率是全局的2倍}convolution_param { // 卷积参数设置num_output: 20 // 输出 20个 featur mapskernel_size: 5 // 卷积核 尺寸 5*5stride: 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: 50kernel_size: 5stride: 1weight_filler {type: "xavier"}bias_filler {type: "constant"}}
}// 第二池化层定义
layer {name: "pool2"type: "Pooling"bottom: "conv2"top: "pool2"pooling_param {pool: MAXkernel_size: 2stride: 2}
}//第一全链接层定义
layer {name: "ip1"type: "InnerProduct"bottom: "pool2"top: "ip1"param {lr_mult: 1}param {lr_mult: 2}inner_product_param {num_output: 500weight_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 关于 LetNet-5 之 lenet_train_test.prototxt 解析相关推荐
- Caffe 关于 LetNet-5 之 lenet_solver.prototxt 解析
对于 LetNet-5 这个模型,在训练和测试时涉及到一些参数, Caffe 在 lenet_solver.prototxt 这个参数描述文件定义了相关参数. # The train/test net ...
- LeNet网络配置文件 lenet_train_test.prototxt
.prototxt文件 定义了网络的结构,我们可以通过它了解网络是如何设计的,也可以建立属于自己的网络.这种格式来源于Google的Protocol Buffers,后来被开源,主要用于海量数据存储. ...
- Caffe 中关于 LetNet-5 网络的定义文件 lenet.prototxt 解析
在 https://github.com/BVLC/caffe/blob/master/examples/mnist 是Caffe关于LetNet-5的相关文件, 这里面有几个后缀是 .prototx ...
- caffe基础(7): 命令行解析
caffe的运行提供三种接口:c++接口(命令行).Python接口和matlab接口.本文先对命令行进行解析,后续会依次介绍其它两个接口. caffe的c++主程序(caffe.cpp)放在根目录下 ...
- Caffe 命令解析
caffe的运行提供三种接口:c++接口(命令行).python接口和matlab接口.本文先对命令行进行解析,后续会依次介绍其它两个接口. caffe的c++主程序(caffe.cpp)放在根目录下 ...
- caffe命令及其参数解析
caffe的c++主程序(caffe.cpp)放在根目录下的tools文件夹内, 当然还有一些其它的功能文件,如:convert_imageset.cpp, train_net.cpp, test_n ...
- caffe 下测试 MNIST数据
详细说明可参考网页:http://blog.csdn.net/wangchuansnnu/article/details/44341753 ...
- linux 上自动执行caffe,linux下caffe的命令运行脚本
参考:https://www.cnblogs.com/denny402/p/5076285.html 首先编译: make -j8 make pycaffe 注:下面的--solver=.... 等价 ...
- caffe网络模型各层详解(中文版)
caffe网络模型各层详解(中文版) 参考网址:https://blog.csdn.net/qq_34220460/article/details/79872830 一.数据层及参数 要运行caffe ...
最新文章
- mof提权原理及其过程
- 牛客网 华为机试题 数据重复的筛选问题记录
- pytorch 入门Tensor(一)
- 技术动态 | 人工智能开源软件发展现状连载——知识图谱开源软件
- 单片机系统中的红外通信接口
- JVM专题之类加载机制
- 吴恩达《机器学习》第九章:神经网络的学习
- 深度学习————如何在Python中求解函数的解析表达式
- Windows游戏编程大师技巧第二版学习笔记之第一章
- 预测大盘最准确的指标_炒股天才江恩一辈子研究的指标,准确预测大盘走势
- 谷歌公开裸眼3D全息视频聊天技术:8k屏幕、4块GPU
- Android中的传感器之---陀螺仪传感器
- 2015062801 - 祈福八仙水上乐园
- Laravel:whereIn子查询
- 工业机器人(9)-- Matlab机器人工具箱之创建单臂/双臂机器人SDH/MDH方法
- CSS子元素撑满父元素(height: 100%无效)
- 重写python requests库实现自动拼接url
- 【MATLAB编程】输出所有的九宫图
- 域名批量查询 到期未续费域名查询
- 工业界开源和学术界开源的差异和一种设想的转化方式
热门文章
- Nat. Mach. Intell. | 可解释性人工智能(xAI)遇上药物发现
- 【错误总结】LaTex Warning: citation undefined
- 目前的Android恶意软件分类
- 正定小主人机器人_石家庄正定县2015中小学生机器人运动大赛隆重开幕
- 纯生信发ISME的一次试炼
- eclipse取消不了多行注释_Eclipse常用快捷键
- R语言使用coin包应用于分类变量独立性问题的置换检验(permutation tests)、使用普通卡方检验chisq.test函数和置换近似卡方检验chisq.test函数、检验分类变量的独立性
- R语言ggplot2可视化在可视化图形的X轴标签中添加温度摄氏度符号(add temperature degree symbol on axis label)
- R语言plot函数可视化、ggplot2可视化把图像标题(title)的部分内容着色实战:标题的部分内容配置不同的色彩、副标题(subtitle)的内容配置不同的色彩
- Pandas将dataframe保存为pickle文件并加载保存后的pickle文件查看dataframe数据实战