基于卷积神经网络(CNN)的回归预测方法实现——附代码
目录
摘要:
基于Maltab平台,使用自带的深度学习工具箱和自带的手写图片数据,实现基于卷积神经网络的回归预测,主要是用来预测手写图片的旋转角度,通过大量的训练和预测,实现对手写数字图片的角度矫正,使原本角度错位的图片变为正常角度的图片。本文代码已做标准化处理,通过替换程序中的数据,使用者可方便的实现自己所需的预测回归功能。本代码为博主亲手编写,注释超级详细,适合初学者入门学习。如果您需要使用卷积神经网络进行分类任务,可以看我的另外一篇文章:
本文代码获取方法见文末。
卷积神经网络介绍:
卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一。卷积神经网络具有表征学习(representation learning)能力,能够按其阶层结构对输入信息进行平移不变分类(shift-invariant classification),因此也被称为“平移不变人工神经网络(Shift-Invariant Artificial Neural Networks, SIANN)
输入层
卷积神经网络的输入层可以处理多维数据,常见地,一维卷积神经网络的输入层接收一维或二维数组,其中一维数组通常为时间或频谱采样;二维数组可能包含多个通道;二维卷积神经网络的输入层接收二维或三维数组;三维卷积神经网络的输入层接收四维数组 [16] 。由于卷积神经网络在计算机视觉领域应用较广,因此许多研究在介绍其结构时预先假设了三维输入数据,即平面上的二维像素点和RGB通道。与其它神经网络算法类似,由于使用梯度下降算法进行学习,卷积神经网络的输入特征需要进行标准化处理。具体地,在将学习数据输入卷积神经网络前,需在通道或时间/频率维对输入数据进行归一化,若输入数据为像素,也可将分布于的原始像素值归一化至区间。输入特征的标准化有利于提升卷积神经网络的学习效率和表现。
隐含层
卷积神经网络的隐含层包含卷积层、池化层和全连接层3类常见构筑,在一些更为现代的算法中可能有Inception模块、残差块(residual block)等复杂构筑。在常见构筑中,卷积层和池化层为卷积神经网络特有。卷积层中的卷积核包含权重系数,而池化层不包含权重系数,因此在文献中,池化层可能不被认为是独立的层。以LeNet-5为例,3类常见构筑在隐含层中的顺序通常为:输入-卷积层-池化层-全连接层-输出。
池化层(pooling layer)
在卷积层进行特征提取后,输出的特征图会被传递至池化层进行特征选择和信息过滤。池化层包含预设定的池化函数,其功能是将特征图中单个点的结果替换为其相邻区域的特征图统计量。池化层选取池化区域与卷积核扫描特征图步骤相同,由池化大小、步长和填充控制。
输出层
卷积神经网络中输出层的上游通常是全连接层,因此其结构和工作原理与传统前馈神经网络中的输出层相同。对于图像分类问题,输出层使用逻辑函数或归一化指数函数(softmax function)输出分类标签。在物体识别(object detection)问题中,输出层可设计为输出物体的中心坐标、大小和分类。在图像语义分割中,输出层直接输出每个像素的分类结果
程序主要内容:
此示例说明如何使用卷积神经网络拟合回归模型来预测手写数字的旋转角度。
卷积神经网络(CNN 或 ConvNet)是深度学习的基本工具,尤其适用于分析图像数据。例如,您可以使用 CNN 对图像进行分类。要预测连续数据(例如角度和距离),可以在网络末尾包含回归层。
该示例构造一个卷积神经网络架构,训练网络,并使用经过训练的网络预测手写数字的旋转角度。这些预测对于光学字符识别很有用。
运行结果:
本文代码分享:
更多推荐
所有评论(0)