卷积神经网络[CNN]笔记(六)—— 卷积层结构

  这是卷积神经网络笔记第六篇,完整的笔记目录可以点击这里查看。
  
  卷积网络通常只由三种类型的层组成:CONV、POOL(除非另有说明,否则我们默认假设为Max POOL)和FC(fully connected的缩写)。我们还将把RELU激活函数显式地写为一个层,它使用非线性函数对数据进行处理。下面,我们将讨论如何将这几个层堆叠在一起以形成整个网络。
  ConvNet架构最常见的形式是堆叠几个CONV-RELU层,然后在它们后面加上池化层,并重复此模式,直到图像在空间上被合并到一个小尺寸。其中,最后一个全连接层保存输出,例如类的分数。换句话说,最常见的ConvNet架构遵循以下模式:
INPUT -> [[CONV -> RELU]*N -> POOL?]*M -> [FC -> RELU]*K -> FC
其中*表示重复,而POOL?表示可选的池化层。此外,N>=0(通常N<=3),M>=0K>=0(通常K<3)。例如,下面是一些常见的ConvNet架构:

  1. INPUT -> FC,实现一个线性分类器。这里N=M=K=0
  2. INPUT -> CONV -> RELU -> FC
  3. INPUT -> [CONV -> RELU -> POOL]*2 -> FC -> RELU -> FC。在这里,我们看到每个池化层之间都有一个CONV层。
  4. INPUT -> [CONV -> RELU -> CONV -> RELU -> POOL]*3 -> [FC -> RELU]*2 -> FC。这里我们看到两个CONV层堆叠在每个POOL层之前。对于更大更深的网络,这通常是一个好主意,因为多个层叠的CONV层可以在具有破坏性(destructive)的池化操作之前学习到输入图像的更复杂的特征。

  比起直接使用一个具有大感受野的卷积层,我们通常更喜欢堆叠多层的小卷积层。比如,如果将三个3x3的CONV层堆叠在一起(当然,中间可能会穿插有非线性激活函数,比如Relu)。在这种排列中,第一个CONV层上的每个神经元都有一个3x3的感受野。第二个CONV层上的神经元具有第一个CONV层的3x3感受野,因此相对于输入而言,它有了5x5的感受野。类似地,第三个CONV层上的神经元具有第二个CONV层的3x3感受野,因此具有输入的7x7感受野。假设我们只想使用一个具有7x7感受野的CONV层,而不是这三个3x3的CONV层。这些神经元的感受野大小与输入的大小在空间范围上是相同的(7x7),但有几个缺点:

  1. 神经元是用线性函数来对输入进行计算的,而三个CONV层的堆叠可以包含非线性的激活函数,使其特征更具表现力。
  2. 假设所有的层都有C个通道,则可以看出,单个7x7 CONV层将包含C×(7×7×C)=49C2个参数,而三个3x3 CONV层仅包含3×(C×(3×3×C))=27C2个参数。直观地说,将CONV层与小过滤器堆叠在一起,而不是将一个CONV层与大过滤器堆叠在一起,可以让我们用更少的参数来表达输入的更强大的功能。此外,如果我们还需要进行反向传播,我们可能需要更多的内存来保存所有中间CONV层的结果。




*本博客翻译总结自CS231n课程作业网站,该网站需要才能访问。

你可能感兴趣的:(CNN,#,CS231n课程笔记,卷积,神经网络,网络,深度学习)