深度學習PART I 單層感知器

2021-08-09 04:10:17 字數 2895 閱讀 7348

單層感知器的原始形式如下:

如果把偏置項當作特殊權值,則單層感知器可以改為如下形式:

感知器的學習規則

學習率:

(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 輸入節點是訊號的輸入端,感知器可以有...