1、concat层

该层有两个相同作用的参数:

message ConcatParameter {
//指定拼接的维度,默认为1即以channel通道进行拼接;支持负索引,即-1表示最后一个维度
optional int32 axis = [default = ]; // 以后会被弃用,作用同axis一样,但不能指定为负数
optional uint32 concat_dim = [default = ];
}

caffe中数据通常为4个维度,即 num×channels×height×width,因此默认值1表示channels通道进行拼接。

  • 选择axis=0,表示在num维度上进行拼接,可表示为:(k1+k2)*C*H*W;
  • 选择axis=1,表示在channel维度上进行拼接,可表示为:N*(k1+k2)*H*W。(对应于上面给出的4个维度)
layer {
name: "data_all"
type: "Concat"
bottom: "data_classfier"
bottom: "data_boundingbox"
bottom: "data_facialpoints"
top: "data_all"
concat_param {
axis:
}
}

除了拼接维度外的其它维度都必须相等。比如上面,输入图像均为 24×24×324×24×3,用于分类的有150张图片,用于boundingbox回归的有50张,用于关键点回归的也有50张,则最后拼接的结果就是 (150+50+50)×3×24×24
2、Slice层

与concat对应的是Slice层,来实现对数据集的拆分:

message SliceParameter {
// 下面两个指定沿哪个维度进行拆分,默认拆分channels通道
optional int32 axis = [default = ];
optional uint32 slice_dim = [default = ]; // 指定拆分点
repeated uint32 slice_point = ;
}

此处将如上合并的数据集进行拆分:

layer {
name: "data_each"
type: "Slice"
bottom: "data_all"
top: "data_classfier"
top: "data_boundingbox"
top: "data_facialpoints"
slice_param {
axis:
slice_point:
slice_point:
}
}

其中slice_point的个数必须等于top的个数减一。输入的data_all维度为 250×3×24×24,拆分后的3个输出的维度依次为 150×3×24×24, 50×3×24×24, 50×3×24×24
3、Eltwise层

Eltwise层的操作有三个:product(点乘), sum(相加减) 和 max(取大值),其中sum是默认操作。

假设输入(bottom)为A和B,如果要实现element_wise的A+B,即A和B的对应元素相加,prototxt文件如下:

layer
{
name: "eltwise_layer"
type: "Eltwise"
bottom: "A"
bottom: "B"
top: "diff"
eltwise_param {
operation: SUM
}
}​

如果实现A-B,则prototxt为:

layer
{
name: "eltwise_layer"
type: "Eltwise"
bottom: "A"
bottom: "B"
top: "diff"
eltwise_param {
operation: SUM
coeff:
coeff: -
}
}​

其中A和B的系数(coefficient)都要给出!

caffe的网络层结构(1)的更多相关文章

  1. caffe 每层结构

    如何在Caffe中配置每一个层的结构 最近刚在电脑上装好Caffe,由于神经网络中有不同的层结构,不同类型的层又有不同的参数,所有就根据Caffe官网的说明文档做了一个简单的总结. 1. Vision ...

  2. keras_基本网络层结构(1)_常用层

    参考文献: https://blog.csdn.net/sinat_26917383/article/details/72857454 http://keras-cn.readthedocs.io/e ...

  3. keras_基本网络层结构(2)_卷积层

    参考文献:http://keras-cn.readthedocs.io/en/latest/layers/convolutional_layer/ 卷积层 Conv1D层 keras.layers.c ...

  4. 1.caffe初入

    1.FrameWork of Caffe Caffe是一种编程框架,内部提供了一套编程机制,或者说一个模板框架,用以实现GPU并行架构下的机器学习,DeepLearing等算法,能在性能上大幅度提升, ...

  5. 【转】贾扬清:希望Caffe成为深度学习领域的Hadoop

    [转:http://www.csdn.net/article/2015-07-07/2825150] 在深度学习(Deep Learning)的热潮下,Caffe作为一个高效.实用的深度学习框架受到了 ...

  6. Caffe —— Deep learning in Practice

    因工作交接须要. 要将caffe用法及总体结构描写叙述清楚. 鉴于也有同学问过我相关内容, 决定在本文中写个简单的tutorial, 方便大家參考. 本文简单的讲几个事情: Caffe能做什么? 为什 ...

  7. 贾扬清分享_深度学习框架caffe

    Caffe是一个清晰而高效的深度学习框架,其作者是博士毕业于UC Berkeley的 贾扬清,目前在Google工作.本文是根据机器学习研究会组织的online分享的交流内容,简单的整理了一下. 目录 ...

  8. 在Caffe添加Python layer详细步骤

    本文主要讨论的是在caffe中添加python layer的一般流程,自己设计的test_python_layer.py层只是起到演示作用,没有实际的功能. 1) Python layer 在caff ...

  9. 实践详细篇-Windows下使用VS2015编译安装Caffe环境(CPU ONLY)

    学习深度学习背景 最近在做一款抢票软件,由于12306经常检测账号状态,抢票抢着抢着就需要重新登录了,然后登录是需要验证码的.所以我最开始是想到了使用java基于感知哈希算法pHash做相似度匹配识别 ...

随机推荐

  1. 微服务简历V1.0

    张三 电话:xxx-xxxx-xxxx      邮箱: xxxxxxx@qq.com 年龄:x岁        籍贯:江苏 求职意向:java开发工程师   期望薪资:面议 专业技能 熟练使用Ecl ...

  2. Python基础语法之文件操作

    1 读文件 1.1 简单读文件 f = open('text', 'r') # f是文件句柄 data = f.read() # read方法可以加整型参数,是几就读几个字符 print(data) ...

  3. 【转帖】Linux系统上面qemu 模拟arm

    零基础在Linux系统搭建Qemu模拟arm https://blog.csdn.net/weixin_42489042/article/details/81145038 自己没搞定 改天再试试 感谢 ...

  4. css样式实例

    * { box-sizing: border-box; } /*box-sizing属性允许您以特定的方式定义匹配某个区域的特定元素*/ body { font: Arial; margin:; } ...

  5. php中use关键词使用场景

    php中use关键词使用场景,主要使用在函数内部使用外包得变量才使用得 1,这种函数使用不到外包变量 $messge="96net.com.cn"; $exam=function ...

  6. HDU 1789 Doing Homework again(排序,DP)

    Doing Homework again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  7. openlayers之地图测距侧面

    项目背景vue-cli3.0 public下html需要引入文件 <link rel="stylesheet" href="<%= BASE_URL %> ...

  8. python中的正则表达式的使用

    一.正则表达式简介 正则表达式的官方文档:https://www.runoob.com/regexp/regexp-tutorial.html 正则表达式:又称正规表示式.正规表示法.正规表达式.规则 ...

  9. 从标准输入读取一行数组并保存(用的是字符串分割函数strtok_s() )

    首先介绍字符串分割函数: char *strtok_s( char *strToken, //字符串包含一个标记或一个以上的标记. const char *strDelimit, //分隔符的设置 c ...

  10. linux上安装Eclipse

    之所以要在linux上安装Eclipse,是因为一开始我是通过Eclipse+MingW+Samba+GDBserver方式在Windows上远程操作,准备编译调试nginx源代码的,可是在编译调试过 ...