深度神经网络

时间:2021-03-10 06:45:44

隐藏层(hidden layer)

为什么叫隐藏层?因为是黑盒角色;输入层输入到"黑盒",将会得到进行运算,最后数据到输出层。隐藏层是深度学习一个基本概念。

输入层是原始数据样本,注意每个原始样本的滑窗范围(也叫感受视野,local receptive fields,也被称之为卷积核,还常被称之为filter,和"深度"意思一致)对应着隐藏层一个节点,这个映射过程是通过将输入数据*权重weight获得的,所以在窗口滑动的过程,么给窗口其实都是对应一个隐藏层节点,或者说每个隐藏层节点对应要给原始数据的滑窗。

深度神经网络

隐藏层边长公式:(W-K)/S + 1

有的时候,为了控制隐藏层的分布,在原始数据的四周填充0,假设填充P行,这个行为叫padding,那么边长公式:(W - K + 2P)/S + 1,特别的S=1,P= (K-1)/2,可以保证输入输出层的分布(shape)是一样的。可以使用0填充的卷积称之为"泛卷积",不能使用0来填充的卷积称之为"严格卷积"。

参数共享(shared weight)

参数共享说的是卷积核是所有的隐藏层都是一样的,就是共享权重,截距成为共享偏移(shared bias),输入层通过卷积核到隐藏层被称之为"特征映射",在深度学习里面,每个输入层的窗口以及隐藏层的元素都是一个"特征"。

那么多个特征图呢?例如图片会有RGB三个通道,卷积核是三个还是一个呢?需要三个,每个通道(深度)应该有自己的卷积核。

池化层

池化层的目的就是减少特征,对于池化层的节点可以理解为上一层(隐藏层)的特征,或者说特征的特征;

深度神经网络

线性计算

y = W.T * x + b;注意W.T是在前面;因为输入层转到隐藏层,样本的数量是要发生变化的;所以一定是X在后面,因为根据矩阵计算规则,取乘数的行数,被乘数的列数。

矩阵默认是列向量;比如numpy.zeros(5),返回的是列向量(5,);

反向传播的节点

Affine,sofmaxWithLoss等等其实都是计算图的一个节点,和前面介绍的加法,减法等一样;但是加减乘除必须要两个数据进行操作,对于其他的一些操作比如转换类,那么只需要一个参数就可以了,主要看业务的需要;

LSVRC

Large Scale Visual Recognition Challenge(LSVRC ,大规模视觉认知挑战赛)