神經網路是非常重要的且用途廣泛,通過模擬人體的處理資訊方式來解決問題,下面就來介紹一下單層感知器。
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
#除以x.shape()防止每次更新權值過大
#給x轉置是為了符合矩陣乘法的規範
defupdate()
:global x,y,w,lr
o = np.sign(np.dot(x,w)
) w_c = lr*
(x.t.dot(y-o))/
int(x.shape[0]
) w = w + w_c
每次都會隨機出來三個權值:
[[ 0.00716618]
[ 0.09579097]
[ 0.86859556]]
for i in
range
(100):
update(
)#更新權值
print
(w)#列印當前權值
print
(i)#列印迭代次數
o = np.sign(np.dot(x,w)
)#計算當前輸出
#all函式意思是當o與y結果完全符合時,才返回true
if(o == y)
.all()
:print
("finished"
)print
("epoch"
,i)break
#正樣本
x1 =[3
,4]y1 =[3
,3]#負樣本
x2 =[1
,0]y2 =[1
,2]#計算分界線的斜率以及截距
k =-w[1]
/w[2
]d =
-w[0
]/w[2]
print
('k='
,k)print
('d='
,d)xdata =(0
,5)plt.figure(
)plt.plot(xdata,xdata*k+d,
'r')
plt.scatter(x1,y1,c=
'b')
plt.scatter(x2,y2,c=
'y')
plt.show(
)
因為每次隨機數的權值都不同,所以迭代次數也有所不同,這裡就只po出最終。
這章的總結沒有太多,主要有乙個公式需要明白:
明白這個公式之後,也就明白了k和b的計算方法。
神經網路(單層感知器)
感知器是神經網路中的乙個概念,在1950s由frank rosenblatt第一次引入。單層感知器是最簡單的神經網路。它包含輸入層和輸出層,而輸入層和輸出層是直接相連的。與最早提出的mp模型不同,神經元突觸權值可變,因此可以通過一定規則進行學習。可以快速 可靠地解決線性可分的問題。單層感知器由乙個線...
神經網路之 感知器
在神經網路中,我們主要使用的是一種稱為s型神經元的神經元模型。感知器就是我們所謂的 人工神經元 那麼感知器怎麼工作的呢,接下來我們來談談。1.感知器工作機制 上圖中有x1,x2和x3輸入,一般情況下我們可以引入權重w1,w2和w3來表示輸入對輸出的重要性,這時可以計算w1 x1 w2 x2 w3 x...
感知器演算法與神經網路
感知器作為人工神經網路中最基本的單元,有多個輸入和乙個輸出組成。雖然我們的目的是學習很多神經單元互連的網路,但是我們還是需要先對單個的神經單元進行研究。感知器演算法的主要流程 首先得到n個輸入,再將每個輸入值加權,然後判斷感知器輸入的加權和最否達到某一閥值v,若達到,則通過sign函式輸出1,否則輸...