赞
踩
训练集为train_data,测试集为test_data,本文所实现的简单BP神经网络结构输入层8个节点,隐藏层15个节点,输出层9个节点。该BP神经网络训练轮次为10000轮,学习率为0.001,目标误差设置为0.00001,这些参数可以根据具体的问题和数据集进行调整。
训练集数据结构如下图所示:
测试机数据结构如下图所示:
matlab实现该BP神经网络的代码如下:
- b=train_data;
- row=randperm(size(b,2));
- trainn=b(:,row);
- test=test_data;
- inputtrain=trainn(1:2,:);
- outputtrain=trainn(3,:);
- inputtest=test(1:2,:);
- outputtest=test(3,:);
-
- net=newff(inputtrain,outputtrain,[8,15,9]);
-
- net.trainParam.epochs=10000;
- net.trainParam.lr=0.001;
- net.trainParam.goal=0.00001;
-
- net=train(net,inputtrain,outputtrain);
-
- f=sim(net,inputtest);
- err=f-outputtest;
-
- figure(1)
- plot(outputtest,"bo-")
- hold on
- plot(f,"r*-")
- hold on
- legend("期望"," 预测")
- xlabel("数据"),ylabel("值"),title("BP神经网络误差对比")
-
1.row=randperm(size(b,2));:生成一个随机排列的行索引,并将结果存储在变量 row 中。size(b,2) 返回 b 矩阵的列数,即数据样本的数量。
2.trainn=b(:,row);:根据随机排列的行索引,重新排序矩阵 b 的行,并将结果存储在变量 trainn 中。这样可以随机打乱训练数据的顺序。
3.inputtrain=trainn(1:2,:);:从打乱顺序后的 trainn 矩阵中提取前两行作为训练数据的输入特征,将结果存储在变量 inputtrain 中。
4.outputtrain=trainn(3,:);:从打乱顺序后的 trainn 矩阵中提取第三行作为训练数据的输出标签,将结果存储在变量 outputtrain 中。
5.inputtest=test(1:2,:);:从 test 矩阵中提取前两行作为测试数据的输入特征,将结果存储在变量 inputtest 中。
6.outputtest=test(3,:);:从 test 矩阵中提取第三行作为测试数据的输出标签,将结果存储在变量 outputtest 中。
7.net=newff(inputtrain,outputtrain,[8,15,9]);:创建一个 BP 神经网络模型并将其存储在变量 net 中。inputtrain 是输入特征,outputtrain 是输出标签,[8,15,9] 是一个向量,表示神经网络的层结构,其中 [8,15,9] 表示输入层有 8 个节点,隐藏层有 15 个节点,输出层有 9 个节点。
8.net.trainParam.epochs=10000;:设置神经网络的训练参数 epochs 为 10000,表示训练的轮数(迭代次数)。
9.net.trainParam.lr=0.001;:设置神经网络的学习率为 0.001,控制权重更新的步长。
10.net.trainParam.goal=0.00001;:设置神经网络的目标误差为 0.00001,当训练误差达到该值时,训练过程将停止。
11.net=train(net,inputtrain,outputtrain);:使用训练数据 inputtrain 和 outputtrain 对神经网络进行训练,并将训练后的网络模型保存在变量 net 中。
12.f=sim(net,inputtest);:使用训练好的神经网络模型 net 对测试数据 inputtest 进行预测,将预测结果存储在变量 f 中。
13.err=f-outputtest;:计算预测结果 f 与真实输出标签 outputtest 之间的误差,将误差存储在变量 err 中
针对本文所使用数据集,其实验结果如下:
从实验结果可以看出,该BP神经网络对于该数据集具有较为良好的性能。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。