前面我们深入分析了 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 解析相关推荐

  1. Caffe 关于 LetNet-5 之 lenet_solver.prototxt 解析

    对于 LetNet-5 这个模型,在训练和测试时涉及到一些参数, Caffe 在 lenet_solver.prototxt 这个参数描述文件定义了相关参数. # The train/test net ...

  2. LeNet网络配置文件 lenet_train_test.prototxt

    .prototxt文件 定义了网络的结构,我们可以通过它了解网络是如何设计的,也可以建立属于自己的网络.这种格式来源于Google的Protocol Buffers,后来被开源,主要用于海量数据存储. ...

  3. Caffe 中关于 LetNet-5 网络的定义文件 lenet.prototxt 解析

    在 https://github.com/BVLC/caffe/blob/master/examples/mnist 是Caffe关于LetNet-5的相关文件, 这里面有几个后缀是 .prototx ...

  4. caffe基础(7): 命令行解析

    caffe的运行提供三种接口:c++接口(命令行).Python接口和matlab接口.本文先对命令行进行解析,后续会依次介绍其它两个接口. caffe的c++主程序(caffe.cpp)放在根目录下 ...

  5. Caffe 命令解析

    caffe的运行提供三种接口:c++接口(命令行).python接口和matlab接口.本文先对命令行进行解析,后续会依次介绍其它两个接口. caffe的c++主程序(caffe.cpp)放在根目录下 ...

  6. caffe命令及其参数解析

    caffe的c++主程序(caffe.cpp)放在根目录下的tools文件夹内, 当然还有一些其它的功能文件,如:convert_imageset.cpp, train_net.cpp, test_n ...

  7. caffe 下测试 MNIST数据

    详细说明可参考网页:http://blog.csdn.net/wangchuansnnu/article/details/44341753                                ...

  8. linux 上自动执行caffe,linux下caffe的命令运行脚本

    参考:https://www.cnblogs.com/denny402/p/5076285.html 首先编译: make -j8 make pycaffe 注:下面的--solver=.... 等价 ...

  9. caffe网络模型各层详解(中文版)

    caffe网络模型各层详解(中文版) 参考网址:https://blog.csdn.net/qq_34220460/article/details/79872830 一.数据层及参数 要运行caffe ...

最新文章

  1. mof提权原理及其过程
  2. 牛客网 华为机试题 数据重复的筛选问题记录
  3. pytorch 入门Tensor(一)
  4. 技术动态 | 人工智能开源软件发展现状连载——知识图谱开源软件
  5. 单片机系统中的红外通信接口
  6. JVM专题之类加载机制
  7. 吴恩达《机器学习》第九章:神经网络的学习
  8. 深度学习————如何在Python中求解函数的解析表达式
  9. Windows游戏编程大师技巧第二版学习笔记之第一章
  10. 预测大盘最准确的指标_炒股天才江恩一辈子研究的指标,准确预测大盘走势
  11. 谷歌公开裸眼3D全息视频聊天技术:8k屏幕、4块GPU
  12. Android中的传感器之---陀螺仪传感器
  13. 2015062801 - 祈福八仙水上乐园
  14. Laravel:whereIn子查询
  15. 工业机器人(9)-- Matlab机器人工具箱之创建单臂/双臂机器人SDH/MDH方法
  16. CSS子元素撑满父元素(height: 100%无效)
  17. 重写python requests库实现自动拼接url
  18. 【MATLAB编程】输出所有的九宫图
  19. 域名批量查询 到期未续费域名查询
  20. 工业界开源和学术界开源的差异和一种设想的转化方式

热门文章

  1. Nat. Mach. Intell. | 可解释性人工智能(xAI)遇上药物发现
  2. 【错误总结】LaTex Warning: citation undefined
  3. 目前的Android恶意软件分类
  4. 正定小主人机器人_石家庄正定县2015中小学生机器人运动大赛隆重开幕
  5. 纯生信发ISME的一次试炼
  6. eclipse取消不了多行注释_Eclipse常用快捷键
  7. R语言使用coin包应用于分类变量独立性问题的置换检验(permutation tests)、使用普通卡方检验chisq.test函数和置换近似卡方检验chisq.test函数、检验分类变量的独立性
  8. R语言ggplot2可视化在可视化图形的X轴标签中添加温度摄氏度符号(add temperature degree symbol on axis label)
  9. R语言plot函数可视化、ggplot2可视化把图像标题(title)的部分内容着色实战:标题的部分内容配置不同的色彩、副标题(subtitle)的内容配置不同的色彩
  10. Pandas将dataframe保存为pickle文件并加载保存后的pickle文件查看dataframe数据实战