DL:LinearNN(numpy自定义的) solve XOR problem
生活随笔
收集整理的這篇文章主要介紹了
DL:LinearNN(numpy自定义的) solve XOR problem
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
DL:LinearNN(numpy自定義的) solve ?XOR problem
?
?
目錄
輸出結果
核心代碼
LinearNN使用案例
?
?
輸出結果
?
核心代碼
#BP solve XOR Problem import numpy as np#輸入數據,第一列的數字1表示偏置 X = np.array ([[1, 0, 0], [1, 0, 1], [1, 1, 0],[1, 1, 1]]) #標簽 Y = np.array ([[0, 1, 1, 0]]) #兩個中括號代表二維。分別對應00、01、10、11 #權值初始化,3行4列,取值范圍[-1,1] V = np.random.randn(3,4)*2-1 W = np.random.randn(4,1)*2-1 print (V) print (W) #設置學習率 lr = 0.11 def update(): #更新權值的函數global X,Y,W,V,lr #當自定義的函數需要調用外部的參數時,需要利用global進行聲明為全局變量L1=sigmoid(np.dot(X,V)) #隱藏層輸出4*4L2=sigmoid(np.dot(L1,W)) #輸出層輸出4*1L2_delta=(Y.T-L2)*dsigmoid(L2) #Y.T就是Y的轉置L1_delta=L2_delta.dot(W.T)*dsigmoid(L1)W_C=lr*L1.T.dot(L2_delta)V_C=lr*X.T.dot(L1_delta)W=W+W_CV=V+V_Cfor i in range(20000):update() #更新權值if i%500==0:L1=sigmoid(np.dot(X,V)) #隱藏層輸出4*4L2=sigmoid(np.dot(L1,W)) #輸出層輸出4*1print("error:",np.mean(np.abs(Y.T-L2)))L1=sigmoid(np.dot(X,V)) #隱藏層輸出4*4 L2=sigmoid(np.dot(L1,W)) #輸出層輸出4*1 print(L2)def judge(x):if x>=0.5:return 1else:return 0 for i in map(judge,L2):print(i)?
LinearNN使用案例
1、LinearNN簡單案例
2、LinearNN solve ?XOR problem
當lr=0.3時,相對比較大,每一個步長比較大,所以會在坑底部(最小值)兩端進行跳動,然后訓練到一定輪數,再改lr=0.03即可看到更好的情況。
?
?
?
總結
以上是生活随笔為你收集整理的DL:LinearNN(numpy自定义的) solve XOR problem的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DL之Perceptron:Percep
- 下一篇: DL之NN:基于(sklearn自带手写