python的快速排序算法,python十大排序算法
BP,累积BP算法原理,MATLAB编的真人在这里。
以下是我自己的Python代码。欢迎你的观点。
标准BP算法:
ImportnumpyasNPX=NP . matrix(NP . rand)3,2) #输入层随机生成三个样本,每个样本有两个神经元y=NP . matrix(NP . rand)3、每个样本有两个神经元q=3n=100000 k .从隐层到输出层有权重H:输出层阈值K:学习率 deffc _ SIG mod () (1NP.exp(-x))、defstandard_BP) x0,y0 L)h=NP L))index=0y _ hat=NP L))ITER=1 while itern:a=NP . dot(x[index],v)B=fc _ SIGmod(a-r)B=NP w(# print)h)y _ hat[index]=fc _ SIGmod(B-h)# e=0.5 * NP . dot)y[index]-y _ hat[index],(y ) (1-b))、w*g.T)、t ) forIinrange(n ) : for
发现训练后预测的y_hat值和之前比较接近。当然这里的标准BP算法实现相对简单~
累积BP算法:
ImportnumpyasNPX=NP . matrix(NP . rand)3,2) #输入层随机生成三个样本,每个样本有两个神经元y=NP . matrix)NP . rand)3、两个神经元q=3n=50000k=0.1q:输入层到隐含层的权重v:隐含层到输出层的权重h:阈值k的学习率: deffc _ si360 q,n,k ) :l=y.shapeZeros () x.shape[0],q))Y _ hed l))ITER=1 while itern:for index inrange(x . Shape[0]):a=NP . dot(x[index],V)B[index]=FC _ S Shape Y[index]-Y _ hat[index](E[index]=NP .乘法(NP。乘)1-B[索引],(1-B[索引]),(w*g(索引)。t) #调整各自的系数)对于以上系数,平均值b _ bar=b . mean(axis=0)e _ bar=j)=v)I,j) k*e_bar) 0,j) *x_bar) 0,I) r=r-k * e) barforiinrange。I) i] h=h-k*g_bar iter=iter 1 print(输入层对隐藏层的权重为:)print) v) print))隐藏层的阈值为)print) r) print)
这里训练后得到的效果不高,训练后得到的y_hat值也不是很准确,就像之前自己用Matlab写的累积BP算法一样。为了得到更正确的模型,可以考虑几个因素。
选择隐藏层和输出层的激活函数(这里选择sigmod函数);增加学习因子的迭代次数,增加隐含层的单元数,设置多个隐含层(这里只设置一个隐含层)。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。