若是頭一擺來遮,建議先來踏話頭
請共教育部閩南語常用辭典開--咧,隨時會當查。
咱這馬了解 Perceptron 神經元,嘛了解簡單 ê AND,OR,NAND Lo-tsik。先來定義簡單 AND 函式:
def AND(x1, x2):
w1, w2, theta = 0.5, 0.5, 0.7
tmp = x1*w1 + x2*w2
if tmp <= theta:
return 0
if tmp > theta:
return 1
AND(0, 0)
AND(1, 0)
AND(0, 1)
AND(1, 1)
遮有一个寫好的程式
and.py。
毋過,咱想欲利用
NumPy ê 陣列來運算,所以愛先共神經元的算式小改寫一咧:
y = 1 if (w1x1 + w2x2 ≦ θ)
y = 0 if (w1x1 + w2x2 > θ)
和下跤ê仝款
y = 1 if (w1x1 + w2x2 - θ ≦ 0)
y = 0 if (w1x1 + w2x2 - θ > 0 )
θ 咱共伊叫做 Pài-o-sù (Bias),正號抑是負號無差,是共負號提出來外口抑是囥佇符號裡爾爾。若共 (-θ) 用另一个符號 b 代表:
y = 1 if (w1x1 + w2x2 + b ≦ 0)
y = 0 if (w1x1 + w2x2 + b > 0 )
咱這馬會使開始寫 NumPy 版 ê AND 函式:
and2.py:
def AND(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.7
tmp = np.sum(w*x) + b
if tmp <= 0:
return 0
else:
return 1
AND(0, 0)
AND(1, 0)
AND(0, 1)
AND(1, 1)
你會問講 and.py 和 and2.py 是仝款 ê 程式,為啥物愛用 NumPy 來算咧? 這是因為未來,咱的程式會愈來愈複雜。若是這馬無先共 NumPy ê 基礎拍落,後擺會接載袂牢,毋但愈來愈僫寫,速度嘛會干焦龜佇趖咧。
紲落來是
nand.py:
import numpy as np
def NAND(x1, x2):
x = np.array([x1, x2])
w = np.array([-0.5, -0.5])
b = 0.7
tmp = np.sum(w*x) + b
if tmp <= 0:
return 0
else:
return 1
print(NAND(0, 0))
print(NAND(1, 0))
print(NAND(0, 1))
print(NAND(1, 1))
和
or.py:
import numpy as np
def OR(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5])
b = -0.2
tmp = np.sum(w*x) + b
if tmp <= 0:
return 0
else:
return 1
print(OR(0, 0))
print(OR(1, 0))
print(OR(0, 1))
print(OR(1, 1))
咱會當看著,AND,OR, NAND 干焦差佇 w, b ê 值無仝,也都是設定 Paì-o-sù (bias) 都好阿!
沒有留言:
張貼留言