卷积神经网络在池化步骤之后如何进行?
Posted
技术标签:
【中文标题】卷积神经网络在池化步骤之后如何进行?【英文标题】:How do Convolutional neural networks proceed after the pooling step? 【发布时间】:2019-05-03 13:53:54 【问题描述】:我正在尝试了解卷积神经网络,但我无法理解在池化步骤之后神经网络会发生什么。
所以从左边开始,我们的 28x28 矩阵代表我们的图片。我们对其应用三个 5x5 过滤器以获得三个 24x24 特征图。然后,我们将最大池化应用于每个 2x2 方形特征图,以获得三个 12x12 池化层。我了解这一步的所有内容。
但是现在会发生什么?我正在阅读的文件说:
"网络中的最后一层连接是全连接的 层。也就是说,这一层连接了最大池中的每个神经元 层到 10 个输出神经元中的每一个。 "
文本没有进一步描述除此之外发生的事情,它给我留下了一些问题。
三个池化层如何映射到 10 个输出神经元?通过完全连接,这是否意味着 12x12 池化层的三层中每一层中的每个神经元都有一个将其连接到输出层的权重?那么从池化层到输出层有 3x12x12x10 个权重?输出神经元是否仍然采用激活函数?
图片和摘自此在线资源:http://neuralnetworksanddeeplearning.com/chap6.html
【问题讨论】:
我投票结束这个问题,因为它不是关于编程的 【参考方案1】:本质上,全连接层提供了神经网络进行预测的主要方式。如果你有十个类,那么一个全连接层由十个神经元组成,每个神经元对于分类样本属于该类的可能性都有不同的概率(每个神经元代表一个类)。这些概率由隐藏层和卷积决定。池化层只是简单地输出到这十个神经元中,为您的网络提供最终接口以进行预测。这是一个例子。池化后,您的全连接层可以显示:
(0.1)
(0.01)
(0.2)
(0.9)
(0.2)
(0.1)
(0.1)
(0.1)
(0.1)
(0.1)
其中每个神经元包含样本属于该类的概率。在这种情况下,如果您正在对手写数字的图像进行分类,并且每个神经元对应于图像为 1-10 的预测,那么预测将为 4。希望对您有所帮助!
【讨论】:
【参考方案2】:是的,你在正确的轨道上。有一个层的权重矩阵为 4320 个条目。
此矩阵通常排列为 432x10。这是因为这 432 个数字是输入图像的固定大小表示。在这一点上,你并不关心你是如何得到它的——CNN、普通的前馈或疯狂的 RNN 逐像素进行,你只想将描述转化为分类。在大多数工具包中(例如TensorFlow
、PyTorch
甚至是普通的numpy
),您需要将池化的 3x12x12 输出显式重塑为 432 长的向量。但这只是重新排列,个别元素不会改变。
此外,通常会有一个 10 长的偏差向量,每个输出元素都有一个。
最后关于非线性:由于这是关于分类,您通常希望输出 10 个单位来表示输入属于特定类别(数字)的后验概率。为此,使用softmax function:y = exp(o) / sum(exp(o))
,其中exp(o)
代表逐元素取幂。它保证它的输出将是一个正确的分类分布,所有元素都在 并总结为 1。Deep Learning book 中对神经网络中的 softmax 进行了很好的详细讨论(除了 softmax 子小节本身,我建议阅读第 6.2.1 节。)
另请注意,这根本不是卷积网络特有的,您会在几乎每个分类网络的末尾找到这个块 fully connected layer
-- softmax
。您还可以将此块视为实际的分类器,而它前面的任何东西(在您的情况下是浅层 CNN)只是试图准备好的特征。
【讨论】:
以上是关于卷积神经网络在池化步骤之后如何进行?的主要内容,如果未能解决你的问题,请参考以下文章