三、卷积神经网络(CNN)数据驱动模型

卷积神经网络(CNN)数据驱动模型

4.1 CNN算法原理

卷积神经网络(CNN)是一种前馈神经网络,通常包含数据输入层、卷积计算层、ReLU激活层、池化层、全连接层(INPUT-CONV-RELU-POOL-FC),是由卷积运算来代替传统矩阵乘法运算的神经网络。卷积神经网络与普通神经网络的区别在于,卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。在卷积神经网络的卷积层中,一个神经元只与部分邻层神经元连接。同时在一个卷积层中,通常包含若干个特征平面(featureMap),每个特征平面由一些矩形排列的的神经元组成,同一特征平面的神经元共享权值,这里共享的权值就是卷积核。卷积核一般以随机小数矩阵的形式初始化,在网络的训练过程中卷积核将学习得到合理的权值。共享权值(卷积核)带来的直接好处是减少网络各层之间的连接,同时又降低了过拟合的风险。池化(pooling)也叫做子采样,通常有均值子采样(mean pooling)和最大值子采样(max pooling)两种形式。子采样可以看作一种特殊的卷积过程。卷积和子采样大大简化了模型复杂度,减少了模型的参数。

4.2 CNN算法实现

第一步:读取测量的数据,由表3-1知,要用后10组数据预测第一组数据,这里使用pd.excel()函数读取数据。

第二步:进行数据标准化,使用正规化方法。

第三步:进行参数定义,一共有609组样本,按照8:2 划分训练集和测试集。定义迭代次数为200,批次训练样本数目为200.获取后10列为输入x,第二列为输入y。

第四步:打乱数据集行顺序。构建测试集数据。

第五步:构建CNN模型,模型如图4-1,分为

卷积层1—激活层1—最大池化层1—卷积层2—激活层2—最大池化层2—flatten层1(作用是将多维数据转化为一维特征向量,以供下一层(全连接层)使用)—全连接层1—全连接层2

                                                                图4-1 CNN模型

4.3 结果展示

4-2 训练过程中Loss变化曲线

4-3 训练过程中Mse变化曲线

Epochs:epochs的定义是向前和向后传播中所有批次的单次训练迭代。这意味着1个周期是整个输入数据的单次向前和向后传递。简单说,epochs指的就是训练过程中数据将被“轮”多少次

Loss: 即MAE平均绝对误差(Mean Absolute Error)范围[0,+∞),在评估模型时预测值与真实值完全吻合时该参数等于0,即完美模型;误差越大,该值越大。

MSE:MSE(均方差)是预测数据和原始数据对应点误差的平方和的均值

图4-4 真实值与预测值变化曲线

4.4 损失变化过程解析

在结果分析中loss表示的是训练集的损失值,val_loss是测试集的损失值

train loss 不断下降,test loss不断下降,说明模型在学习;(这是最好的情况)

train loss 不断下降,test loss趋于不变,说明模型过拟合;(此时可以使用maxpooling或者正规化)

train loss 趋于不变,test loss不断下降,说明训练中的数据集存在问题;(检查dataset)

train loss 趋于不变,test loss趋于不变,说明模型的学习遇到瓶颈,此时可以减小优化函数中学习率(Lr)或者模型处理的批量数目(batch_size);

train loss 不断上升,test loss不断上升,说明模型的设计不恰当,可能是训练参数设置不恰当,数据集经过清洗等问题。(这也是最不好的情况)

图4-5 损失变化

通过图4-2以及图4-5可以看出

train loss 的值不断的下降,test loss也在不断的下降,这表明模型在学习的过程中,并且表明设置的参数很好

4.5本章小节

本章主要阐述了卷积神经网络的具体设计步骤,从基本的调用库函数提取表格中的数据,到切片操作,再到卷积神经网络模型卷积、池化、激活、全连接各个层次的介绍以及构想,最后展示了通过构建并且训练好的模型来对测试集进行以预测的测试并展示上一章所确立的评估特征。

猜你喜欢

转载自blog.csdn.net/weixin_49305883/article/details/123240397