1. split_layer
bottom中一个blob,top层中多个blob
top层中的所有blob共享bottom中的data,但diff数据不同
因此,backward过程,实际上是把top中对应位置的diff相加,所得到的结果作为bottom中的diff
2. inner_product_layer
是全连接层
输入是一个K维矢量,输出是N维矢量,我们可以看做是有N个神经元,每个神经元有K个权值。因此,权值矩阵是一个N*K矩阵weight
然而输入有M组,即输入是一个M*K矩阵,因此,输出也应该是一个M*N矩阵top_data,这样,forward过程就是计算bottom_data*weight,并将结果存储到top中
forward过程明确后,backward过程就简单了,实际上,它就是经典的BP神经网络
3. flatten_layer
该层只改变tensor的形状,不改变数据
我们知道,tensor中的数据实际上就是一片连续的内存,它本质上是vector,不过我们定义了额外的变量来描述tensor的形状
因此,flatten_layer不改变data_和diff_所指向的数据,只改变shape等描述tensor形状的参数
比如,bottom的数据是四