什麼是線性單元
有什麼用
**實現
線性單元和感知器的區別就是在啟用函式:
感知器的 f 是階越函式:
線性單元的啟用函式是線性的:
所以線性模型的公式如下:
感知器存在乙個問題,就是遇到線性不可分的資料時,就可能無法收斂,所以要使用乙個可導的線性函式來替代階躍函式,即線性單元,這樣就會收斂到乙個最佳的近似上。
1. 繼承perceptron,初始化線性單元
from perceptron import perceptron
#定義啟用函式f
f = lambda x: x
class
linearunit
(perceptron):
def__init__
(self, input_num):
'''初始化線性單元,設定輸入引數的個數'''
perceptron.__init__(self, input_num, f)
2. 定義乙個線性單元, 呼叫train_linear_unit
進行訓練- 列印訓練獲得的權重
- 輸入引數值 [3.4] 測試一下**值
if __name__ == '__main__':
'''訓練線性單元'''
linear_unit = train_linear_unit()
# 列印訓練獲得的權重
print linear_unit
# 測試
print
'work 3.4 years, monthly salary = %.2f' % linear_unit.predict([3.4])
print
'work 15 years, monthly salary = %.2f' % linear_unit.predict([15])
print
'work 1.5 years, monthly salary = %.2f' % linear_unit.predict([1.5])
print
'work 6.3 years, monthly salary = %.2f' % linear_unit.predict([6.3])
def
train_linear_unit
():'''
使用資料訓練線性單元
'''# 建立感知器,輸入引數的特徵數為1(工作年限)
lu = linearunit(1)
# 訓練,迭代10輪, 學習速率為0.01
input_vecs, labels = get_training_dataset()
lu.train(input_vecs, labels, 10, 0.01)
#返回訓練好的線性單元
return lu
完整**
from perceptron import perceptron
#定義啟用函式f
f = lambda x: x
class
linearunit
(perceptron):
def__init__
(self, input_num):
'''初始化線性單元,設定輸入引數的個數'''
perceptron.__init__(self, input_num, f)
defget_training_dataset
():'''
捏造5個人的收入資料
'''# 構建訓練資料
# 輸入向量列表,每一項是工作年限
input_vecs = [[5], [3], [8], [1.4], [10.1]]
# 期望的輸出列表,月薪,注意要與輸入一一對應
labels = [5500, 2300, 7600, 1800, 11400]
return input_vecs, labels
deftrain_linear_unit
():'''
使用資料訓練線性單元
'''# 建立感知器,輸入引數的特徵數為1(工作年限)
lu = linearunit(1)
# 訓練,迭代10輪, 學習速率為0.01
input_vecs, labels = get_training_dataset()
lu.train(input_vecs, labels, 10, 0.01)
#返回訓練好的線性單元
return lu
if __name__ == '__main__':
'''訓練線性單元'''
linear_unit = train_linear_unit()
# 列印訓練獲得的權重
print linear_unit
# 測試
print
'work 3.4 years, monthly salary = %.2f' % linear_unit.predict([3.4])
print
'work 15 years, monthly salary = %.2f' % linear_unit.predict([15])
print
'work 1.5 years, monthly salary = %.2f' % linear_unit.predict([1.5])
print
'work 6.3 years, monthly salary = %.2f' % linear_unit.predict([6.3])
學習資料:
推薦閱讀
歷史技術博文鏈結彙總
也許可以找到你想要的
線性神經網路 matlab神經網路
自適應線性元件20世紀50年代末由widrow和hoff提出,主要用於線性逼近乙個函式式而進行模式聯想以及訊號濾波 模型識別和控制等。線性神經網路和感知器的區別是,感知器只能輸出兩種可能的值,而線性神經網路的輸出可以取任意值。線性神經網路採用widrow hoff學習規則,即lms least me...
線性神經網路
線性神經網路 啟用函式為y x import numpy as np import matplotlib.pyplot as plt 輸入資料 x np.array 1,3,3 1,4,3 1,1,1 標籤y np.array 1,1,1 權值初始化,1行3列,取值範圍 1到1 w np.rando...
3 線性神經網路
由於單層感知器不能解決線性不可分的問題 在上篇文章對線性可分做了解釋 如異或問題,這時我們引入了新的結構 線性神經網路。線性神經網路與單層感知器的結構相似,只是它們的啟用函式不同,單層感知器的啟用函式只能輸出兩種可能值 1 或 1 而線性神經網路的輸出可以是任何取值,其啟用函式是線性函式 y x。l...