python实现多层感知器

  

写了个多层感知器,用bp梯度下降更新,拟合正弦曲线,效果凑合。

        # - * -编码:utf - 8 - *   进口numpy np   进口matplotlib。pyplot作为plt         def sigmod (z):   返回1.0/(1.0 + np.exp (- z))         中长期规划类(对象):   def __init__(自我,lr=0.1, lda=0.0, te=1 e-5,时代=100,大?None):   自我。learningRate=lr   自我。lambda_=lda   自我。thresholdError=te   自我。maxEpoch=时代   自我。大?大小   自我。W=[]   自我。b=[]   self.init ()      def init(自我):   因为我在xrange (len (self.size) 1):   self.W.append (np.mat (np.random.uniform(-0.5, 0.5,大?(自我。大小(i + 1), self.size[我]))))   self.b.append (np.mat (np.random.uniform(-0.5, 0.5,大?(自我。大小(i + 1), 1))))      def forwardPropagation(自我,项=None):=(项)   清洁剂的xrange (len (self.W)):   a.append (sigmod (self.W [wIndex] * [1] + self.b(清洁剂)))   ”“”   打印”- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -”   因为我在一个:   打印i.shape,   打印   因为我在self.W:   打印i.shape,   打印   因为我在self.b:   打印i.shape,   打印   打印”- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -”   ”“”   返回一个      def反向传播(自我,标签=,=None):   #打印“反向传播- - - - - - - - - - - - - - - - - - - - -开始”   δ=[([1]标签)* [1]* (1.0 - [1]))   因为我在xrange (len (self.W) 1):   美国广播公司(abc)=np。乘以(1 a[我],[我])   cba=np.multiply (self.W[我]。T *δ[1],abc)   delta.append (cba)   ”“”   打印“+ + + + + + + + + + + + + +δ+ + + + + + + + + + + + + + + + + + + +”   打印“len(δ):len(δ)   在三角洲:二世   打印ii.shape,   打印“\ n======================================="   ”“”   对j xrange (len(δ)):   广告=δ[j] * [2 j] .T   #打印self.W [1-j]。形状、ads.shape self.b [1-j]。形状,δ[j] .shape   自我。W [1-j]=self.W [1-j] -self.learningRate *(广告+ self.lambda_ * self.W [1-j])   自我。b [1-j]=self.b [1-j] -self.learningRate *δ[j]   “打印”=======================================1234 "   在ij self.b:   打印ij.shape,   打印   ”“”   #打印“反向传播- - - - - - - - - - - - - - - - - - - - -完成”   错误=0.5 *([1]标签)* * 2   返回错误      def火车(自我,input_=None,目标=没有显示=10):   对ep xrange (self.maxEpoch):   错误=[]   对于itemIndex xrange (input_.shape [1]):   一个=自我。forwardPropagation (input_ [: itemIndex])   e=自我。反向传播(目标:,itemIndex,)   错误。追加(e [0])   tt=总和(错误)/len(错误)   如果tt & lt;self.thresholdError:   打印”完成{0}:“.format (ep), tt   返回   elif ep %显示==0:   打印”时代{0}:“.format (ep), tt      def sim(自我,inp=None):   返回self.forwardPropagation(项=inp) [1]         if __name__==癬_main__”:   tt=np。不等(0、6.28、0.01)   标签=np.zeros_like (tt)   打印tt.shape   ”“”   阿宝在xrange (tt.shape [0]):   如果tt (po) & lt;4:   标签(po)=0.0   elif 8比;tt (po)祝辞=4:   标签(po)=0.25   elif 12比;tt (po)祝辞=8:   标签(po)=0.5   elif 16比;tt (po)祝辞=12:   标签(po)=0.75   其他:   标签(po)=1.0   ”“”   tt=np.mat (tt)   标签=np.sin (tt) * 0.5 + 0.5   标签=np.mat(标签)   中长期规划模型=(lr=0.2, lda=0.0, te=1 e-5,时代=500,大?[第1、6、6、6、1))   打印tt。形状,labels.shape   打印len (model.W), len (model.b)   打印   模型。火车(input_=tt,目标=标签,显示=10)   西姆斯=[模型。sim (tt [: idx])(0,0)为idx xrange (tt.shape [1]))      xx=tt.tolist () [0]   plt.figure ()   plt。情节(xx labels.tolist () [0], xx,西姆斯,“r”)   plt.show ()      

效果图:

  

 python实现多层感知器

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

python实现多层感知器