基于MATLAB的CNN卷积神经网络的训练和测试

这篇具有很好参考价值的文章主要介绍了基于MATLAB的CNN卷积神经网络的训练和测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、理论基础

二、核心程序

三、测试结果


一、理论基础

        卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一。卷积神经网络具有表征学习(representation learning)能力,能够按其阶层结构对输入信息进行平移不变分类(shift-invariant classification),因此也被称为“平移不变人工神经网络(Shift-Invariant Artificial Neural Networks, SIANN)”  。
       对卷积神经网络的研究始于二十世纪80至90年代,时间延迟网络和LeNet-5是最早出现的卷积神经网络;在二十一世纪后,随着深度学习理论的提出和数值计算设备的改进,卷积神经网络得到了快速发展,并被应用于计算机视觉、自然语言处理等领域 。
       卷积神经网络仿造生物的视知觉(visual perception)机制构建,可以进行监督学习和非监督学习,其隐含层内的卷积核参数共享和层间连接的稀疏性使得卷积神经网络能够以较小的计算量对格点化(grid-like topology)特征,例如像素和音频进行学习、有稳定的效果且对数据没有额外的特征工程(feature engineering)要求 。
定义:采用监督方式训练的一种面向两维形状不变性识别的特定多层感知机 。

      CNN是在目标识别领域应用及其广泛的一种网络模型,其通过卷积运算来实现对图像特征的提取,避免了传统人工神经网络需要单独设计特征提取的环节。CNN的结构主要包括conv卷积层、pool池化层,Activation激活层以及FC全连接层,其具体如下图所示:

基于MATLAB的CNN卷积神经网络的训练和测试

如图1所示的,当图像输入到CNN中时,首先进入卷积层,卷积层是CNN中最

       重要的一个网络层。在卷积计算过程中,将输入的图像和一系列大小不一的卷积核函数进行卷积运算得到特征图。卷积层越多,那么通过卷积可以提取到的图像特征图谱的特征则更深入。卷积层的计算结果和卷积核大小、数量以及补零数量等参数相关。假设输入图像的维度为120*120,卷积核大小为7*7,卷积步进为1,那么通过卷积层只有,图像维度将变为114*114。

       完成卷积运算之后,数据将进入池化层,池化层的功能等同于采样过程,其基本操作流程如图2.2所示。

基于MATLAB的CNN卷积神经网络的训练和测试

       从图2可知,池化层可以分为两种类型,均值池化的过程是使用一个2×2大小的滑动窗口,计算四个像素的平均值,得到一个原始图像维度一半的图像输出。最大值池化的过程是使用一个2×2大小的滑动窗口,计算四个像素的最大值,得到一个原始图像维度一半的图像输出。通过池化层之后,图像的维度将变为57*57。

       完成池化层之后,数据将进入激活层,激活层的功能主要是解决单感知机对于非线性数据的分类效果较差的问题。比较常用的激活层函数为ReLU。

          经过多个卷积层运算之后,数据将进入全连接层,其主要功能是将卷积后的图像数据映射到特征空间得到特征图谱,并将特征图谱和样本的分类标记进行关联。通过全连接层之后得到全连接层的标志输出。最后根据这些标记向量,转换为分类输出。

二、核心程序

...........................................................
layers = [ ...
    imageInputLayer([1 2048 1])%%2D-CNN
    
    convolution2dLayer([1,2],4)
    reluLayer
    maxPooling2dLayer([1 2],'Stride',2)
    
    convolution2dLayer([1,2],4)
    reluLayer
    maxPooling2dLayer([1 2],'Stride',2)
  
    fullyConnectedLayer(2)
    softmaxLayer
    classificationLayer];

.....................................................................

net = trainNetwork(Xtrain,ytrain,layers,options);%网络训练
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

X10=rand(100,2048);  
X20=20*rand(100,2048); 
Xtest1=[X10;X20];

for ii=1:1:200
     for jj=1:1:2048
         Xtest(1,jj,1,ii)=Xtest1(ii,jj);%%输入数据维度转化
     end
end

y10=zeros(100,1);
y20=ones(100,1);
ytest1=[y10;y20];
ytest=categorical(ytest1);%%函数包要求标签类型是categorical


YPred = classify(net,Xtest);%%网络测试
YPred1 =double(YPred);%%转化为可显示的标签
accuracy = sum(YPred == ytest)/numel(ytest)
up108

三、测试结果

基于MATLAB的CNN卷积神经网络的训练和测试文章来源地址https://www.toymoban.com/news/detail-428673.html

到了这里,关于基于MATLAB的CNN卷积神经网络的训练和测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包