博客
关于我
BP神经网络学习--MATLAB源码详细注释
阅读量:372 次
发布时间: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/

你可能感兴趣的文章
自定义Hive Sql Job分析工具
查看>>
聊聊HDFS RBF第二阶段的主要改进
查看>>
【MySQL】(九)触发器
查看>>
关于Altium Designer 09导出BOM表不能正确分类问题
查看>>
Oracle 11G环境配置
查看>>
【Spark】(六)Spark 运行流程
查看>>
【Python】(十二)IO 文件处理
查看>>
【Oozie】(三)Oozie 使用实战教学,带你快速上手!
查看>>
师兄面试遇到这条 SQL 数据分析题,差点含泪而归!
查看>>
Java8新特性——并行流与顺序流
查看>>
如何通过 Dataphin 构建数据中台新增100万用户?
查看>>
C语言的数值溢出问题(上)
查看>>
BottomNavigationView控件item多于3个时文字不显示
查看>>
函数指针的典型应用-计算函数的定积分(矩形法思想)
查看>>
8051单片机(STC89C52)八个LED灯闪烁
查看>>
8051单片机(STC89C52)以定时器中断模式实现两倒计时器异步计时
查看>>
8051单片机(STC89C52)实现可修改初值(并可命令启停)的单倒计时器(Version1.1)
查看>>
用 wxPython 打印你的 App
查看>>
vue项目通过vue.config.js配置文件进行proxy反向代理跨域
查看>>
Linux下安装MySql过程
查看>>