CS231n lecture 5 Convolutional Neural Networks(CNN)

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

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

architecture

下面我们具体讨论一下每个独立的 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 的大小和原始输入一样大。(不包括深度)。

计算输出大小的公式为:
(WF+2P)/S+1
w指输入图像的大小,F指卷积的滤波器的大小,P指padding的大小,S指步长stride。

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

(2) Pooling layer

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

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=(F1)/2 这是计算padding的公式。 如果你非要用大的滤波器,比如 7x7, 一般都是把它放在最前面的卷积层。

  • pool layers

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

笔记底下还记录了一些常见的问题。就不一一列举了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值