matlab实现卷积神经网络CNN(一)——网络结构介绍

本文介绍了卷积神经网络(CNN)的基本结构和特性,包括局部连接、权重共享和汇聚,以及卷积层、汇聚层的作用。CNN通常由卷积层、汇聚层和全连接层组成,用于图像处理中的特征提取。文章还讨论了卷积层的计算公式,并提及在MATLAB中处理CNN数据的维度。此外,提到了最大汇聚和平均汇聚两种常见的汇聚层类型。
摘要由CSDN通过智能技术生成

一、CNN介绍

        ① 基本背景

        卷积神经网络(convolutional neural network)是具有局部连接、权重共享等特性的深层前馈神经网络,最早主要是用来处理图像信息。
        相比于全连接前馈神经网络,卷积神经网络有三个结构上的特性:局部连接、权重共享以及汇聚,这些特性使得卷积神经网络具有很好的特征提取能力,且参数更少。

        卷积神经网络一般由卷积层汇聚层和全连接层构成。

        ② 卷积层

对于一维卷积层,我们有:

y=\omega *x=\sum_{k=1}^{n}\omega _{k}x_{t-k+1}

该卷积核大小为 1×3,在一维数据上依次滑动计算。

根据卷积核滑动计算方式的定义,我们自然地会引入步长和零填充来增加卷积的多样性,以便更加灵活地进行特征提取。

 

 假设卷积层的输入神经元个数为𝑀,卷积大小为𝐾步长为𝑆在输入两端各填补𝑃 0zero padding),那么该卷积层的神经元数量为(𝑀 − 𝐾 + 2𝑃)/𝑆 + 1.

(划重点,该公式很重要,在我们设计卷积层、池化层大小个数时需要考虑)

      

以此类推,对于二维卷积层,我们有:

y_{ij}=\sum_{u=1}^{U}\sum_{v=1}^{V}\omega _{uv}x_{i-u+1,j-u+1}

该图中的卷积层进行了180°翻转处理,卷积核的翻转会减少一些不必要的操作和开销,其本身翻转与否并不影响其特征提取能力。

        具体到MATLAB程序应用当中,即我们的输入数据应该是一个四维数组【M,N,D,SN】

其中,M和N分别为单个样本数据长和宽,D为通道数(输入特征类别,如RGB有三个通道),SN为样本个数。

        抛开样本个数,我们考虑单个的样本数据结构【M,N,D】如下图所示:

         输入特征映射组x为【M,N,D】,输出特征映射组y为【M',N',P】,卷积核\omega为【U,V,P,D】

D为输入特征个数;P为输出特征个数;U、V是二维卷积核的长宽。

假设D=3;当P=1时:

        就只会有一种卷积核(上图紫色柱体)存在,该柱体包含的权重信息代表了对你所需要输出的那一个特征的提取方式(即一个拟合函数,对应一个输出),该柱体在平面M×N滑动,并且在深度D方向(D=1、D=2、D=3)分别进行二维卷积操作,最后将三层的卷积结果相加并进行非线性映射得到输出特征映射组y;

当P=2时:

        就会有两种卷积核(上图紫色柱体)存在,两个不同的柱体包含不同的权重信息代表了对你所需要输出的不同的两个特征的提取方式(即两个拟合函数,对应两个输出),两个柱体分别在平面M×N滑动,并且在深度D方向(D=1、D=2、D=3)分别进行二维卷积操作,最后将三层的卷积结果相加并进行非线性映射,由柱体1得到的输出特征映射组为y1,柱体2得到的输出特征映射组为y2;

以此类推……

        ③ 池化层 

        池化层又叫汇聚层、子采样层,其作用是进行特征选择,降低神经元个数,从而减少参数个数。根据卷积层的计算方式我们可以发现,卷积层主要是减少了网络中连接的数量神经元的个数却并没有显著减少。因此在卷积层之后加上一个汇聚层从而降低特征维数避免过拟合。

        常用的汇聚层有两种:

        最大汇聚:

        选择区域内所有神经元的最大活性值作为这个区域的表示。

         理解了最大汇聚层的原理,第二种常见的汇聚层:平均汇聚层也不难理解,即是取区域内所有神经元活性值的平均值。

        ④ 卷积网络整体结构

        一个典型的卷积网络是由卷积层、 汇聚层 全连接层交叉堆叠而成。

 了解完CNN的输入输出格式以及网络结构后,我们就可以展开代码的编写了。

具体代码将在(二)中给出。

参考书籍:神经网络与深度学习》邱锡鹏 ,文中图片均来自该书。

MATLAB中,可以使用深度学习工具箱来实现卷积神经网络(Convolutional Neural Network,CNN)。卷积神经网络是一种非常重要的神经网络模型,尤其适用于图像识别、语音识别等任务。该网络具有局部连接、权重共享以及汇聚等特性,使得它能够有效地提取图像的特征,并且参数更少。 在MATLAB实现卷积神经网络的步骤如下: 1. 准备训练数据和测试数据。这些数据可以是图像数据集,例如手写数字识别任务中的MNIST数据集。 2. 根据任务需求设计网络模型。可以使用MATLAB提供的卷积层、池化层、全连接层等网络层来构建网络模型。 3. 进行网络的训练。可以使用MATLAB提供的训练函数,如trainNetwork(),来对网络进行训练。在训练过程中,可以指定损失函数、优化器和训练参数等。 4. 使用测试数据进行分类预测并计算准确率。可以使用训练好的网络对测试数据进行预测,并计算预测结果的准确率。 通过使用MATLAB提供的深度学习工具箱,可以简化卷积神经网络实现和训练过程,更方便地进行图像识别等任务的开发和研究。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [卷积神经网络MATLAB中的实现](https://blog.csdn.net/code_welike/article/details/132185480)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [matlab实现卷积神经网络CNN(一)——网络结构介绍](https://blog.csdn.net/lqqqqqqq123/article/details/130806320)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值