深度学习入门-基于python的理论与实现-卷积神经网络

本文介绍了卷积神经网络(CNN)的基础知识,包括卷积层的结构、全连接层的问题、卷积运算、填充、步幅、三维数据卷积以及池化层的作用。通过Python讲解了CNN的实现过程,讨论了CNN的可视化,展示了一层层学习到的权重图像,并提及了代表性的LetNet和AlexNet模型。
摘要由CSDN通过智能技术生成

1 前言

卷积神经网络的缩写是CNN,CNN被用于人工智能各个方面,如图像识别,语音识别,几乎基于深度学习的的方法都是以CNN为基础的,本章介绍CNN的结构以及代码实现。

1.1 整体结构

CNN中的整体结构中增加了卷积层和池化层,在之前的神经网络结构中,我们知道有隐藏层Affiine和激活成RELU。还有softmax进行分类输出最终的结果
在这里插入图片描述

现在CNN中只是将之前的Affine层替换成了卷积层Convolution,把激活层替换成了池化层。
在这里插入图片描述

1.2卷积层

CNN中会出现很多新术语,并且其中传递的数据都是多维度的数据,

1.2.1 全连接层出现的问题

在之前的全连接神经网络中我们是基于Affiine层的,这种神经网络忽略了数据的形状,每一层都与上一层连接,如果一个数据是多维度的话在这种神经网络中会被变换成一列,无法利用与形状有关的信息,比如空间上相邻的像素有相似的值,RBG 的各个通道之间的关系。CNN解决了这一问题,可以输入输出多维数据,我们把输入/输出的数据叫做输入/输出特征图。

1.2.2 卷积运算

在卷积运算过程中要加入滤波器,在这里滤波器的维度是22 ,卷积神经网络的维度是33,通过在卷积神经网络上移动,然后与滤波器相同位置上的数值相乘后相加,这样就可以得到一个2*2维度的输出结果。

如下图所示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2.3 填充

我们在卷积神经网络的计算中经常要用到填充,可以在周围填充1、2、3像素的0,比如在44的卷积神经网络中填充1像素的0就变成了66维度,用33的滤波器就可以生成44 维度的输出特征值
在这里插入图片描述
那为什么要使用填充呢?我们知道44的输入与33 的滤波器相乘之后会产生2*2的输出结果比输入来说经过卷积运算之后空间变小了,为了避免这样的情况就会使用填充,确保输出空间结构和输入空间结构一样,然后再传递给下一层神经网络。

1.2.4 步幅

步幅就是将输入数据应用到滤波器的幅度,如果中间间隔一个就是步幅为2,如下图
在这里插入图片描述
在这里插入图片描述

1.2.5 三维数据的卷积运算

在这里插入图片描述
需要注意的是,输入的通道数(多少个二维矩阵)要和滤波器的通道数相同,如上图所示,滤波器的通道数和输入的通道数都为3。

1.2.6 结合方块思考

将数据和滤波器结合长方体的方块来考虑,3维数据的卷积
在这里插入图片描述
上面最后输出的是一个特征图,如果要输出多个特征图,也就是说要在通道上进行多个卷积运,那么我们就需要多个滤波器了,如下图所示:
在这里插入图片描述
在这里插入图片描述

1.2.7 批处理

上面都是基于一个输入块的,如果有多个输入块的化,怎么处理呢
在这里插入图片描述

1.3 池化层

池化是缩小高、长方向上的空间的运算。他能把激活函数的输出规模缩小,如下图所示:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nefelibat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值