matlab编写BP神经网络很方便的,这个工作不用像编程序的C什么的那样还要编写算法。这个算法早已经在软件的库里提供了。你只要用一条语句就出来了。把参数,深度和节点固定的往里一代数就可以了。还有一点,注意最后结果的收敛性,神经网络发展一直是曲折前进的,为什么这样,现在不太给力,因为面临着一个收敛的问题,实现起来效果不好。这些程序网上有很多,你借一本基本的神经网络的书里面也有。望采纳。
1,我用的是matlab R2008,一列代表一个样本。其他版本的不知道
2,matlab中神经网络工具箱就已经很方便了,调用函数和修改参数就可以用了。
3,net_1trainParamlr代表学习速率,net_1trainParammc则是动量系数。至于参数的确定,要看具体情况。
原理大概是,设置一个初始种群,种群里的个体就是平滑因子,经过遗传算法的选择、交叉、变异后,逐渐找到一个最佳的spread,即为最终结果。
附件是一个GA-BP算法的程序,虽然不同,但是原理是相近的,可以参考。
遗传算法的基本运算过程如下:
a)初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0)。
b)个体评价:计算群体P(t)中各个个体的适应度。
c)选择运算:将选择算子作用于群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择 *** 作是建立在群体中个体的适应度评估基础上的。
d)交叉运算:将交叉算子作用于群体。遗传算法中起核心作用的就是交叉算子。
e)变异运算:将变异算子作用于群体。即是对群体中的个体串的某些基因座上的基因值作变动。
群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t+1)。
f)终止条件判断:若t=T,则以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。
给你修改了一下,请参考:
clear all
%p1,p2是训练样本
p1=[65 76 80 74 80 76 82 78 76 80 79 81 78 72 73;
80 82 87 80 85 86 85 82 79 89 74 77 60 70 68;
98 90 80 86 75 70 78 80 82 84 76 72 60 75 62;
55 60 63 57 59 49 42 40 45 42 30 39 35 30 25;
43 60 65 36 39 30 34 45 44 47 35 39 25 40 30;
86 90 90 93 87 84 75 85 87 85 70 82 79 78 79;
88 83 90 89 80 80 856 90 92 86 70 75 69 70 72;
90 92 95 95 88 80 82 88 87 90 75 76 82 80 80;
95 97 96 97 90 87 80 89 86 88 80 78 80 86 88;
92 94 80 84 88 84 80 92 90 88 85 82 79 84 85];
p2=[0 0 08601 0;
0 0 07491 00033;
0 0 07328 01237;
0 06238 00489 0;
0 08400 00522 0;
0 0 05347 09354;
0 0 05311 01833;
0 0 03615 03348;
0 0 03578 04412;
0 0 02895 03620];
pr1=minmax(p1);
pr2=minmax(p2);
%创建一个前向反馈后向传播神经网络-即BP神经网络
net=newff(pr1,pr2,[5,4],{'tansig','purelin'},'trainrp');
%设置训练参数
nettrainParamlr = 005;
nettrainParamgoal = 00001;
nettrainParamepochs = 5000;
%训练网络
net = train(net,pr1,pr2);
x=[50 62 65 57 60 49 44 40 48 42 25 45 35 36 23;
80 86 69 67 79 89 80 83 85 88 90 99 95 88 85];
%测试训练结果y
y1=sim(net,pr1);
lr=005; %lr为学习速率;
err_goal=01; %err_goal为期望误差最小值
max_epoch=15000; %max_epoch为训练的最大次数;
a=09; %a为惯性系数
Oi=0;
Ok=0; %置隐含层和输出层各神经元输出初值为0
这些初始参数是谁提供给你
调整一下这些参数看看
你想要什么解释?这句话是在为你的神经网络(net)配置每个RTDX缓冲channel中的字节位数(p)和缓冲channel的数量(t)。RTDX(real time data exchange)实时数据交换。如果你懂低级计算机编程语言的话应该很好理解。这句话基本可以大致理解为为你的神经网络划出一个计算的空间。神经网络算法本身极其复杂,甚至有很多conference是专门讨论该算法的。matlab作为高级程序语言,出发点是把所有算法打包好使用户方便使用。要做到这个对一些基础算法来说并不难。但是神经网络本身就是一大堆算法的集成,简单打包算法不太可能。使用这个工具箱你只需要知道大致原理,再找几个模板依样画葫芦练习一下就可以了,没必要全弄明白
以上就是关于如何用matlab编写BP神经网络程序全部的内容,包括:如何用matlab编写BP神经网络程序、关于BP神经网络MATLAB程序、遗传算法优化概率神经网络的matlab代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)