感知器是神經網路中的乙個概念,在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,否則輸...