2.caffe初解
http://www.cnblogs.com/nwpuxuezha/p/4302024.html
原文链接:caffe.berkeleyvision.org/tutorial/layers.html
创建caffe模型,首先要在protocol buffer 定义文件(prototxt)中定义结构。
在caffe环境中,图像的明显特征是其空间结构。
|
主要layers |
主要功能 |
主要类型 |
其他 |
|
卷积层 |
提取特征 |
CONVOLUTION |
学习率、数据维度 |
|
池化层 |
特征池化 |
POOLING |
池化方法,数据维度 |
|
局部响应归一化层 |
临近抑制 |
LRN |
|
|
损失计算层 |
loss计算 |
SOFTMAX_LOSS EUCLIDEAN_LOSS HINGE_LOSS ACCURACY正确率 |
选择合适的loss 范数可选 |
|
激励层 |
非线性函数 |
ReLU SIGMOID TANH ABSVAL POWER BNLL |
ReLU收敛更快 |
|
数据层 |
数据源 |
Level-DB LMDB HDF5_DATA HDF5_OUTPUT IMAGE_DATA |
Level-DB和LMDB更加高效 |
|
一般层 |
INNER_PRODUCT 全连接层 SPLIT FLATTEN 类似shape方法 CONCAT ARGMAX MVN |
一、卷积层 Convolution:

Documents:注意维度变化与参数选择

1 Parameters (ConvolutionParameter convolution_param)
2
3 Required
4 num_output (c_o): 输出数(filter数)
5 kernel_size (or kernel_h and kernel_w): 指定卷积核
6
7 Strongly Recommended
8 weight_filler [default type: 'constant' value: 0]
9
10 Optional
11 bias_term [default true]: 指定是否提供偏置10
12 pad (or pad_h and pad_w) [default 0]: 指定输入图片的两侧像素填充量
13 stride (or stride_h and stride_w) [default 1]: 过滤器步长
14 group (g) [default 1]: 如果 g > 1, 我们限制每一个filter之间的连通性 对于输入的子集. 指定输入和输出被分为 g 组,第i输出组只会和第i输入组相连接.
15
16 Input
17
18 n * c_i * h_i * w_i
19
20 Output
21
22 n * c_o * h_o * w_o, where h_o = (h_i + 2 * pad_h - kernel_h) / stride_h + 1 and w_o likewise.

example:

1 layers {
2 name: "conv1"
3 type: CONVOLUTION
4 bottom: "data"
5 top: "conv1"
6 blobs_lr: 1 # learning rate multiplier for the filters
7 blobs_lr: 2 # learning rate multiplier for the biases
8 weight_decay: 1 # weight decay multiplier for the filters
9 weight_decay: 0 # weight decay multiplier for the biases
10 convolution_param {
11 num_output: 96 # learn 96 filters
12 kernel_size: 11 # each filter is 11x11
13 stride: 4 # step 4 pixels between each filter application
14 weight_filler {
15 type: "gaussian" # initialize the filters from a Gaussian
16 std: 0.01 # distribution with stdev 0.01 (default mean: 0)
17 }
18 bias_filler {
19 type: "constant" # initialize the biases to zero (0)
20 value: 0
21 }
22 }
23 }

二、池化层 Pooling:
参考链接 deeplearning.stanford.edu/wiki/index.php/池化
池化: 概述
在通过卷积获得了特征 (features) 之后,下一步我们希望利用这些特征去做分类。理论上讲,人们可以用所有提取得到的特征去训练分类器,例如 softmax 分类器,但这样做面临计算量的挑战。例如:对于一个 96X96 像素的图像,假设我们已经学习得到了400个定义在8X8输入上的特征,每一个特征和图像卷积都会得到一个 (96 − 8 + 1) * (96 − 8 + 1) = 7921 维的卷积特征,由于有 400 个特征,所以每个样例 (example) 都会得到一个 892 * 400 = 3,168,400 维的卷积特征向量。学习一个拥有超过 3 百万特征输入的分类器十分不便,并且容易出现过拟合 (over-fitting)。
为了解决这个问题,首先回忆一下,我们之所以决定使用卷积后的特征是因为图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在 另一个区域同样适用。因此,为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平 均值 (或最大值)。这些概要统计特征不仅具有低得多的维度 (相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。这种聚合的操作就叫做池化 (pooling),有时也称为平均池化或者最大池化 (取决于计算池化的方法)。

参数解释:

1 Required
2 kernel_size (or kernel_h and kernel_w):池化核
3 Optional
4 pool [default MAX]:指定池化方法. MAX, AVE, or STOCHASTIC(按照概率值大小随机选择,数值大的被选中的概率大)
5 pad (or pad_h and pad_w) [default 0]: 指定输入图片的两侧像素填充量
6 stride (or stride_h and stride_w) [default 1]:过滤器步长
7 Input
8 n * c * h_i * w_i
9 Output
10 n * c * h_o * w_o,where h_o = (h_i + 2 * pad_h - kernel_h) / stride_h + 1 and w_o likewise..

示例:

1 layers {
2 name: "pool1"
3 type: POOLING
4 bottom: "conv1"
5 top: "pool1"
6 pooling_param {
7 pool: MAX
8 kernel_size: 3 # 3*3 区域池化
9 stride: 2 # (in the bottom blob) between pooling regions
10 }
11 }
2.caffe初解的更多相关文章
- 基于window7+caffe实现图像艺术风格转换style-transfer
这个是在去年微博里面非常流行的,在git_hub上的代码是https://github.com/fzliu/style-transfer 比如这是梵高的画 这是你自己的照片 然后你想生成这样 怎么实现 ...
- caffe的python接口学习(7):绘制loss和accuracy曲线
使用python接口来运行caffe程序,主要的原因是python非常容易可视化.所以不推荐大家在命令行下面运行python程序.如果非要在命令行下面运行,还不如直接用 c++算了. 推荐使用jupy ...
- 基于Caffe的Large Margin Softmax Loss的实现(中)
小喵的唠叨话:前一篇博客,我们做完了L-Softmax的准备工作.而这一章,我们开始进行前馈的研究. 小喵博客: http://miaoerduo.com 博客原文: http://www.miao ...
- 基于Caffe的Large Margin Softmax Loss的实现(上)
小喵的唠叨话:在写完上一次的博客之后,已经过去了2个月的时间,小喵在此期间,做了大量的实验工作,最终在使用的DeepID2的方法之后,取得了很不错的结果.这次呢,主要讲述一个比较新的论文中的方法,L- ...
- 基于Caffe的DeepID2实现(下)
小喵的唠叨话:这次的博客,真心累伤了小喵的心.但考虑到知识需要巩固和分享,小喵决定这次把剩下的内容都写完. 小喵的博客:http://www.miaoerduo.com 博客原文: http://ww ...
- 基于Caffe的DeepID2实现(中)
小喵的唠叨话:我们在上一篇博客里面,介绍了Caffe的Data层的编写.有了Data层,下一步则是如何去使用生成好的训练数据.也就是这一篇的内容. 小喵的博客:http://www.miaoerduo ...
- 基于Caffe的DeepID2实现(上)
小喵的唠叨话:小喵最近在做人脸识别的工作,打算将汤晓鸥前辈的DeepID,DeepID2等算法进行实验和复现.DeepID的方法最简单,而DeepID2的实现却略微复杂,并且互联网上也没有比较好的资源 ...
- 基于英特尔® 至强™ 处理器 E5 产品家族的多节点分布式内存系统上的 Caffe* 培训
原文链接 深度神经网络 (DNN) 培训属于计算密集型项目,需要在现代计算平台上花费数日或数周的时间方可完成. 在最近的一篇文章<基于英特尔® 至强™ E5 产品家族的单节点 Caffe 评分和 ...
- 基于英特尔® 至强 E5 系列处理器的单节点 Caffe 评分和训练
原文链接 在互联网搜索引擎和医疗成像等诸多领域,深度神经网络 (DNN) 应用的重要性正在不断提升. Pradeep Dubey 在其博文中概述了英特尔® 架构机器学习愿景. 英特尔正在实现 Prad ...
随机推荐
- Win10利用CodeBlocks搭建Objective-C开发环境(二)
工程文件已经建好:但此时会发现main.m文件为灰色,且无法点击,此时需右键点击main.m文件,在option选项中勾选 compile file和 link file选项. 设置完成后,双击mai ...
- ELK7.4.2安装教程
ELK简介 "ELK"是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch.Logstash 和 Kibana.Elasticsearch 是一个搜索和分析引擎 ...
- 【miscellaneous】视频浓缩摘要简介
视频摘要,就是以自动或者半自动的方式,通过分析视频的结构和内容存在的时空冗余,从原始视频中提取有意义的片段,将它们以某种特点的方式重新组合成紧凑的.能够充分表现视频语义内容的浓缩视频. 一.静态视频摘 ...
- 线程.Qt更新界面
1.信号&槽 机制 即可 ZC:个人暂时 测试下来,类似是 PostMessage(...)的方式: a.是在各自的线程中执行代码, b.调用 emit不耗时(指的意思是 像调用PostMes ...
- Mac brew命令踩坑
brew是mac上的在线包管理软件,相当于linux apt以及yum包管理工具 1.取消brew的自动更新(https://blog.csdn.net/yf9595/article/details/ ...
- 最新 吉比特java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.吉比特等10家互联网公司的校招Offer,因为某些自身原因最终选择了吉比特.6.7月主要是做系统复习.项目复盘.LeetCo ...
- [转帖]Nginx服务器的六种负载均衡策略详解
Nginx服务器的六种负载均衡策略详解 咔咔侃技术 2019-09-11 17:40:12 一.关于Nginx的负载均衡 在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独 ...
- [转帖]分享一份珍藏多年的PG数据库部署架构图
分享一份珍藏多年的PG数据库部署架构图 记得同事曾经测试过citus https://www.toutiao.com/i6710613553277043213/ 原创 波波说运维 2019-07-11 ...
- Windows用Eclipse来开发hadoop的WordCount的helloworld
[学习笔记] 2.Win7用Eclipse来开发hadoop的WordCount的helloworld网上下载hadoop-eclipse-plugin-2.7.4.jar,将该jar包拷贝到Ecli ...
- Git 版本恢复命令reset
reset命令有3中方式: git reset -mixed: 此为默认方式,不带任何参数的git reset, 使用这种方式,项目会回退到某个版本,只保留源码,回退commit和index的信息. ...