标签:slice int 实现 default span 表示 name mat 默认
1、concat层
该层有两个相同作用的参数:
message ConcatParameter { //指定拼接的维度,默认为1即以channel通道进行拼接;支持负索引,即-1表示最后一个维度 optional int32 axis = 2 [default = 1]; // 以后会被弃用,作用同axis一样,但不能指定为负数 optional uint32 concat_dim = 1 [default = 1]; }
caffe中数据通常为4个维度,即 num×channels×height×width,因此默认值1表示channels通道进行拼接。
layer { name: "data_all" type: "Concat" bottom: "data_classfier" bottom: "data_boundingbox" bottom: "data_facialpoints" top: "data_all" concat_param { axis: 0 } }
除了拼接维度外的其它维度都必须相等。比如上面,输入图像均为 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 = 3 [default = 1]; optional uint32 slice_dim = 1 [default = 1]; // 指定拆分点 repeated uint32 slice_point = 2; }
此处将如上合并的数据集进行拆分:
layer { name: "data_each" type: "Slice" bottom: "data_all" top: "data_classfier" top: "data_boundingbox" top: "data_facialpoints" slice_param { axis: 0 slice_point: 150 slice_point: 200 } }
其中slice_point的个数必须等于top的个数减一。输入的data_all维度为 250×3×24×24,拆分后的3个输出的维度依次为 150×3×24×24, 50×3×24×24, 50×3×24×24
标签:slice int 实现 default span 表示 name mat 默认
原文地址:https://www.cnblogs.com/xiaochouk/p/10107726.html