RNN 预测模型的介绍与分析
循环神经网络(Recurrent Neural Network,RNN)是一种能够处理序列数据的神经网络模型。
它在自然语言处理、语音识别、机器翻译等领域取得了很大的成功,同时也被广泛应用于时间序列预
测和回归分析等任务。
RNN 预测模型是一种多输入单输出的模型,它能够根据历史输入数据来预测未来的输出。该模型可以
直接替换数据,只需将待预测的数据输入模型即可。同时,该模型使用的编程语言是 MATLAB,要求
最低版本为 2021 及以上。
在该模型中,程序首先清空环境变量、关闭图窗、清空变量和命令行,以确保程序从一个干净的状态
开始执行。然后,通过 xlsread 函数导入数据,其中'数据的输入'和'数据的输出'是两个 Excel
文件的文件名。
接下来,程序对数据进行归一化处理。归一化处理是将数据按照一定的比例缩放到指定的范围内,以
便更好地适应模型的训练和预测。程序使用 mapminmax 函数将输入数据 P_train 和 P_test 归一
化到 0 到 1 的范围内,并保存归一化的参数 ps_input。同时,程序使用 mapminmax 函数将输出数
据 T_train 和 T_test 归一化到 0 到 1 的范围内,并保存归一化的参数 ps_output。
接着,程序将归一化后的数据转换为特定的格式。通过使用 for 循环,程序将 p_train 和 p_test
转换为 vp_train 和 vp_test,其中 vp_train 和 vp_test 是每个样本的列向量。这样做的目的
是为了适应 RNN 模型的输入格式。
然后,程序定义了一些基础参数。其中,numFeatures 表示特征维度,即特征变量的列数;
numResponses 表示输出维度,这里是 1。
接下来,程序设计了一个 RNN 结构。该结构包含输入层、GRU 层、ReLU 激活层、LSTM 层、丢弃层
、全连接层和回归层。其中,GRU 层和 LSTM 层是循环神经网络的一种变体,用于处理序列数据。
然后,程序根据当前计算环境(GPU 或 CPU)设置网络参数。如果有 GPU 设备,则使用 GPU 进行训
练,否则使用 CPU。
接着,程序定义了训练选项。程序使用 adam 优化算法进行训练,最大训练次数为 2000 次,梯度阈
值为 1,初始学习率为 0.01,学习率调整策略为 piecewise,训练 850 次后开始调整学习率,学习
率调整因子为 0.25,最小批量大小为 96,关闭训练过程中的详细输出,每个 epoch 后对数据进行
洗牌,训练环境根据之前判断的设备类型进行设置,最后画出训练过程的曲线。
接下来,程序使用 trainNetwork 函数对 vp_train 和 t_train 进行训练,使用之前定义的网络
结构和训练选项。