卷积层和全连接层的区别_卷积网络的池化层和全连接层

本文探讨卷积网络中的卷积层、全连接层和池化层。全连接层将前一层的所有输出连接到下一层的所有节点,而池化层如最大池化则用于辨别特征区域。通过一个识别手写数字的MNIST数据集示例,介绍了卷积网络的基本架构和工作原理。
摘要由CSDN通过智能技术生成

实际的卷积网络很少仅通过卷积层来构建。它们通常还有其他类型的层。最简单的是全连接层。这是一种普通的卷积网络层,其中前一层的所有输出被连接到下一层上的所有节点。通常,这些层位于网络末端。

您会在卷积网络中看到的另一种重要的层是池化层。池化层具有多种形式,但最常用的是最大池化,其中输入矩阵被拆分为相同大小的分段,使用每个分段中的最大值来填充输出矩阵的相应元素。

在上面的代码清单中,输入被拆分为 2 x 2 个象限,并应用了最大池化。因此,我可以将这个特定的操作描述为拥有一个 2 维过滤器且步幅为 2。此过程的作用是辨别出具有某个特征的广泛区域。想象这个网络正在寻找人脸。在这种情况下,您可以将这次池化的结果解释为,右下部很可能有一张人脸,左上部可能有一张人脸,右上部或左下部可能没有人脸。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

def max_pool(input, out, in_width, in_height, out_width, out_height, kernel_dim,

stride):

    max = 0

    for res_y in range(out_height):

        for res_x in range(out_width):

            for kernel_y in range(kernel_dim):

                for kernel_x in range(kernel_dim):

                    in_y = (res_y * stride) + kernel_y

                    in_x = (res_x * stride) + kernel_x

                    if input[in_y][in_x] > max:

                       max = input[in_y][in_x]

           out[res_y][res_x] = max

           max = 0

return out

示例背景

现在,让我们通过创建一个识别图像中的手写数字的网络,解决一个简单的计算机视觉问题。这是最常用于展示神经网络强大功能的基准示例之一。该示例是用 Python 编写的,并使用了 TensorFlow 库,所以您不需要过多地关注具体的实现细节,可以更多地关注整体架构。TensorFlow 有另一个优势。它内置了 MNIST 数据集,但应该注意的是,其他机器学习框架(比如 SciKit-Learn)也做到了这一点。

对于训练和测试,我使用这个 MNIST 数据集。我使用了一个基于 LeNet-5 的相对简单的卷积网络架构。这个架构在 MNIST 数据集上实现了 0.9% 的错误率,但是我不会实现这一准确率水平,因为我将放弃 LeCun 和其他人执行的许多操作来提高网络性能,而且我还会简化架构的某些方面。

8882095dcf23095ff1fe6abe19b3b11b.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值