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代替。
Slice layer 的作用是将bottom按照需要分解成多个tops。(与split layer的不一样在于spliit的作用是将bottom复制多份,输出到tops)
首先我们先看一下slice layer 在prototxt里面的书写
这里假设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进行均匀分解。