2017年11月8日 星期三

Python Deep Learning 深學筆記 - 用神經元的方式寫簡單 Logic


若是頭一擺來遮,建議先來踏話頭

請共教育部閩南語常用辭典開--咧,隨時會當查。

咱這馬了解 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) 都好阿!







沒有留言:

佇 Linux 來看GPX 檔案

最近定定有戶外活動。使用𤆬路機 (GPS) 來記錄行過的路線。普通我記錄路線,攏是用手機仔抑是專門个𤆬路機,罕得用電腦來看。 毋過,"仙人拍鼓有時錯,跤步踏差啥人無"。有一擺我無細膩,袂記得共一擺活動的路線收煞起來,閣直接開始記錄下一擺的活動,按呢共幾落...