caffe中常见层的用法以及参数

caffe中常见的一些层的用法,和参数配置
官方文档 http://caffe.berkeleyvision.org/tutorial/layers.html
1.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
      }
    }
  }

输入和输出都是类似blob的四维张量,NCWH
通过reshape_param中的shape参数改变张量的维度四个dim分别代表output(top)中的数据维度,后面的数字表示给维度具体要变成什么样。
举个例子,设输入为 32
32828
shape {
dim: 0 # copy the dimension from below
dim: 0
dim: 14
dim: -1 # infer it from the other dimensions
}
dim:0 表示 output(top)中的N 直接复制 input(bottom)中N的维度 为 32
dim:0表示 output(top)中的直接复制 input(bottom)中C的维度 为3
dim:3表示 output(top)中的W 变为28维 变为 14
dim:-1 表示这一维度的具体数字通过其他维度推算 为56,推算过程如下:总的数据量不变,只改变 NCWH 四个维度的具体数字
(3232828)/(32314) = 56
因此,经过Reshape后输出为32
31456

2.Flatten变多维矩阵为一维向量
常见配置如下:

layer {
  name: "rpn_cls_score_flat"
  type: "Flatten"
  bottom: "rpn_cls_score_perm"
  top: "rpn_cls_score_flat"
  flatten_param {
    axis: 1
  }
}

Flatten层是把一个输入的大小为n * c * h * w变成一个简单的向量,其大小为 n * (chw) * 1 * 1
axis [default 1]:0代表链接N,1代表链接C
3.Concat按照axis连接多个blob
常见配置如下:

layer {
  name: "concat"
  bottom: "in1"
  bottom: "in2"
  top: "out"
  type: "Concat"
  concat_param {
    axis: 1
  }
}

输入输出均为NCW*H的blob张量
可选参数:
axis [default 1]:0代表链接N,1代表链接C
通过全连接层后的大小变化:
输入:从1到K的每一个blob的大小:ni×ci×h×w
输出:
如果axis = 0: (n1+n2+…+nK)×c1×h×w,需要保证所有输入的ci相同。
如果axis = 1: n1×(c1+c2+…+cK)×h×w,需要保证所有输入的n_i 相同。
通过Concatenation层,可以把多个的blobs链接成一个blob。

4.Transpose
5.Permute
6.Im2col
参考博客

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值