深度学习--TensorFlow (1)单层感知器1 -- 实现单数据训练
生活随笔
收集整理的這篇文章主要介紹了
深度学习--TensorFlow (1)单层感知器1 -- 实现单数据训练
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
一、基礎理論
1、單詞感知器介紹?
2、單詞感知器學習規則
前向傳遞(得到輸出y)?
反向傳遞(更新權重w)
二、實現單層感知器
1、初始參數設置?
2、正向傳播(得到輸出y)
3、 反向傳播(更新權重參數)
總代碼
一、基礎理論
1、單詞感知器介紹?
感知器:模擬生物神經網絡的人工神經網絡結構。
w:權值,可以調節神經信號輸入值的大小。
b:偏置,相當于神經元內部自帶的信號。?
f(x):激活函數,信號進行線性/非線性變化。(有sign、sigmoid、relu等等激活函數)
例:
一個典型的激活函數:sign(x):當x>0時,輸出為1;當x=0時,輸出為0,當x=-1時,輸出為-1。
(把最開始的單層感知器的偏置值b變成了輸入w0*x0,w0*x0實際上就是w0)
2、單詞感知器學習規則
感知器學習規則:感知器中的權重參數w訓練方法。
前向傳遞(得到輸出y)?
(b是偏置)?
反向傳遞(更新權重w)
更新權重:?
二、實現單層感知器
1、初始參數設置?
先設置初始參數,輸入、權重、偏置、正確標簽、學習率等等。
# 輸入
x0, x1, x2 = 2, 4, 7
# 初始權重
w0, w1, w2 = 3, 5, 6
# 偏置
b = 1
# 標簽(正確標簽,訓練結束的目標)
true = -1
# 學習率(即yingta)
lr = 1
(犯了一個愚蠢的錯誤,sign函數最后的結果只有-1和1兩個值,我居然設置了一個12的標簽,自然永遠都不可能滿足要求)
2、正向傳播(得到輸出y)
# 開始訓練(正向、反向傳播)
for i in range(100):# 2、正向傳播:求輸出y# 這里選用sign激活函數y = np.sign(w0*x0+w1*x1+w2*x2)print(w0, w1, w2)print(y)
3、 反向傳播(更新權重參數)
# 3、反向傳播:更新權重參數# 如果沒有達到訓練目標,更新w權重if y != true:w0 += lr * (true - y) * x0w1 += lr * (true - y) * x1w2 += lr * (true - y) * x2else:print('訓練成功!y = ', y)break
?換一組數據:
?(可以看出來,數據越大,需要訓練的次數越多)
總代碼
# 手寫單層感知器
import numpy as np# 1、設置初始參數
# 輸入
x0, x1, x2 = 2, 4, 7
# 初始權重
w0, w1, w2 = 13, 15, 16
# 偏置
b = 1
# 標簽(正確標簽,訓練結束的目標)
true = -1
# 學習率(即yingta)
lr = 1# 開始訓練(正向、反向傳播)
for i in range(100):# 2、正向傳播:求輸出y# 這里選用sign激活函數y = np.sign(w0*x0+w1*x1+w2*x2)print(w0, w1, w2)print(y)# 3、反向傳播:更新權重參數# 如果沒有達到訓練目標,更新w權重if y != true:w0 += lr * (true - y) * x0w1 += lr * (true - y) * x1w2 += lr * (true - y) * x2else:print('訓練成功!y = ', y)break
總結
以上是生活随笔為你收集整理的深度学习--TensorFlow (1)单层感知器1 -- 实现单数据训练的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python -- plt图表
- 下一篇: 深度学习--TensorFlow (2)