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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

【theano-windows】学习笔记七——logistic回归

發布時間:2023/12/13 windows 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【theano-windows】学习笔记七——logistic回归 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

前面只是學了最基本的theano操作,但是theano中還有很多其他的東西,比如圖結構,自定義函數等,這些暫時沒有用到就先不看了,后續學啥用啥,沒必要一口氣吃個胖子,免得消化不良還把前面吃的東西忘記了,先拿logistic回歸試試水

基本理論

推導可以看我前面你的博客softmax理論及代碼解讀——UFLDL, 這里只貼出前向計算公式和損失函數,畢竟theano可以自動梯度咯

前向計算公式就是sigmoid函數, 得到的是當前數據x標簽為1的概率
hθ(xi)=P(y=1|x;w,b)=11+e?w?x?b
損失函數的定義就是

J(θ)=?1m[i=1m[(yiloghθ(xi)+(1?yi)log(1?hθ(xi)]]

代碼實現

導入包

import numpy as np import theano import theano.tensor as T

定義樣本矩陣(樣本*屬性)以及對應標簽向量(樣本*標簽)

N=400#訓練集大小 feats=784#每個樣本的特征維度,可以當做輸入神經元個數 train_steps=10000#訓練次數 x=T.dmatrix('x') #樣本*特征維度 y=T.dvector('y') #樣本*標簽

因為是二分類,所以只有一個輸出神經元,那么權重維度就是(輸入數據維度*1), 進而可以據此進行初始化共享變量,也即模型參數權重、偏置. 注意權重不能初始化為0, 因為這樣你的輸出就都是一樣了,整個網絡參數都會一樣,這還學個錘子

rng=np.random#隨機初始化權重 w=theano.shared(rng.randn(feats),name='w')#權重初始化 b=theano.shared(0.,name='b')#偏置初始化

隨后計算梯度

#logistic回歸損失函數 print w.get_value().shape#看看每個輸入神經元對應的權重維度 p1=T.nnet.sigmoid(T.dot(x,w)+b) prediction=p1>0.5 xnet=-y*T.log(p1)-(1-y)*T.log(1-p1)#目標函數 cost=xnet.mean()+0.01*(w**2).sum()#損失函數+權重衰減 #求解梯度 gw,gb=theano.grad(cost,[w,b])#損失函數對權重和偏置求導

利用function更新模型參數,以及輸出結果

#用function編譯訓練函數 train=theano.function(inputs=[x,y],outputs=[prediction,xnet],updates=[(w,w-0.1*gw),(b,b-0.1*gb)]) #預測函數 predict=theano.function(inputs=[x],outputs=[prediction])

可以輸出看看預測結果

print 'Target values for D: ' print D[1] print 'Prediction values for D' print predict(D[0])

后續

這只是最基礎的一個使用grad計算損失函數梯度, 然后用function更新參數的例子,循環還沒使用scan, 后續將跟進深度學習0.1文檔學習各種網絡的實現,當然依據需求對theano進行更深一步的探索

總結

以上是生活随笔為你收集整理的【theano-windows】学习笔记七——logistic回归的全部內容,希望文章能夠幫你解決所遇到的問題。

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