【人工智能】深度学习(QDU)

转载请务必经过我的同意

深度学习

  • 深度学习机制
  • 卷积神经网络(CNN)
  • 卷积神经网络典型模型
  • 循环神经网络 (RNN)(这里不做讲解)

深度学习机制

【人工智能】深度学习(QDU)

  • 深度学习突出一个”深“字,即网络层次多。
  • 深度学习与神经网络实际上是存在交集的,并非完全独立。
  • 深度学习比神经网络多了自动提取特征的过程,神经网络只能根据特征进行分类,而深度学习可以先提取特征,再使用特征进行分类。
  • 想要更深刻理解二者的区别,可以阅读下面关于深度学习模型——卷积神经网络的讲解。

卷积神经网络 (CNN)

CNN 的核心思想:

  • 局部感知
  • 权值共享
  • 多卷积核
  • 空间下采样

(也有材料中概括成三个,不包括上述的“多卷积核”)

(标准的)卷积神经网络主要由这几类层构成:输入层、卷积层、池化层和全连接层(全连接层和常规神经网络中的一样)。通过将这些层叠加起来,就可以构建一个完整的卷积神经网络。

在实际应用中往往将卷积层与ReLU层(或sigmoid层)共同称之为卷积层,所以卷积层经过卷积操作也是要经过激活函数的

卷积神经网络中激活函数的意义:

在生物意义上的神经元中,只有前面的树突传递的信号的加权和值大于某一个特定的阈值的时候,后面的神经元才会被激活。简单的说激活函数的意义在于判定每个神经元的输出有没有达到阈值。

放在人脸识别卷积神经网络中来思考,卷积层的激活函数的意义在于这一块区域的特征强度如果没有达到一定的标准就输出0,表明这种特征提取方式(卷积核)不能在该块区域提取到特征,或者说这块区域的这种特征很弱。由于输出0时,激活函数梯度几乎都为0,所以在特征很弱的区域,梯度几乎不下降,也就是说,和该特征无关的区域不会影响到该特征提取方式的训练。反过来说,如果没有激活函数,就算特征很弱时,仍然可以得到输出,后面的层次继续把这个输出当成一个特征使用,这是不合理的。

局部感知

与人工神经网络(ANN)对比:

【人工智能】深度学习(QDU)

在ANN中相邻层一般使用全连接的方式,而针对图像分类问题,这种全连接的方式会导致参数数量过多,而且没有考虑图像的空间结构,即局部像素联系较为紧密,而距离较远的像素相关性则较弱。


每个神经元只与输入数据的一个局部区域连接,该连接的空间大小叫做神经元的局部感受野(local receptive fields)

以 28 × 28 28×28 28×28的输入图像为例:

【人工智能】深度学习(QDU)

采用局部感知的思想,每个神经元只对应若干个输入神经元(即初始图像的若干像素)。一般为了保证准确性,不至于第一次提取特征就将过多信息丢失掉,第一层隐含层的局部感知野不会设置的特别大。例如,对于上面的输入图像,可以选择 5 × 5 5×5 5×5的卷积核(又称滤波器),可以得到如下的连接方式:

卷积核与局部感知野的不同(我的理解):

卷积核是具有包含权值的局部感知野;局部感知野更像是一种统称。

【人工智能】深度学习(QDU)

输入神经元中加粗显示的部分就是局部感知野,这25个输入神经元可以得到一个隐含层神经元,每一条连线就是一个权重(如果需要,还可以加上一个偏置)。


让卷积核以一定的步长在输入图像上滑动,不同位置的局部感知野将会得到不同的隐含层神经元,当在图像上滑动完毕就得到了第一层隐含层神经元。部分过程如下:(步长为1)

【人工智能】深度学习(QDU)

局部感知野直接进行线性运算(加偏置)得到对应隐含层神经元,也可以再对加和结果进行上面提到的激活,将激活结果作为隐含层神经元。

权值共享

对于上面的样例而言,其实已经体现了权值共享,卷积核的大小是 5 × 5 5×5 5×5,对于每个不同位置的局部感知野而言,无论卷积核滑动到哪一个局部感知野,都采用相同的权值与局部感知野内的输入神经元线性相乘作为第一层隐含层的神经元。即卷积核每个像素位置上都具有权值,无论滑动到哪里,权值都是不变的,这就实现了权值共享,使得参数量大大减少。

对于上述 28 × 28 28×28 28×28的输入图像,如果不采用权值共享的思想进行“卷积”(之所以加引号,是因为这并非真正的卷积,这里只是指滑动并进行线性运算的过程),则每个隐含层神经元都对应25个权重,而且每个隐含层神经元对应的权重又不相同,所以总参数量为隐含层神经元个数与局部感知野大小的乘积,即 24 × 24 × 25 = 14 , 400 24×24×25=14,400 24×24×25=14,400,这与采用权值共享后参数个数为 25 25 25相差甚远。

下图为单卷积核单步卷积的情况,绿色序号表示对应像素的位置,彩色连线表示卷积核权重,同一种颜色的连线只是表示属于同一个局部感知野,并不是表示权值相同;而第一个橙线与第一个绿线与第一个紫线都是相同的,因为它们是同一个卷积核的相同位置(像素)上的权值,同理,第二个橙线与第二个绿线与第二个紫线也都是相同的。

【人工智能】深度学习(QDU)

经一个卷积核卷积后,得到的隐层神经元组成一幅图像,称该图像为特征图。如此看来,特征图的每个像素都对应隐含层的一个神经元,所以针对单卷积核而言隐含层神经元的个数等于特征图的大小,权重参数的个数等于卷积核的大小。其中,很显然,特征图的大小与局部感知野落在不同区域的次数直接相关,也就是说卷积核滑动的步长会影响局部感知野的数量,也就影响特征图的大小;同时,卷积核的大小输入图像的大小也会影响可选的局部感知野的数量。

因此,可以看出,在使用单卷积核进行卷积的前提下,隐含层神经元的个数输入图像大小卷积核大小卷积核滑动步长的影响,输入图像与隐含层之间需要训练的权重参数的个数只受卷积核大小的影响,即相等。特征图边长的计算公式: ⌊ 图 像 边 长 − 卷 积 核 边 长 ⌋ / 步 长 + 1 ⌊图像边长-卷积核边长⌋/步长+1 ⌊图像边长−卷积核边长⌋/步长+1,因此,神经元的个数为: 特 征 图 边 长 × 特 征 图 边 长 特征图边长×特征图边长 特征图边长×特征图边长。(一定注意公式直接算出的只是特征图的边长,需要乘方才能得到神经元的个数)

可以理解为连线表示卷积核的相关信息,隐层神经元表示特征图的信息。

这里强调两点:

  1. 上面有关“隐含层神经元的个数”和“权重参数数量”的计算是针对单卷积核而言的,多卷积核的情况下面将讲到。
  2. 虽然输入图像与隐含层之间存在很多连线,即很多权重,但很多权重都是相同的,因为是使用同一个卷积核进行卷积的,而卷积核的大小是确定且不多的,所以其实这些连线中很多都是相同参数,本质上只需要训练的参数个数就是卷积核的权重参数个数。

多卷积核

如果仅用一个卷积核去提取特征,每个卷积核对应一幅特征图,所以只能得到原图像的一个特征,这对于分类而言是不利的。因此,引入多卷积核来保证得到足够多的特征图用于更加准确的分类。(这里可以看出,多少个卷积核就会得到多少张特征图)

对于同一层的卷积而言,虽然采用不同的卷积核,但是卷积核的大小和滑动步长一般都是相同的。

比如,使用卷积核 C 1 C_1 C1​和卷积核 C 2 C_2 C2​对原图 P P P进行多核卷积,其中 C 1 C_1 C1​和 C 2 C_2 C2​的大小和滑动步长是相同的,但不同卷积核对应位置上的参数不一定是相同的。

关键问题1:隐含层神经元个数的计算

针对多卷积核而言

输入图像大小卷积核大小卷积核数量卷积核滑动步长的影响。

给定 n n n个卷积核,则经过多核卷积后得到 n n n幅特征图,即隐层神经元的个数为特征图的大小之和

上面提到的计算公式仍可用,不过该公式仅能计算出一个卷积核对应的神经元个数,将每个卷积核计算出的结果加和就是多卷积核对应的隐含层神经元个数。

还是通过上面的例子说明:

【人工智能】深度学习(QDU)

经过三个卷积核卷积后得到三幅特征图,每个特征图的大小都是 24 × 24 24×24 24×24,总共三幅特征图,所以隐含层神经元总数为 2 × 24 × 24 2×24×24 2×24×24。

【人工智能】深度学习(QDU)

同一个虚线框中表示一幅特征图,一幅特征图由一个卷积核卷积得到,因此第一个虚线框中的神经元与输入图像的连线都是在表示第一个卷积核。这些连线中,不同颜色的第一条表示的权重是相同的,不同颜色的第二条表示的权重是相同的,……,不同颜色的第 5 × 5 5×5 5×5条表示的权重是相同的,这 5 × 5 5×5 5×5个权重就是第一个 5 × 5 5×5 5×5卷积核每个像素位置上的权重。

不同特征图由不同的卷积核卷积得到,特征图之间相同序号的连线表示的权重不一定相同。

关键问题2:隐含层参数个数的计算

针对多卷积核而言

卷积核大小卷积核数量的影响。

理解了上面讲到的,其实不难计算隐含层参数个数,每个卷积核的大小为 5 × 5 5×5 5×5,总共三个卷积核,所以参数的总个数为 3 × 5 × 5 3×5×5 3×5×5。

空间下采样

为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计。例如,可以计算图像一个区域上的某个特定特征的平均值(或最大值)。这些概要统计特征不仅具有低得多的维度(相比使用所有提取到的特征),同时还会改善结果(不容易过拟合)。

这种聚合操作就叫做池化(pooling,也称作空间下采样或空间亚采样)。

利用图像的局部性原理,对图像进行子抽样,可以减少数据处理量同时保留有用信息。

池化层一般都是跟在卷积层后面的。

在CNN中一般采用 2 × 2 2×2 2×2的核(滤波器),在得到的特征图上以步长为2进行滑动,比较常用的池化方式是最大值采样。在最大值采样中,选取 2 × 2 2×2 2×2区域内最大的像素值作为输出的像素值。还是以上面的样例说明:

【人工智能】深度学习(QDU)

左侧是一幅特征图,对于这一幅特征图而言,经过步长为2,大小为 2 × 2 2×2 2×2的核进行池化后,得到 12 × 12 12×12 12×12个神经元。

在多卷积核的条件下,每幅特征图都要经过池化,且每幅特征图都对应一幅池化后的特征图。

【人工智能】深度学习(QDU)

举个最大值采样的更为详细的例子:

【人工智能】深度学习(QDU)

常采用的池化方法:Mean-pooling(均值采样)、Max-pooling(最大值采样)、Overlapping(重叠采样)、L2-pooling(均方采样)、Local Contrast Normalization(归一化采样)、Stochastic pooling(随机采样)、Def-pooling(形变约束采样)

CNN中,池化核的大小一般为 2 × 2 2×2 2×2,通常进行无重叠采样(即步长大于等于边长)。

池化层的作用:(加深理解)

  1. invariance(不变性),这种不变性包括translation(平移),rotation(旋转),scale(尺度)
  2. 保留主要的特征同时减少参数(降维,效果类似PCA)和计算量,防止过拟合,提高模型泛化能力

A:特征不变性,也就是我们在图像处理中经常提到的特征的尺度不变性,池化操作就是图像的resize,平时一张狗的图像被缩小了一倍我们还能认出这是一张狗的照片,这说明这张图像中仍保留着狗最重要的特征,我们一看就能判断图像中画的是一只狗,图像压缩时去掉的信息只是一些无关紧要的信息,而留下的信息则是具有尺度不变性的特征,是最能表达图像的特征。

B:特征降维,我们知道一幅图像含有的信息是很大的,特征也很多,但是有些信息对于我们做图像任务时没有太多用途或者有重复,我们可以把这类冗余信息去除,把最重要的特征抽取出来,这也是池化操作的一大作用。

标准CNN的池化层是不存在激活的过程,即不存在需要训练的参数。但是这只是标准情况下,其实在真正实践中是可以加激活函数的,目的也是为了保证不要出现过大或过小的值,影响分类结果。

从中我们可以看出,学会卷积神经网络的基本思想是最重要的,中间的详细实现方式是完全可变的,并非唯一的,也可能你随便一改某一层的激活函数就又掀起了一场人工智能的大浪潮呢!

卷积神经网络基本结构

标准的结构:

【人工智能】深度学习(QDU)

【人工智能】深度学习(QDU)

其中,C层为特征提取层,也就是卷积层;S层为特征映射层,也就是池化层。

通过上面的结构我们可以了解,卷积神经网络的特点在于自动提取特征,提取完特征后将特征输入到传统的神经网络中实现使用提取到的特征进行分类。

卷积神经网络的参数是采用反向传播进行训练的。

对比传统神经网络与卷积神经网络

最明显的两点区别就是:

① 传统神经网络的网络架构一般在三层以内;而卷积神经网络属于深度学习,所以往往多于三层,甚至达到上千层。

② 传统神经网络层与层之间的连接采用全连接的方式;而卷积神经网络则形式多样,权值共享、跨层反馈等等,最后实现分类时会采用全连接的方式。

还有就是一些细节上的区别,只要理解这两点即可。

神经元、参数计算总结

卷积神经网络中参数个数的计算与神经元个数的计算

卷积核的通道数一般与输入图像的个数是相同的,当然并不绝对,比如LeNet5。

假设输入图像共 t t t幅,每幅大小为 n × n n×n n×n,使用 k k k个大小为 m × m m×m m×m的卷积核对其进行卷积操作,则

参数个数为: ( m × m × t + 1 ) × k (m×m×t+1)×k (m×m×t+1)×k;

神经元个数为: { [ ( n − m + 2 p a d d i n g ) / s t r i d e ] + 1 } 2 × k \{[(n-m+2padding)/stride]+1\}^2×k {[(n−m+2padding)/stride]+1}2×k

神经元个数 = 得到的特征图的大小 × 特征图的个数 = 特征图计算公式2 × 卷积核个数;

格外注意由特征图计算公式得到的为特征图的边长,并非特征图的大小。

特殊地,当 t = 1 t=1 t=1时卷积核为单通道卷积核,此时参数个数为 ( m × m + 1 ) × k (m×m+1)×k (m×m+1)×k;

更特殊地,再当 k = 1 k=1 k=1时卷积核个数为1,此时参数个数为 ( m × m + 1 ) (m×m+1) (m×m+1)。

卷积神经网络典型模型

LeNet-5

【人工智能】深度学习(QDU)

不算输入层,LeNet-5共有7层

INPUT-输入层:

  • 输入层神经元个数为 32 × 32 32×32 32×32,即要求输入图像大小为 32 × 32 32×32 32×32。

C1-卷积层:

  • 使用 6 6 6个大小为 5 × 5 5×5 5×5的卷积核以步长为1对输入图像进行卷积。
  • 经过该层后特征图大小:每幅特征图的边长为 ⌊ 32 − 5 ⌋ / 1 + 1 = 28 ⌊32-5⌋/1+1=28 ⌊32−5⌋/1+1=28,所以特征图大小为 28 × 28 28×28 28×28。
  • 神经元个数的计算:每个卷积核对应一幅特征图,即神经元个数等于特征图大小 28 × 28 28×28 28×28,因此C1层神经元的个数为 6 × 28 × 28 6×28×28 6×28×28。
  • 可训练的参数个数的计算:每个卷积核的大小为 5 × 5 5×5 5×5,所以每个卷积核 ( 5 × 5 + 1 ) (5×5+1) (5×5+1)个参数(含偏置 b b b),则六个卷积核总共 6 × ( 5 × 5 + 1 ) = 156 6×(5×5+1)=156 6×(5×5+1)=156
  • 与输入层的连接数的计算:即计算两层的连线数,每个卷积核对应一幅特征图,每幅特征图中的每个神经元都要与输入层相连,且一个神经元与 ( 5 × 5 + 1 ) (5×5+1) (5×5+1)个输入层神经元相连(含偏置),因此总连接数为 6 × ( ( 5 × 5 + 1 ) × ( 28 × 28 ) ) = 122 , 304 6×((5×5+1)×(28×28))=122,304 6×((5×5+1)×(28×28))=122,304。

S2层-池化层:

  • C1层向S2层提供 6 6 6幅大小为 28 × 28 28×28 28×28的图像(特征图)。
  • 采用大小为 2 × 2 2×2 2×2的池化核以步长为2进行采样,最终得到的神经元个数为 6 × 14 × 14 6×14×14 6×14×14。

如果考虑激活函数提供的可训练参数的话,每幅特征图1个因子和1个偏置,所以总共12个参数。

如果考虑偏置,则连接数为 6 × ( ( 2 × 2 + 1 ) × ( 14 × 14 ) ) = 5880 6×((2×2+1)×(14×14))=5880 6×((2×2+1)×(14×14))=5880。

C3层-卷积层:

  • 使用 16 16 16个大小为 5 × 5 5×5 5×5的卷积核以步长为1对输入图像进行卷积。

  • 经过该层后特征图大小:依然采用公式计算,得到大小为 10 × 10 10×10 10×10。

  • 神经元个数的计算:因为神经元的个数仅与卷积核的个数与大小有关,所以可以比较容易地计算出该层总共 16 × 10 × 10 16×10×10 16×10×10个神经元。

  • 难点:如何从6幅特征图得到16幅特征图?

【人工智能】深度学习(QDU)

​ 首先要明白这个图,C3层的前六个特征图(0,1,2,3,4,5)由S2层的相邻三个特征图作为输入,C3层接下来的6个特征图(6,7,8,9,10,11)由S2层的相邻四个特征图作为输入,12,13,14号特征图由S2间断的四个特征图作为输入,15号特征图由S2层全部(6个)特征图作为输入。

计算可训练的参数个数:我们已经知道了每幅输出特征图都对应一个卷积核,这里的卷积核有点特殊,每个卷积核都是一个多通道卷积核(RGB三通道,就可以想象为是一种多通道卷积核)。用C3层输出的0号特征图举例,它由S2层0,1,2号特征图作为输入,由于C3层共有16个卷积核,即C3每一个特征图是由一个卷积核对S2层相应的输入特征图卷积得到的,如下图所示。

【人工智能】深度学习(QDU)

​ 该图说明,C3层的0号卷积核为三通道卷积核,每一个通道对各自对应的输入特征图进行卷积,图中就是C3层的0号卷积核的第一个通道对S2层的0号特征图进行卷积,C3层的0号卷积核的第二个通道对S2层的1号特征图进行卷积,C3层的0号卷积核的第三个通道对S2层的2号特征图进行卷积,每个通道都会得到一个值,将这些值投入激活函数,结果作为一个输出神经元。当该卷积核卷积完成后就会得到一幅输出特征图,图中对应0号特征图。

​ 类似地,(1,2,3,4,5)号卷积核也都是三通道卷积核;同理,对于(6,7,8,9,10,11)号卷积核而言,都是四通道卷积核;(12,13,14)号卷积核为五通道卷积核;15号卷积核为六通道卷积核。(每个卷积核包含多个通道,这又有点像每个卷积核进行卷积实际也是在进行多卷积核卷积,但每个卷积核使用的是一个偏置)

​ 因此,可以计算参数: ( 3 × 5 × 5 + 1 ) × 6 + ( 5 × 5 × 4 + 1 ) × 6 + ( 5 × 5 × 4 + 1 ) × 3 + ( 5 × 5 × 6 + 1 ) × 1 = 1516 (3×5×5+1)×6+(5×5×4+1)×6+(5×5×4+1)×3+(5×5×6+1)×1=1516 (3×5×5+1)×6+(5×5×4+1)×6+(5×5×4+1)×3+(5×5×6+1)×1=1516(这里应该是仅考虑了卷积核上的权重,而不考虑激活函数中的参数)

  • 与前一层的连接数的计算:卷积层的连接数就是可训练参数的个数乘以得到的特征图的大小,即 1516 × 10 × 10 = 151600 1516×10×10=151600 1516×10×10=151600。

​ 推导过程如下:

【人工智能】深度学习(QDU)

​ 总共得到 16 × 10 × 10 16×10×10 16×10×10个神经元,其中 6 6 6个是由六个不同的三通道卷积核卷积得到, 9 9 9个是由九个四通道卷积核卷积得到, 1 1 1个是由一个六通道卷积核卷积得到。先算“三通道卷积核卷积得到“的神经元与前一层的连接数,黄色神经元提供的连接数为 三 通 道 卷 积 核 对 应 的 参 数 个 数 + 一 个 偏 置 三通道卷积核对应的参数个数+一个偏置 三通道卷积核对应的参数个数+一个偏置,即 5 × 5 × 3 + 1 5×5×3+1 5×5×3+1,绿色神经元与黄色神经元使用的是相同的卷积核,所以连接数相同,同为 5 × 5 × 3 + 1 5×5×3+1 5×5×3+1。同样地,橙色神经元与粉色神经元对应的连接数也为 5 × 5 × 3 + 1 5×5×3+1 5×5×3+1。因此,可以计算出“三通道卷积核卷积得到“的神经元与前一层的连接数为 ( 5 × 5 × 3 + 1 ) × 6 × 10 × 10 (5×5×3+1)×6×10×10 (5×5×3+1)×6×10×10。同理,”四通道卷积核卷积得到“的神经元与前一层的连接数为 ( 5 × 5 × 4 + 1 ) × 9 × 10 × 10 (5×5×4+1)×9×10×10 (5×5×4+1)×9×10×10;”六通道卷积核卷积得到“的神经元与前一层的连接数为 ( 5 × 5 × 6 + 1 ) × 1 × 10 × 10 (5×5×6+1)×1×10×10 (5×5×6+1)×1×10×10。

​ 如此可以发现,总连接数即为$(5×5×3+1)×6×10×10\space +\space (5×5×4+1)×9×10×10\space +\space (5×5×6+1)×1×10×10 $。将 10 × 10 10×10 10×10提出来看, ( 10 × 10 ) × ( ( 5 × 5 × 3 + 1 ) × 6   +   ( 5 × 5 × 4 + 1 ) × 9   +   ( 5 × 5 × 6 + 1 ) × 1 ) (10×10)×((5×5×3+1)×6\space+\space(5×5×4+1)×9\space+\space(5×5×6+1)×1) (10×10)×((5×5×3+1)×6 + (5×5×4+1)×9 + (5×5×6+1)×1),这后半部分就是我们上面计算的可训练的参数个数。从而得出结论:卷积层的连接数就是可训练参数的个数乘以得到的特征图的大小,池化层并不适用,但是池化层连接数的计算比较简单。

绿色神经元都对应着相同的卷积核,即权重是一样的,

如果还是不理解多核卷积的详细过程,可以看这个博客

S4层-池化层:

  • C3层向S4层提供 16 16 16幅大小为 10 × 10 10×10 10×10的图像(特征图)。
  • 进行与S2层一样的操作,采用大小为 2 × 2 2×2 2×2的池化核以步长为2进行采样,最终得到的神经元个数为 16 × 5 × 5 16×5×5 16×5×5。

如果考虑激活函数提供的可训练参数的话,每幅特征图1个因子和1个偏置,所以总共32个参数。

池化层的连接数为 16 × ( 2 × 2 + 1 ) × 5 × 5 = 2000 16×(2×2+1)×5×5=2000 16×(2×2+1)×5×5=2000,理解为每个神经元对应 ( 2 × 2 + 1 ) (2×2+1) (2×2+1)条连线即可。

C5层-卷积层:

  • 该层使用120个 5 × 5 5×5 5×5的卷积核对16幅 5 × 5 5×5 5×5的特征图进行卷积,且每个卷积核对每幅特征图都要进行一次卷积操作说明这120个卷积核为十六通道的卷积核

这也就是直观上看该层与前一层进行了全连接操作的原因。

  • 经过该层后特征图大小: 1 × 1 1×1 1×1。
  • 神经元个数的计算: 120 × 1 × 1 120×1×1 120×1×1。
  • 可训练的参数个数的计算: 120 × ( 5 × 5 × 16 + 1 ) = 48120 120×(5×5×16+1)=48120 120×(5×5×16+1)=48120。
  • 与前一层的连接数的计算:全连接,因此训练参数的个数与连接数相等,即 48120 48120 48120。

F6层-全连接层:

  • 规定全连接层共84个神经元,这个无需计算,是规定。

  • 参数个数的计算也比较简单,注意在前一层加上一个偏置项,因此可训练参数个数为 84 × ( 120 + 1 ) = 10164 84×(120+1)=10164 84×(120+1)=10164。

  • 连接数等于参数个数。

Output层-全连接层:

  • 手写数字识别,所以输出的标签个数为10,因此该层共10个神经元。
  • 采用RBF分类。

深入了解全连接层可以参考:卷积神经网络中的 “全连接层” - CSDN博客

REF

深度学习——Caffe之经典模型详解与实战(乐毅,王斌)

Neural networks and deep learning (Michael Nielsen)

卷积神经网络(CNN)详解 - 知乎

计算机视觉-深度学习与传统神经网络的区别 - CSDN博客

记-CNN中的激活函数 - leon-chan - 博客园

卷积神经网络中激活函数的意义 - CSDN博客

深度学习中的网络总结 - CSDN博客

池化层理解 - CSDN博客

关于LeNet-5卷积神经网络 S2层与C3层连接的参数计算的思考??- CSDN博客

神经网络之多维卷积的那些事(一维、二维、三维) - CSDN博客

上一篇:python 类、对象、继承、多态


下一篇:计算机网络学习28:TCP报文段首部