当前位置:   article > 正文

MATLAB实现简单的BP神经网络_bp神经网络代码分析matlab

bp神经网络代码分析matlab

训练集为train_data,测试集为test_data,本文所实现的简单BP神经网络结构输入层8个节点,隐藏层15个节点,输出层9个节点。该BP神经网络训练轮次为10000轮,学习率为0.001,目标误差设置为0.00001,这些参数可以根据具体的问题和数据集进行调整。

训练集数据结构如下图所示:

测试机数据结构如下图所示:

matlab实现该BP神经网络的代码如下:

  1. b=train_data;
  2. row=randperm(size(b,2));
  3. trainn=b(:,row);
  4. test=test_data;
  5. inputtrain=trainn(1:2,:);
  6. outputtrain=trainn(3,:);
  7. inputtest=test(1:2,:);
  8. outputtest=test(3,:);
  9. net=newff(inputtrain,outputtrain,[8,15,9]);
  10. net.trainParam.epochs=10000;
  11. net.trainParam.lr=0.001;
  12. net.trainParam.goal=0.00001;
  13. net=train(net,inputtrain,outputtrain);
  14. f=sim(net,inputtest);
  15. err=f-outputtest;
  16. figure(1)
  17. plot(outputtest,"bo-")
  18. hold on
  19. plot(f,"r*-")
  20. hold on
  21. legend("期望"," 预测")
  22. 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 中

针对本文所使用数据集,其实验结果如下:

3705cafad098481f9cfeb5811d2a8eea.png

fcee98292e44456aa9b59c133503b27c.png

24223548c2304ea9ae39ee05861a9a8f.png

820224b09afd44d6a52d41ab69fc0184.png

3f4e598e07494b879d539d43254a6d5a.png

从实验结果可以看出,该BP神经网络对于该数据集具有较为良好的性能。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/739016
推荐阅读
相关标签
  

闽ICP备14008679号