博客
关于我
BP神经网络学习--MATLAB源码详细注释
阅读量:374 次
发布时间:2019-03-05

本文共 2063 字,大约阅读时间需要 6 分钟。

学习BP神经网络,推荐先了解其中的数学原理:

我是从0基础开始看MATLAB代码的,源码从《MATLAB神经网络43个案例分析》中获取,相对来说讲解得很清楚了,但是对于一穷二白的我来说还是一个很大的挑战,我已经尽己所能很认真地加了很多注释并且已经运行成功了,现在把源码贴出来:

如果我没有加注释的说明是很简单的了,只要百度一下就可以知道了~仅供参考,如果想copy代码的朋友到文末吧,我把所有资料都打包了

%% 清空环境变量clcclear%% 训练数据预测数据提取及归一化%下载输入输出数据load data input output%随机选择1900组训练数据和100组预测数据%12000间随机排序k=rand(1,2000);%创建12000列服从0~1均匀分布的随机矩阵[m,n]=sort(k);%m是从小到大排序后序列,排序结果放入m(1*2000)向量,n是m中各个元素在k中的下标%找出训练数据和预测数据input_train=input(n(1:1900),:)';%n(1:1900),:)表示取出input中1900行中的数值,单引号(')表示转置矩阵,得到1*1900数据output_train=output(n(1:1900));%n表示从11900的列,也就是取出output里的1*1900的数据input_test=input(n(1901:2000),:)';output_test=output(n(1901:2000));%选连样本输入输出数据归一化[inputn,inputps]=mapminmax(input_train);%inputn保存归一化后数据,inputps为训练数据的设置,后面可用于预测数据同样归一[outputn,outputps]=mapminmax(output_train);%% BP网络训练%net=newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)% %初始化网络结构net=newff(inputn,outputn,5);%5个隐含层神经元%TF节点传递函数,BTF训练函数,BLF网络学习函数,PF性能分析函数,IPF输入处理函数,OPF输出处理函数,DDF验证数据划分函数net.trainParam.epochs=100;%设置训练训练次数,也就是迭代次数 net.trainParam.lr=0.1;%设置学习率net.trainParam.goal=0.00004; % 训练目标最小误差%网络训练%[net,tr]=train(NET,X,T,Pi,Ai)%待训练网络,输入数据,输出数据,初始化输入层条件,初始化输出层条件,tr训练过程记录net=train(net,inputn,outputn);%% BP网络预测%预测数据归一化inputn_test=mapminmax('apply',input_test,inputps);%做相同的归一,apply %网络预测输出%y=sim(net,x)an=sim(net,inputn_test);%an得到网络预测数据 %网络输出反归一化BPoutput=mapminmax('reverse',an,outputps);%% 结果分析figure(1)%figure是建立图形的意思,系统自动从1234...来建立图形,数字代表第几幅图形plot(BPoutput,':og')%:表示用虚线,o表示数据点用圆圈显示,g是greenhold on  %保留当前图的轴(坐标系),再画另一幅图,原来的图还在plot(output_test,'-*');legend('预测输出','期望输出')% 显示在使用指定的字符串 来标记每个数据设置。title('BP网络预测输出','fontsize',12)ylabel('函数输出','fontsize',12)xlabel('样本','fontsize',12)%预测误差error=BPoutput-output_test;figure(2)plot(error,'-*')title('BP网络预测误差','fontsize',12)ylabel('误差','fontsize',12)xlabel('样本','fontsize',12)figure(3)plot((output_test-BPoutput)./BPoutput,'-*');title('神经网络预测误差百分比')errorsum=sum(abs(error));

感觉用MATLAB写简单了很多,我之前看了C语言版本的,很长很复杂,推荐大家先在MATLAB学会了再回头学C语言的

我没有信心保证注释完全正确,以上代码仅供参考学习,你一定要带着批判的眼光来读,有错误请指出,我会虚心接受,在评论区分享,大家一起学习~

————————————————————————————————————————————————

转载地址:http://kocwz.baihongyu.com/

你可能感兴趣的文章
日志写入xml上传ftp遇到的问题
查看>>
下载任意版本vmware对应的vmware tools
查看>>
将 github 中他人的 仓库 导入 码云中,从而 加快下载速度的 方式
查看>>
Java 类加载的过程 加载、验证、准备、解析、初始化
查看>>
JavaWeb---实现JavaBean来接收参数、请求转发、域对象
查看>>
瀚高数据库中 java代码类型与bit对应(APP)
查看>>
选择性估算器绕过行安全策略漏洞
查看>>
admin 修改数据报错
查看>>
PostgreSQL中的触发器
查看>>
对PostgreSQL数据库结构的宏观理解
查看>>
Postgresql 日期和时间类型
查看>>
xmin、xmax、cmin、cmax
查看>>
《卸甲笔记》-PostgreSQL和Oracle的数据类型的对比系列五:其它类型
查看>>
查询某表格上次进行vacuum的时间
查看>>
invalid byte sequence for encoding
查看>>
Highgo Database故障收集脚本
查看>>
failed to initialize the database
查看>>
invalid byte sequence for encoding
查看>>
银河麒麟系统配置apt网络源
查看>>
Linux内核结构粗解及关于 shell 通俗理解
查看>>