二層感知器實現異或

2021-09-27 19:29:30 字數 1329 閱讀 1123

由於單層神經網路不能將異或的判定分為兩類。所以需要輸入層/隱藏層/輸出層

用兩個與門和乙個或門實現

需要三個神經單元

參考西瓜書:

# 兩層感知器實現異或

# m-p神經元

# 閾值設定:與1,1,2 或1,1,0.5 非-0.6,0,0.5

def union(w,x,b):

"""m-p神經元

:param w:權重矩陣

:param x:輸入矩陣

:param b:閾值

:return:輸入

"""# 輸入 = w和x的向量積 - 閾值

return step_func(np.dot(w,x)-b)

# 自己寫的階躍函式

def step_func(x):

if x >= 0:

return 1

else:

return 0

# 異或

# 實現方式:y = ( a & -b ) | ( -a & b )

def xor():

# a & -b

w1 = np.array([1, -1])

# -a & b

w2 = np.array([-1, 1])

# ( a & -b ) | ( -a & b )

w3 = np.array([1, 1])

while 1 :

a = int(input("x1=:"))

b = int(input("x2=:"))

# 輸入

x = np.array([a, b])

# 隱藏層a1

a1 = union(w1,x,0.5)

# 隱藏層b1

b1 = union(w2,x,0.5)

xx = np.array([a1,b1])

c1 = union(w3,xx,0.5)

print("輸出是:",c1)

if __name__ == "__main__":

xor()

感知器的scala實現

其實感知器學習演算法,就是利用第一節介紹的單層感知器。首先利用給的正確資料,計算得到輸出值,將輸出值和正確的值相比,由此來調整每乙個輸出端上的權值。公式便是用來調整權值,首先 是乙個 學習引數 一般我將它設定成小於1的正數。t便是訓練資料中的正確結果,便是第i個輸入端的輸入值,便是第i個輸入端上面的...

感知器的scala實現

其實感知器學習演算法,就是利用第一節介紹的單層感知器。首先利用給的正確資料,計算得到輸出值,將輸出值和正確的值相比,由此來調整每乙個輸出端上的權值。公式便是用來調整權值,首先 是乙個 學習引數 一般我將它設定成小於1的正數。t便是訓練資料中的正確結果,便是第i個輸入端的輸入值,便是第i個輸入端上面的...

python 實現感知器(一)

基礎知識不再重述,可參考 coding utf 8 這裡定義乙個感知器的類 class perceptron object def init self,input num,activator 初始化感知器,設定輸入引數的個數,以及啟用函式。啟用函式的型別為double double self.act...