BP神经网络及其app设计

  • bp神经网络的基本原理和组成
  • app设计的基本思路
  • app设计及其代码实现

bp神经网络的基本原理和组成

bp神经网络的基本原理和组成:
神经网络的基本代码如下:具体的过程也比较简单为此在这里也就不多多赘述

%% 此程序matlab编程实现的BP神经网络
% 清空环境变量
clear all
clc%%第一步 读取数据
input=randi([1 20],2,200);  %载入输入数据是1-20的2行200列数据,随机数
output=input(1,:)'+input(2,:)';  %载入输出数据,输出的数据是200行1列的数据,其结果是1行1列的的数据加上
% 第2行1列的输出的叠加,为两输入一输出%% 第二步 设置训练数据和预测数据
input_train = input(:,1:190);%输入的数据是2行190列的数据
output_train =output(1:190,:)';%输出的数据是190行1列的数据
input_test = input(:,191:200);%测试的数据为2行191-200列的数据
output_test =output(191:200,:)';%输出的数据为191-200列的数据%节点个数
%inputnum=2;%输入的节点个数
hiddennum=5;%隐含层节点数量经验公式p=sqrt(m+n)+a ,故分别取2~13进行试验
%outputnum=1;%输出的节点个数%% 第三步 训练样本数据归一化
[inputn,inputps]=mapminmax(input_train);%归一化到[-1,1]之间,inputps用来作下一次同样的归一化
%归一化的原因是减少计算量和预测误差,由于在计算时,将输入是、输出的数据归一化了
%为此在结束时,需要将预测结果反归一化
[outputn,outputps]=mapminmax(output_train);
%% 第四步 构建BP神经网络net=newff(inputn,outputn,hiddennum,{'tansig','purelin'},'trainlm');
% 建立模型,传递函数使用purelin,采用梯度下降法训练%W1= net. iw{1, 1};%输入层到中间层的权值
%B1 = net.b{1};%中间各层神经元阈值%W2 = net.lw{2,1};%中间层到输出层的权值
%B2 = net. b{2};%输出层各神经元阈值
%可以通过上述代码查看权值和阈值
%% 第五步 网络参数配置( 训练次数,学习速率,训练目标最小误差等)
net.trainParam.epochs=1000;         % 训练次数,这里设置为1000次
net.trainParam.lr=0.01;             % 学习速率,这里设置为0.01
net.trainParam.goal=0.00001;        % 训练目标最小误差,这里设置为0.00001%% 第六步 BP神经网络训练
net=train(net,inputn,outputn);%开始训练,其中inputn,outputn分别为输入输出样本%% 第七步 测试样本归一化,测试的数据归一化
inputn_test=mapminmax('apply',input_test,inputps);% 对样本数据进行归一化%% 第八步 BP神经网络预测
an=sim(net,inputn_test); %用训练好的模型进行仿真%% 第九步 预测结果反归一化与误差计算
test_simu=mapminmax('reverse',an,outputps); %把仿真得到的数据还原为原始的数量级
error=test_simu-output_test;      %预测值和真实值的误差%%第十步 真实值与预测值误差比较
figure(1)
plot(output_test,'bo-')
hold on
plot(test_simu,'r*-')
hold on
plot(error,'square','MarkerFaceColor','b')
legend('期望值','预测值','误差')
xlabel('数据组数')
ylabel('值')
[c,l]=size(output_test);
MAE1=sum(abs(error))/l;
MSE1=error*error'/l;
RMSE1=MSE1^(1/2);
disp(['-----------------------误差计算--------------------------']);
disp(['隐含层节点数为: ',num2str(hiddennum),'时的误差结果如下:'])
disp(['平均绝对误差MAE为:',num2str(MAE1)])
disp(['均方误差MSE为: ',num2str(MSE1)])
disp(['均方根误差RMSE为: ',num2str(RMSE1)])

app设计的基本思路

app设计的基本思路:
接下来解释app的设计:其中主要的思想是通过,自定义隐含层、训练次数、学习速率、最小误差参数,然后按下计算按钮就可以生成结果图、以及误差统计数据。(也可以自己选择一些参数在这里仅使用这些参数作为自定义参数)

app设计及其代码实现

1.基本界面如下:

2.代码的实现:
下面展示一些 内联代码片

// A code block
var foo = 'bar';
%%%%%计算按钮的回调函数代码如下:input_data=xlsread('input_data.xlsx');%读取表格中的数据,输入值output_data=xlsread('output_data.xlsx');%读取表格中的数据,输出值(此时的表格中的数据需要放app运行的文件目录下才能读取)%%第一步 读取数据input_train = input_data(:,1:190);%输入的数据是2行190列的数据output_train =output_data(1:190,:)';%输出的数据是190行1列的数据input_test = input_data(:,191:200);%测试的数据为2行191-200列的数据output_test =output_data(191:200,:)';%输出的数据为191-200列的数据%节点个数%inputnum=app.input.Value;%输入的节点个数
%%%%自定义隐含层数,并赋值给hiddennumhiddennum=app.middle.Value;%隐含层节点数量经验公式p=sqrt(m+n)+a ,故分别取2~13进行试验,代码的含义是通过%outputnum=app.output.Value;%输出的节点个数%% 第三步 训练样本数据归一化[inputn,inputps]=mapminmax(input_train);%归一化到[-1,1]之间,inputps用来作下一次同样的归一化%归一化的原因是减少计算量和预测误差,由于在计算时,将输入是、输出的数据归一化了%为此在结束时,需要将预测结果反归一化[outputn,outputps]=mapminmax(output_train);%% 第四步 构建BP神经网络net=newff(inputn,outputn,hiddennum,{'tansig','purelin'},'trainlm');% 建立模型,传递函数使用purelin,采用梯度下降法训练%W1= net. iw{1, 1};%输入层到中间层的权值%B1 = net.b{1};%中间各层神经元阈值%W2 = net.lw{2,1};%中间层到输出层的权值%B2 = net. b{2};%输出层各神经元阈值%% 第五步 网络参数配置( 训练次数,学习速率,训练目标最小误差等)
%%%%%自定义训练次数赋值给net.trainParam.epochs            net.trainParam.epochs=app.epochs.Value;         % 训练次数,这里设置为1000次
%%%%%自定义学习速率赋值给 net.trainParam.lr            net.trainParam.lr=app.lr.Value;             % 学习速率,这里设置为0.01
%%%%%自定义训练目标最小误差赋值给net.trainParam.goal            net.trainParam.goal=app.goal.Value;        % 训练目标最小误差,这里设置为0.00001%% 第六步 BP神经网络训练net=train(net,inputn,outputn);%开始训练,其中inputn,outputn分别为输入输出样本%% 第七步 测试样本归一化,测试的数据归一化inputn_test=mapminmax('apply',input_test,inputps);% 对样本数据进行归一化%% 第八步 BP神经网络预测an=sim(net,inputn_test); %用训练好的模型进行仿真%% 第九步 预测结果反归一化与误差计算test_simu=mapminmax('reverse',an,outputps); %把仿真得到的数据还原为原始的数量级error_num=test_simu-output_test;      %预测值和真实值的误差%%第十步 真实值与预测值误差比较
%%%%%绘制图形在app.UIAxes图形显示控件上plot(app.UIAxes,output_test,'bo-');hold (app.UIAxes,'on');plot(app.UIAxes,test_simu,'r*-');hold (app.UIAxes,'on');plot(app.UIAxes,error_num,'square','MarkerFaceColor','b');legend(app.UIAxes,'期望值','预测值','误差');[c,l]=size(output_test);RMSE=sum(abs(error_num))/l;MSE1=error_num*error_num'/l;RMSE1=MSE1^(1/2);rmse=string(RMSE);mse1=string(MSE1);rmse1=string(RMSE1);
%%%%%计算的统计值分别显示在三个文本中(需要强制转换成字符类型)如果使用数值直接赋值即可        app.EditField.Value=rmse;app.EditField_2.Value=mse1;app.EditField_3.Value=rmse1;

组件名如下:

3.运算结果:

基本的appdesigner,在我的上一篇博客里,如果有什么疑问的话也可以以留言。

BP神经网络及其app设计相关推荐

  1. 鲸鱼优化算法优化BP神经网络回归预测的算法设计-附代码

    鲸鱼优化算法WOA优化BP神经网络回归预测模型以及MATLAB代码实现 文章目录 鲸鱼优化算法WOA优化BP神经网络回归预测模型以及MATLAB代码实现 1. 算法描述 2. 鲸鱼优化算法优化BP神经 ...

  2. 一文看懂BP神经网络的基础数学知识

    看懂本文需要的基础知识有: 能够理解最基本的最优化问题(例如最小二乘法优化) 学习过高数和线性代数,对数学符号有概念 一定的编程基础 最好明白感知器的概念 神经网络的基本知识 1.0 历史与发展 线性 ...

  3. 【语音识别】基于BP神经网络0到10数字语音识别含Matlab源码

    1 简介 语音识别技术具有重要的理论价值和广阔的应用前景,近年来受到了人们的广泛重视.随着电子计算机的不断应用与发展以及人工智能的不断进步与完善,人们越来越希望让机器能够理解人类的自然语言,这种需求使 ...

  4. C++毕业设计——基于VC+++BP神经网络+车牌识别的车牌定位和识别系统设计与实现(毕业论文+程序源码)——车牌定位和识别系统

    基于VC+++BP神经网络+车牌识别的车牌定位和识别系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于VC+++BP神经网络+车牌识别的车牌定位和识别系统设计与实现,文章末尾附有本毕业设 ...

  5. matlab神经网络的简单程序设计,BP神经网络设计的matlab简单实现

    例1 采用动量梯度下降算法训练 BP 网络.用matlab自带的神经网络训练样本定义如下: 输入矢量为 p =[-1 -2 3  1 -1  1 5 -3] 目标矢量为   t = [-1 -1 1  ...

  6. matlab 神经网络设计多层隐含层_数据预测之BP神经网络具体应用以及matlab代码

    1.具体应用实例.根据表2,预测序号15的跳高成绩. 表2 国内男子跳高运动员各项素质指标 序号 跳高成绩() 30行进跑(s) 立定三级跳远() 助跑摸高() 助跑4-6步跳高() 负重深蹲杠铃() ...

  7. BP神经网络设计与实现

    BP神经网络设计与实现 实验要求 基于Python原生实现,不调用深度学习框架函数,完成代码编写 实验内容 1.详细论述本次实验的算法设计及描述. 2.双月数据构建生成及使用方法. 3.根据误差反向传 ...

  8. 模式识别八--三层BP神经网络的设计与实现

    文章转自:http://www.kancloud.cn/digest/prandmethod/102850 本文的目的是学习和掌握BP神经网络的原理及其学习算法.在MATLAB平台上编程构造一个3-3 ...

  9. 模式识别:三层BP神经网络的设计与实现

    本文的目的是学习和掌握BP神经网络的原理及其学习算法.在MATLAB平台上编程构造一个3-3-1型的singmoid人工神经网络,并使用随机反向传播算法和成批反向传播算法来训练这个网络,这里设置不同的 ...

  10. 基于bp神经网络的pid算法,神经网络pid控制器设计

    基于BP神经网络的PID控制器设计 参考一下刘金琨的<先进PID控制>这本书. 例子:被控对象yout(k)=a(k)yout(k-1)/(1+yout(k-1)^2)+u(k_1)其中a ...

最新文章

  1. Android刷新机制-View绘制原理
  2. 前后端完全分离出现跨域、无法访问后台解决方案
  3. [机器学习]PMML预测模型标记语言
  4. #define va_arg(AP, TYPE)
  5. matlab2018b中svm无法运行,关于matlab2018a版本错误使用 svmclassify 分类器
  6. CentOS6.5安装tomcat7
  7. Linux下的进程池(3)
  8. 如何更新 Ubuntu Linux
  9. PKUSC2019划水记
  10. WebCollector
  11. 会计考计算机是WPS还是Ms,wps和office的区别 wps和office哪个好
  12. 特斯拉“炸”降,蔚来、小鹏、理想们的路就平坦了么?
  13. 众里寻它千百度,原来它在...MSDN处
  14. 比心app源码,携带对象参数跳转页面
  15. swiper 效果参数淡入淡出
  16. TP-link WR740N路由器“复活记”
  17. PopuoWindow 弹出框
  18. 乐鑫esp8266学习rtos3.0笔记:分享在 esp8266 C SDK实现冷暖光色温平滑调节的封装,轻松集成到您的项目去。(附带Demo)
  19. BERT原理和结构详解
  20. 从红孩子到贝备网 母婴网购市场的转变

热门文章

  1. 电子时钟课程设计报告
  2. 计算机硬盘扇区修复,如何修复硬盘启动扇区
  3. MySQL 5.7.27详细下载安装配置教程
  4. 牛腩新闻发布系统总结(四)--知识点滴
  5. unix linux性能对比,各有所长!对比LINUX和UNIX系统优势
  6. Java程序编程题作业-练习-Java编程题_一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第 10 次落地时
  7. jquery文档modal_jQuery代码文档小工具
  8. 计算机组成原理英文词汇,“计算机组成原理”课专业词汇英汉对照.pdf
  9. 使用网络登陆的id创建odbc后怎么链接_这是一篇关于苹果ID账号分享和规范使用教程。...
  10. Linux运维面试题