caffe一些功能的layer
来源:互联网 发布:断开网络驱动器 编辑:程序博客网 时间:2024/06/01 22:49
一些功能的layer:
splitting(把一个输入分成多个输出),类型:Split
在caffe.proto里为什么没有找到呢.它的作用就是把一个输入复制为多个输入;
Flattening:类型为:Flatten
偏平的意思,如 flattens an input of shape
n * c * h * w
to a simple vector output of shapen * (c*h*w))。
Reshape:(重新调整维度),类型为:Reshape
在不改变数据的情况下,改变输入的维度。
层类型:Reshape
先来看例子
layer { name: "reshape" type: "Reshape" bottom: "input" top: "output" reshape_param { shape { dim: 0 # copy the dimension from below dim: 2 dim: 3 dim: -1 # infer it from the other dimensions } } }有一个可选的参数组shape,用于指定blob数据的各维的值(bolb是一个四维的数据:n*c*w*h)。
dim:0 表示维度不变,即输入和输出是相同的维度。
dim:2 或 dim:3 将原来的维度变成2或3
dim:-1 表示由系统自动计算维度。数据的总量不变,系统会根据blob数据的其它三维来自动计算当前维的维度值 。
假设原数据为:64*3*28*28, 表示64张3通道的28*28的彩色图片
经过reshape变换:
reshape_param { shape { dim: 0 dim: 0 dim: 14 dim: -1 } }输出数据为:64*3*14*56,系统自己算的。blob里面的数据量不变,知道三个维度,另外一个就知道了
Cocatenation(把多个输入可以串联起来):类型为:Concat
Slicing(可以对输入进行切片)类型为:Slice:
Slice layer 的作用是将bottom按照需要分解成多个tops。(与split layer的不一样在于spliit的作用是将bottom复制多份,输出到tops)
首先我们先看一下slice layer 在prototxt里面的书写
layer { name: "slice" type: "Slice" bottom: "input" top: "output1" top: "output2" top: "output3" top: "output4" slice_param { axis: 1 slice_point: 1 slice_point: 3 slice_point: 4 }}
这里假设input的维度是
N*5*H*W
,tops输出的维度分别为N*1*H*W
N*2*H*W
N*1*H*W
N*1*H*W
。
这里需要注意的是,如果有slice_point,slice_point的个数一定要等于top的个数减一。
axis表示要进行分解的维度。
slice_point的作用是将axis按照slic_point 进行分解。
slice_point没有设置的时候则对axis进行均匀分解。
另外还有:Elementwise Operations(类型为Eltwise), Argmax(类型为ArgMax), Softmax(类型为Softmax),
Mean-Variance Normalization(类型为MVN)
Dropout
Dropout是一个防止过拟合的trick。可以随机让网络某些隐含层节点的权重不工作。
先看例子:
layer { name: "drop7" type: "Dropout" bottom: "fc7-conv" top: "fc7-conv" dropout_param { dropout_ratio: 0.5 } }layer { name: "drop7" type: "Dropout" bottom: "fc7-conv" top: "fc7-conv" dropout_param { dropout_ratio: 0.5 } }只需要设置一个dropout_ratio就可以了。
slice:在某一个维度,按照给定的下标,blob拆分成几块。比如要拆分channel,总数50,下标为10,20,30,40,那就是分成5份,每份10个channel,输出5个layer。
concat:在某个维度,将输入的layer组合起来,是slice的逆过程。
split:将blob复制几份,分别给不同的layer,这些上层layer共享这个blob。
tile:将blob的某个维度,扩大n倍。比如原来是1234,扩大两倍变成11223344。
reduction:将某个维度缩减至1维,方法可以是sum、mean、asum、sumsq。
reshape:这个很简单,就是matlab里的reshape。
eltwise:将几个同样大小的layer,合并为1个,合并方法可以是相加、相乘、取最大。
flatten:将中间某几维合并,其实可以用reshape代替。
- caffe一些功能的layer
- caffe中layer的一些特殊操作,比如split
- caffe中layer的一些特殊操作,比如split
- Caffe的Layer介绍
- Caffe的特殊layer
- caffe的layer
- caffe: Layer的可视化
- caffe的python layer
- Caffe:Layer的相关学习
- Caffe python layer 的自定义
- caffe的layers转layer
- caffe layer的继承关系
- Caffe python layer 的自定义
- 17.3.9 caffe自定义一个Layer会遇到的一些理解方面的问题
- caffe layer
- caffe layer
- Caffe中新建Layer--改写Faster-RCNN的proposal layer
- Caffe中新建Layer--改写Faster-RCNN的proposal layer
- Tomcat——startup.bat 与shutdown.bat
- 第三方登录
- C/C++ 中关键字总结
- 欢迎使用CSDN-markdown编辑器
- 一周热议新闻20170516
- caffe一些功能的layer
- 几个实用的自定义函数
- Codeforces 5B Center Alignment
- springcloud(三):服务提供与调用
- 如何使用Git上传代码到GitHub
- 分享两篇有关跨域的文章
- mysql入门(limit限定查询十四)
- unity场景打包脚本BuildSceneEditor
- JetBrains WebStorm 2017.1.2 和 IntelliJ Idea 2017 在线激活