您的位置:首页 > 其它

CS231n lecture 5 Convolutional Neural Networks(CNN)

2018-01-23 05:25 363 查看

ConvNet Layers

卷积神经网络将输入的原始图像像素逐层转换为最终的 class scores。 我们采用以下几个主要的 layers 来构建卷积网络框架。 Convolutional Layer, Pooling Layer, and Fully-Connected Layer We will stack these layers to form a full ConvNet architecture.



上图啦,这就是一个CNN网络的一个例子图。假设输入第一层红色代表一个图像 32x32x3, 最终输出为1x1x10,因为在卷积网络结构的最后将会把一个图像转换为一个 class scores 的向量。



下面我们具体讨论一下每个独立的 layer。

(1) Convolutional layer

卷积层的参数由一组可学习的滤波器构成。例如,经典的滤波器为 5x5x3, 第三维深度要和图像的深度保持一致,这里指的的RGB三色通道。所谓的卷积计算就是将滤波器沿着输入图像滑动,并进行点乘运算,最终我们将会获得一个二维的 activation map。

brain view:如果我们按照神经元的角度来看,那么每一次输出的 3D volume 中的每一个值都是一个 neuron.

Local Connectivity:这是是啥意思呢,就是说如果像普通的神经网络那样每一层都做全连接是不切实际的,因为图像的维数太高了。于是我们就只和前一层的一部分连接。这一部分指的就是 receptive field 也就是滤波器的大小。 但是请注意,我们的 local 仅限于宽度和高度,深度还是按照之前相同的深度。

Spatial arrangement:有三个超参数控制 output volume 的大小。The depth, stride and zero-padding.

depth: output volume 的深度是一个超参数,它取决于滤波器的数量。

stride: 指的是我们在图像上移动的步长是多少。stride 越大,将会导致 output volume 的宽度和高度变小。

zero-padding:做这个的目的一般是为了控制 output volume 的大小,很多时候是为了保持卷积后的 volume 的大小和原始输入一样大。(不包括深度)。

计算输出大小的公式为:

(W−F+2P)/S+1

w指输入图像的大小,F指卷积的滤波器的大小,P指padding的大小,S指步长stride。

笔记中有Numpy关于CONV layer的代码。

(2) Pooling layer

下面是上图浅显易懂的 max pooling.



现在可以用 large stride 去替代 pooling layer, 并且发现 discard pooling layer 对于训练一个好的生成模型很重要。

(3) Normalization Layer

这个已经失宠了,因为它的贡献太小啦。

(4) Fully-connected layer

Neurons in a fully connected layer have full connections to all activations in the previous layer, as seen in regular Neural Networks.

(5) Converting FC layers to CONV layers

FC和CONV层之间的唯一区别在于,CONV层中的神经元仅连接到输入中的局部区域,并且CONV中的许多神经元共享参数。 然而,在这两种 Layers中 神经元都是计算点积,所以它们的功能形式是相同的。 因此,可以在FC和CONV层之间进行转换。

传统的 FC 的原理是:每一层的神经元都与前一层的所有神经元连接。其实呢,任何的 FC 都可以被转换为 CONV layer. 举个例子,一个 FC layer 最后需要输出 4069 个 class scores, 前一层的神经元为 7x7x512. 这个可以由 CONV 等价的表示,其参数为:F=7,P=0,S=1,K=4096. 也就是说我们用 4069 个 7x7x512 的滤波器做卷积便可以得到 1x1x4069 的结果。也就是说我们用与输入神经元相同大小的滤波器,这样就可以得到与 FC 相同的结果。

ConvNet Architectures

layer pattern:

常用的卷积网络结构是由 a few CONV-RELU layers, follows them with POOL layers, and repeats this pattern until the image has been merged spatially to a small size。最后一层是 FC layer,一般就是输出的 class scores。

Prefer a stack of small filter CONV to one large receptive field CONV layer. 使用3个 3x3 的conv layers 可以达到 1个 7x7 conv layer 相同的 receptive field. 但是我们鼓励用多个小的滤波器,优点有:1,三层卷积,每层后都跟有非线性操作,这样处理过后的数据非线性化更强,能够表达更加powerful的特征。2,包含所需的parameters更少。

Layer Sizing Patterns

刚才呢我们省略了每一层所需的超参数部分,那么现在我们就来讨论一下吧~

input layer

这个里面包含图像,并且可以被2整出多次。

Common numbers include 32 (e.g. CIFAR-10), 64, 96 (e.g. STL-10), or 224 (e.g. common ImageNet ConvNets), 384, and 512.

conv layers

卷积滤波器应该选小一些的 3x3 或者 5x5 的,使用步长为1,更关键的是要使用padding,使得卷积过后的size和输入石保持一致。 P=(F−1)/2 这是计算padding的公式。 如果你非要用大的滤波器,比如 7x7, 一般都是把它放在最前面的卷积层。

pool layers

它的主要作用是降维,一般的参数设置为:2x2 filter with stride 2,max polling. 很少用大的filter,因为这样会导致lossy太严重,得到很差的效果。

笔记底下还记录了一些常见的问题。就不一一列举了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cnn