matlab实现BP神经网络(完整DEMO)

这篇具有很好参考价值的文章主要介绍了matlab实现BP神经网络(完整DEMO)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com


目录

一、BP神经网络Demo代码   

1.1 代码整体思路

1.2 BP神经网络Demo代码

二、运行结果   

2.1 拟合曲线  

2.2训练误差与预测误差

三、相关文章

3.1-BP的入门学习目录:老饼|BP神经网络-入门教程

3.2-BP的建模应用目录:老饼|BP神经网络-建模应用

3.3-不调用工具箱自实现BP神经网络:老饼|BP神经网络-BP算法重现


本文展示一个日常使用BP神经网络时用于参考的代码DEMO模板

一、BP神经网络Demo代码   

这里提供一个相对全面的DEMO作为模板,
方便日常使用BP神经网络时复制

1.1 代码整体思路

代码整体思路如下
1、生成数据                                                                                                   
2、设置一个三层的BP网络,并将隐节点设为3                                                
3、训练网络                                                                                                  
4、网络效果评估                                                                                           
(1) 打印训练数据、测试数据的平均绝对误差、平均绝对误差占比         
(2) 绘制训练数据、测试数据的拟合效果                                              
5、使用训练好的网络对数据进行预测                                                             

1.2 BP神经网络Demo代码

具体代码如下(matlab2018a亲测已通过)

clear all;
close all ;
%================原始数据====================
x1 = linspace(-3,3,100);                                                  % 在[-3,3]之间线性生成100个数据
x2 = linspace(-2,1.5,100);                                                % 在[-2,1.5]之间线性生成100个数据
X  = [x1;x2];                                                             % 将x1,x2作为输入数据
y1 = 10*sin(x1)+0.2*x2.*x2;                                               % 生成y1
y2 = 10*sin(x2)+0.2*x1.*x1;                                               % 生成y2
y  = [y1;y2];                                                             % y里包含两个输出y1,y2
setdemorandstream(88);                                                    % 老饼为了每次运行的结果一致设定随机种子,实际中可以去掉
%==============网络训练 ============================
%使用用输入输出数据(X,y)建立网络,
%隐节点个数设为3.其中输入层到隐层、隐层到输出层的节点分别为tansig和purelin,使用trainlm方法训练。
net = newff(X,y,3,{'tansig','purelin'},'trainlm');
%设置一些常用关键参数
net.trainparam.goal        = 0.00001;                                     % 训练目标:均方误差低于0.0001
net.trainparam.show        = 400;                                         % 每训练400次展示一次结果
net.trainparam.epochs      = 15000;                                       % 最大训练次数:15000.
net.divideParam.trainRatio = 0.7;                                         % 用于训练的数据比例
net.divideParam.valRatio   = 0.15 ;                                       % 用于验证过拟合的数据比例
net.divideParam.testRatio  = 0.15;                                        % 用于比例
net.trainparam.max_fail    = 6;                                           % 过拟合验证失败次数

[net,tr,net_y] = train(net,X,y);  % 调用matlab神经网络工具箱自带的train函数训练网络y,net返回

% ===========网络效果评估==================================
% 提取训练数据与测试数据                                                
train_net_y = net_y(:,tr.trainInd);                                       % 训练数据的预测值
test_net_y  = net_y(:,tr.testInd);                                        % 测试数据的预测值
train_y     = y(:,tr.trainInd);                                           % 训练数据的真实值
test_y      = y(:,tr.testInd);                                            % 测试数据的真实值

% 计算误差                                                              
train_err      = mean(abs(train_net_y(:)-train_y(:)))                     % 训练数据的误差
test_err       = mean(abs(test_net_y(:)-test_y(:)))                       % 测试数据的误差
train_err_rate = mean(abs((train_net_y(:)-train_y(:))./train_y(:)))       % 训练数据的误差比
test_err_rate  = mean(abs((test_net_y(:)-test_y(:))./test_y(:)))          % 测试数据的误差比

% 绘制拟合曲线图
figure
[out_size,sample_num] = size(y);  % 输出的个数,样本个数
for i = 1 : out_size
    % 绘制训练数据第i个输出的拟合效果
    subplot(out_size,2,(i-1)*2+1);
    title(['训练数据-第',num2str(i),'个输出的拟合效果'])
    hold on 
    plot(1:size(train_y,2),train_y(i,:),'b')
    plot(1:size(train_net_y,2),train_net_y(i,:),'r')
    % 绘制测试数据第i个输出的拟合效果
    subplot(out_size,2,(i-1)*2+2);
    title(['测试数据-第',num2str(i),'个输出的拟合效果'])
    hold on 
    plot(1:size(test_y,2),test_y(i,:),'b')
    plot(1:size(test_net_y,2),test_net_y(i,:),'r')
end 

%=============网络对新输入的使用==========================
sim_y = sim(net,X);               % 实际与上面的net_y一致
以上就是一个完整的matlab实现BP神经网络Demo代码了
 使用时主要修改的有方法
 👉 1. 建模的数据                                    
👉 2. 隐节点的个数                               
👉 3. 训练参数根据需要进行选择悸修改 

二、运行结果   

运行结果如下

2.1 拟合曲线   

matlab实现BP神经网络(完整DEMO)

2.2训练误差与预测误差

matlab实现BP神经网络(完整DEMO)

从结果可以看到,训练数据效果和测试数据效果都不错文章来源地址https://www.toymoban.com/news/detail-447081.html

三、相关文章

3.1-BP的入门学习目录:老饼|BP神经网络-入门教程

3.2-BP的建模应用目录:老饼|BP神经网络-建模应用

3.3-不调用工具箱自实现BP神经网络:老饼|BP神经网络-BP算法重现

到了这里,关于matlab实现BP神经网络(完整DEMO)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习及其MATLAB实现——BP神经网络

    本文章为学习MATLAB机器学习时所整理的内容,本篇文章是该系列第一篇,介绍了BP神经网络的基本原理及其MATLAB实现所需的代码,并且增加了一些个人理解的内容。 目录 人工神经网络概述 什么是人工神经网络? 人工神经元模型  神经网络可以分为哪些? BP神经网络概述 BP神

    2024年02月07日
    浏览(39)
  • BP神经网络入门(原理+matlab代码实现)

    对于很多刚入门的小伙伴来说,神经网络可能比较陌生。神经网络其实是对人认知物体的一种仿真。比如幼儿园老师再教小朋友认动物的时候,会让记住一些特征:比如兔子有长长的耳朵,爱吃萝卜和青菜.........,神经网络也是这样通过构建特征值之间的关系来预测一个较为可

    2023年04月23日
    浏览(36)
  • (转载)BP 神经网络的数据分类(matlab实现)

     本博客的完整代码获取: MATLAB神经网络43个案例分析 - MATLAB Simulink Books         BP神经网络是一种多层前馈神经网络,该网络的主要特点是信号前向传递,误差反向传播。在前向传递中,输入信号从输人层经隐含层逐层处理,直至输出层。每一层的神经元状态只影响下一层神经

    2024年02月16日
    浏览(29)
  • BP神经网络回归预测MATLAB实现超详细

            哈喽!小伙伴们,接着上篇回归预测之支持向量机回归预测,今天给大家带来MATLAB实现bp神经网络回归预测,本文主要是陈述BP神经网络实现过程,不在对原理进行讲解啦。需要代码的小伙伴可以私聊我!无偿。接下来进入正题啦!         bp神经网络回归预测实

    2023年04月20日
    浏览(27)
  • BP神经网络的MATLAB实现(含源代码)

    BP(back propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是应用最广泛的神经网络模型之一 具体数学推导以及原理在本文不做详细介绍,本文将使用MATLAB进行BP神经网络的应用与实践 BP神经网络是一

    2024年02月04日
    浏览(29)
  • 算法介绍及实现——基于遗传算法改进的BP神经网络算法(附完整Python实现)

    目录 一、算法介绍 1.1 遗传算法 1.2 为什么要使用遗传算法进行改进 二、算法原理 三、算法实现 3.1 算子选择 3.2 代码实现          遗传算法是受启发于自然界中生物对于自然环境 “适者生存”的强大自适应能力,通过对生物演化过程模拟和抽象,构建了以自然界生物演

    2024年02月03日
    浏览(31)
  • 基于遗传算法的BP神经网络优化算法(matlab实现)

            BP网络是一类多层的前馈神经网络。它的名字源于在网络训练的过程中,调整网络的权值的算法是误差的反向传播的学习算法,即为BP学习算法。BP算法是Rumelhart等人在1986年提出来的。由于它的结构简单,可调整的参数多,训练算法也多,而且可操作性好,BP神经网

    2024年01月16日
    浏览(39)
  • 15.1 BP神经网络实现图像压缩——了解神经网络在图像处理方面的应用(matlab程序)

    1. 简述        BP神经网络现在来说是一种比较成熟的网络模型了,因为神经网络对于数字图像处理的先天优势,特别是在图像压缩方面更具有先天的优势,因此,我这一段时间在研究神经网络的时候同时研究了一下关于BP网络实现图像压缩的原理和过程,并且是在MATLAB上进行了仿真

    2024年02月12日
    浏览(29)
  • 【SSA-BP预测】基于麻雀算法优化BP神经网络回归预测研究(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 麻雀算

    2024年02月08日
    浏览(46)
  • 使用BP神经网络和Elman Net预测航班价格(Matlab代码实现)

     👨‍🎓 个人主页: 研学社的博客     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果

    2023年04月21日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包