首頁  >  文章  >  後端開發  >  如何用python來實現感知器

如何用python來實現感知器

php中世界最好的语言
php中世界最好的语言原創
2017-12-20 13:10:271719瀏覽

我們知道,感知器是最簡單的神經網絡,只有一層。感知器是模擬生物神經元行為的機器。那麼這次帶給大家的教學就是如何用python來實現感知器,模型如下。

給定一個n維的輸入 ,其中w和b是參數,w為權重,每一個輸入對應一個權值,b為偏移項,需要從資料中訓練得到。

激活函數 感知器的激活函數可以有很多選擇,例如我們可以選擇下面這個階躍函數f來作為激活函數:

事實上感知器可以擬合任何線性函數,任何線性分類或線性迴歸的問題都可以用感知器來解決。但是感知器不能實現異或運算,當然所有的線性分類器都不可能實現異或操作。

所謂異或操作:

對於上圖,我們找不到一條直線可以將0,1類別分開。對於and操作,感知器可以實現,我們可以找到一條直線把其分成兩部分。 。

對於and操作:

感知器的訓練 

首先將權重w和偏移b隨機初始化為很小的數,然後在訓練中不斷更新w和b的值。

1.將權重初始化為0 或很小的隨機數字
2.對於每個訓練樣本x(i) 執行下列步驟: 

   計算輸出值y^.

   更新權重

其中

下面以感知器實現and操作,具體程式碼如下:   

# -*- coding: utf-8 -*-
# python 3.4
import numpy as np
from random import choice
from sklearn import cross_validation
from sklearn.linear_model import LogisticRegression
'''''

1.將權重初始化為0 或一個很小的隨機數

2.對於每個訓練樣本x(i) 執行下列步驟:

 計算輸出值y^.

 更新權重

'''
def load_data():
 input_data=[[1,1], [0,0], [1,0], [0,1]]
 labels=[1,0,0,0]
 return input_data,labels
  
   
def train_pre(input_data,y,iteration,rate):
 #===========================
 '''''

 參數:

 input_data:輸入資料

 y:標籤清單

 iteration:訓練輪數

 rate:學習率

 '''
 #============================
 unit_step = lambda x: 0 if x < 0 else 1
 w=np.random.rand(len(input_data[0]))#随机生成[0,1)之间,作为初始化w
 bias=0.0#偏置
   
   
 for i in range(iteration):
  samples= zip(input_data,y)
  for (input_i,label) in samples:#对每一组样本
   #计算f(w*xi+b),此时x有两个
   result=input_i*w+bias
   result=float(sum(result))
   y_pred=float(unit_step(result))#计算输出值 y^
   w=w+rate*(label-y_pred)*np.array(input_i)#更新权重
  
   bias=rate*(label-y_pred)#更新bias
 return w,bias  
  
   
def predict(input_i,w,b):
 unit_step = lambda x: 0 if x < 0 else 1#定义激活函数
 result=result=result=input_i*w+b
 result=sum(result)
 y_pred=float(unit_step(result))
 print(y_pred)
   
if __name__==&#39;__main__&#39;:
 input_data,y=load_data()
 w,b=train_pre(input_data,y,20,0.01)
 predict([1,1],w,b)



我相信看了這些案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

相關讀取:

php如何實作堆疊資料結構以及括號匹配演算法的程式碼範例詳解

php中最簡單的字串匹配演算法,php匹配演算法_PHP教程

最簡單的php中字串匹配演算法教程

以上是如何用python來實現感知器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn