日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

深度学习(三)theano学习笔记(2)基础函数-未完待续

發布時間:2025/3/21 pytorch 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习(三)theano学习笔记(2)基础函数-未完待续 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

theano學習筆記(2)基礎函數

1、隨機函數庫的調用





2、卷積神經網絡

[python]?view plaincopy
  • #-*-coding:utf-8-*-??
  • import?theano??
  • import?numpy?as?np??
  • import?matplotlib.pyplot?as?plt???????
  • from?loaddata?import?loadmnist??
  • import?theano.tensor?as?T??
  • ??
  • ??
  • #softmax函數??
  • class?softmax:??
  • ????#outdata為我們標注的輸出,hiddata網絡輸出層的輸入,nin,nout為輸入、輸出神經元個數??
  • ????def?__init__(self,hiddata,outdata,nin,nout):??
  • ??
  • ????????self.w=theano.shared(value=np.zeros((nin,nout),dtype=theano.config.floatX),name='w');??
  • ????????self.b=theano.shared(value=np.zeros((nout,),dtype=theano.config.floatX),name='b')??
  • ??
  • ????????prey=T.nnet.softmax(T.dot(hiddata,self.w)+self.b)#通過softmax函數,得到輸出層每個神經元數值(概率)??
  • ????????self.loss=-T.mean(T.log(prey)[T.arange(outdata.shape[0]),outdata])#損失函數??
  • ????????self.para=[self.w,self.b]??
  • ????????self.predict=T.argmax(prey,axis=1)??
  • ????????self.error=T.mean(T.neq(T.argmax(prey,axis=1),outdata))??
  • ??????????
  • ??
  • ??????????
  • ??
  • #輸入層到隱藏層??
  • class?HiddenLayer:??
  • ????def?__init__(self,inputx,nin,nout):??
  • ?????????a=np.sqrt(6./(nin+nout))??
  • ?????????ranmatrix=np.random.uniform(-a,a,(nin,nout));??
  • ?????????self.w=theano.shared(value=np.asarray(ranmatrix,dtype=theano.config.floatX),name='w')??
  • ?????????self.b=theano.shared(value=np.zeros((nout,),dtype=theano.config.floatX),name='b')??
  • ?????????self.out=T.tanh(T.dot(inputx,self.w)+self.b)??
  • ?????????self.para=[self.w,self.b]??
  • #傳統三層感知器??????
  • class?mlp:??
  • ????def?__init__(self,nin,nhid,nout):??
  • ????????x=T.fmatrix('x')??
  • ????????y=T.ivector('y')??
  • ????????#?‰???‘??
  • ????????hlayer=HiddenLayer(x,nin,nhid)??
  • ????????olayer=softmax(hlayer.out,y,nhid,nout)??
  • ????????#?????‘??
  • ????????paras=hlayer.para+olayer.para??
  • ????????dparas=T.grad(olayer.loss,paras)??
  • ????????updates=[(para,para-0.1*dpara)?for?para,dpara?in?zip(paras,dparas)]??
  • ????????self.trainfunction=theano.function(inputs=[x,y],outputs=olayer.loss,updates=updates)??
  • ??
  • ??????????
  • ????def?train(self,trainx,trainy):??
  • ????????return?self.trainfunction(trainx,trainy)??
  • #卷積神經網絡的每一層,包括卷積、池化、激活映射操作??
  • #img_shape為輸入特征圖,img_shape=(batch_size,特征圖個數,圖片寬、高)??
  • #filter_shape為卷積操作相關參數,filter_shape=(輸入特征圖個數、輸出特征圖個數、卷積核的寬、卷積核的高)??
  • #,這樣總共filter的個數為:輸入特征圖個數*輸出特征圖個數*卷積核的寬*卷積核的高??
  • class?LeNetConvPoolLayer:??
  • ????def?__init__(self,inputx,img_shape,filter_shape,poolsize=(2,2)):??
  • ????????#參數初始化??
  • ????????assert?img_shape[1]==filter_shape[1]??
  • ????????a=np.sqrt(6./(filter_shape[0]+filter_shape[1]))??
  • ??
  • ????????v=np.random.uniform(low=-a,high=a,size=filter_shape)??
  • ??
  • ????????wvalue=np.asarray(v,dtype=theano.config.floatX)??
  • ????????self.w=theano.shared(value=wvalue,name='w')??
  • ????????bvalue=np.zeros((filter_shape[0],),dtype=theano.config.floatX)??
  • ????????self.b=theano.shared(value=bvalue,name='b')??
  • ??????????
  • ????????covout=T.nnet.conv2d(inputx,self.w)#卷積操作??
  • ??????????
  • ????????covpool=T.signal.downsample.max_pool_2d(covout,poolsize)#池化操作??
  • ??????????
  • ????????self.out=T.tanh(covpool+self.b.dimshuffle('x',?0,?'x',?'x'))??
  • ??????????
  • ????????self.para=[self.w,self.b]??
  • ??????
  • ??????????
  • ???????????
  • ??
  • trainx,trainy=loadmnist()??
  • trainx=trainx.reshape(-1,1,28,28)??
  • batch_size=30??
  • m=trainx.shape[0]??
  • ne=m/batch_size??
  • ??
  • ??
  • ??
  • batchx=T.tensor4(name='batchx',dtype=theano.config.floatX)??
  • batchy=T.ivector('batchy')??
  • ??
  • #??
  • cov1_layer=LeNetConvPoolLayer(inputx=batchx,img_shape=(batch_size,1,28,28),filter_shape=(20,1,5,5))??
  • cov2_layer=LeNetConvPoolLayer(inputx=cov1_layer.out,img_shape=(batch_size,20,12,12),filter_shape=(50,20,5,5))??
  • cov2out=cov2_layer.out.flatten(2)??
  • hlayer=HiddenLayer(cov2out,4*4*50,500)??
  • olayer=softmax(hlayer.out,batchy,500,10)??
  • ??
  • paras=cov1_layer.para+cov2_layer.para+hlayer.para+olayer.para??
  • dparas=T.grad(olayer.loss,paras)??
  • updates=[(para,para-0.1*dpara)?for?para,dpara?in?zip(paras,dparas)]??
  • ??
  • train_function=theano.function(inputs=[batchx,batchy],outputs=olayer.loss,updates=updates)??
  • test_function=theano.function(inputs=[batchx,batchy],outputs=[olayer.error,olayer.predict])??
  • ??
  • testx,testy=loadmnist(True)??
  • testx=testx.reshape(-1,1,28,28)??
  • ??
  • train_history=[]??
  • test_history=[]??
  • ??
  • for?it?in?range(20):??
  • ????sum=0??
  • ????for?i?in?range(ne):??
  • ????????a=trainx[i*batch_size:(i+1)*batch_size]??
  • ????????loss_train=train_function(trainx[i*batch_size:(i+1)*batch_size],trainy[i*batch_size:(i+1)*batch_size])??
  • ????????sum=sum+loss_train??
  • ????sum=sum/ne???
  • ????print?'train_loss:',sum??
  • ????test_error,predict=test_function(testx,testy)??
  • ????print?'test_error:',test_error??
  • ??????
  • ????train_history=train_history+[sum]??
  • ????test_history=test_history+[test_error]??
  • n=len(train_history)??
  • fig1=plt.subplot(111)??
  • fig1.set_ylim(0.001,0.2)??
  • fig1.plot(np.arange(n),train_history,'-') ?

  • from:?http://blog.csdn.net/hjimce/article/details/46806923

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的深度学习(三)theano学习笔记(2)基础函数-未完待续的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。