神經網路(單層感知器)

2021-10-05 12:34:25 字數 2303 閱讀 6153

感知器是神經網路中的乙個概念,在1950s由frank rosenblatt第一次引入。

單層感知器是最簡單的神經網路。它包含輸入層和輸出層,而輸入層和輸出層是直接相連的。與最早提出的mp模型不同,神經元突觸權值可變,因此可以通過一定規則進行學習。可以快速、可靠地解決線性可分的問題。

單層感知器由乙個線性組合器和乙個二值閾值元件組成。

輸入向量為x,權重向量為w,w0為偏執。

簡單的理解可以解釋為:將x0,x1······xn的變數輸入,經過組合器的整合,輸出1或者-1,也就是通過組合器對輸入變數判斷其正確與否。

其中偏振因子b,一般會用w0表示,這時會加入乙個偏振輸入變數x0,不過x0恆等於1

?取值一般取0-1之間

學習率太大容易造成權值調整不穩定

學習率太小,權值調整太慢,迭代次數太多

程式實現

import numpy as np

import matplotlib.pyplot as plt

#輸入資料

x = np.array([[

1,3,

3],[

1,4,

3],[

1,1,

1],[

1,0,

2]])

#標籤y = np.array([[

1],[

1],[

-1],

[-1]

])#權值初始化,3行1列,取值範圍-1到1

w =(np.random.random([3

,1])

-0.5)*

2print

(w)#學習率設定

lr =

0.11

#神經網路輸出

o =0

defupdate()

:global x,y,w,lr

o = np.sign(np.dot(x,w)

)# shape:(3,1)

w_c = lr*

(x.t.dot(y-o))/

int(x.shape[0]

) w = w + w_c

for i in

range

(100):

update(

)#更新權值

print

(w)#列印當前權值

print

(i)#列印迭代次數

o = np.sign(np.dot(x,w)

)#計算當前輸出

if(o == y)

.all()

:#如果實際輸出等於期望輸出,模型收斂,迴圈結束

print

('finished'

)print

('epoch:'

,i)break

#正樣本

x1 =[0

,1]y1 =[1

,0]#負樣本

x2 =[0

,1]y2 =[0

,1]#計算分界線的斜率以及截距

k =-w[1]

/w[2

]d =

-w[0

]/w[2]

print

('k='

,k)print

('d='

,d)xdata =(-

2,3)

plt.figure(

)plt.plot(xdata,xdata*k+d,

'r')

plt.scatter(x1,y1,c=

'b')

plt.scatter(x2,y2,c=

'y')

plt.show(

)

神經網路 單層感知器

神經網路是非常重要的且用途廣泛,通過模擬人體的處理資訊方式來解決問題,下面就來介紹一下單層感知器。import numpy as np import matplotlib.pyplot as plt 輸入資料 x np.array 1,3,3 1,4,3 1,1,1 1,0,2 標籤y np.arr...

神經網路之 感知器

在神經網路中,我們主要使用的是一種稱為s型神經元的神經元模型。感知器就是我們所謂的 人工神經元 那麼感知器怎麼工作的呢,接下來我們來談談。1.感知器工作機制 上圖中有x1,x2和x3輸入,一般情況下我們可以引入權重w1,w2和w3來表示輸入對輸出的重要性,這時可以計算w1 x1 w2 x2 w3 x...

感知器演算法與神經網路

感知器作為人工神經網路中最基本的單元,有多個輸入和乙個輸出組成。雖然我們的目的是學習很多神經單元互連的網路,但是我們還是需要先對單個的神經單元進行研究。感知器演算法的主要流程 首先得到n個輸入,再將每個輸入值加權,然後判斷感知器輸入的加權和最否達到某一閥值v,若達到,則通過sign函式輸出1,否則輸...