單層感知器的原始形式如下:
如果把偏置項當作特殊權值,則單層感知器可以改為如下形式:
感知器的學習規則
學習率:
(1)學習率太大,容易造成權值調整不穩定。
(2)學習率太小,權值調整太慢,迭代次數太多。
收斂條件:
(1)誤差小於某個預先設定的較小的值。
(2)兩次迭代之間的權值變化已經很小。
(3)設定最大迭代次數,當迭代次數超過最大次數就停止。
perceptron.py
# -*- encoding: utf-8 -*-
import numpy as np
class perceptron:
def __init__(self):
self.w = none
self.traintimes = 0
def train(self, x, y, n, learningrate):
'''training'''
# random w
row, column = x.shape
self.w = (np.random.random(column) - 0.5) * 2
# training for n times
for i in range(n):
# training
self.traintimes += 1
output = np.sign(np.dot(x, self.w.t))
gain = learningrate * ((y - output).dot(x)) / row
self.w += gain
# check
newoutput = np.sign(np.dot(x, self.w.t))
if (newoutput == y).all():
break
def getw(self):
return self.w
def gettraintimes(self):
return self.traintimes
def predict(self, x):
return np.sign(np.dot(x, self.w.t))
test4perceptron.py
# -*- encoding: utf-8 -*-
from perceptron import *
import numpy as np
import matplotlib.pyplot as plt
def test():
# training data
x = np.array([[1, 3, 3], [1, 4, 3], [1, 1, 1]])
y = np.array([1, 1, -1])
learningrate = 0.1
learningtimes = 100
# training
perceptron = perceptron()
perceptron.train(x, y, learningtimes, learningrate)
w = perceptron.getw()
traintimes = perceptron.gettraintimes()
print w
print traintimes
# plot the training data
x1 = [3, 4]
y1 = [3, 3]
x2 = [1]
y2 = [1]
k = -w[1] / w[2]
d = -w[0] / w[2]
x = np.linspace(0, 5) # generate arithmetic sequence
# plot
plt.figure()
plt.plot(x, x*k+d, 'r')
plt.plot(x1, y1, 'bo')
plt.plot(x2, y2, 'yo')
plt.show()
# predict
test = np.array([[1, 2, 3], [1, 6, 2], [1, 3, 3], [1, 7, 5], [1, 5, 7], [1, 9, 2]])
testresult = perceptron.predict(test)
print testresult
testx1 =
testy1 =
testx2 =
testy2 =
for i in range(len(testresult)):
if testresult[i] >= 0:
else:
plt.figure()
plt.plot(x, x*k+d, 'r')
plt.plot(testx1, testy1, 'bo')
plt.plot(testx2, testy2, 'yo')
plt.show()
if __name__ == '__main__':
test()
單層感知器python 深度學習之單層感知器(一)
當我們最初學習機器學習時候,了解到最簡單的神經網路可能便是單層感知器,他也是監督學習的最簡單一種。本文章就通過 人工神經網路理論 設計及應用 書中介紹的單層感知器一節,進行python的 實現。單層感知器的網路結構如下 上圖便是乙個單層感知器,很簡單的乙個結構,圖中說明我們有個3維的輸入值分別是x1...
深度學習之單層感知器1
w的調整值 學習率 期望輸出 實際輸出 與w相對應輸入節點x 學習率一般取0到1之間,學習率太大容易造成權值調整不穩定,學習率太小容易造成權值調整太慢,迭代次數過多。1.誤差小於某個預先設定的值 2.設定最大迭代次數 假設平面座標系上有三個點,3,3 4,3 這兩個點的標籤為1,1,1 這個點標籤為...
學習筆記 感知器 單層感知器舉例
在人體神經網路中,神經細胞是有著基本處理訊號功能的基本單元,單層感知器就是人工神經網路中模擬人體神經細胞的基本單元。單層感知器 單層感知器是最簡單的神經網路,它包含輸入層和輸出層,訊號先經過線性組合器處理然後再經過啟用函式,最後輸出結果。1 輸入節點 input 輸入節點是訊號的輸入端,感知器可以有...