「ゼロから作るDeep Learning」の2章はパーセプトロンで、入力を重み係数で加算して出力を決める手法の説明。AND,OR,NAND,XORについてpytonで実装。以下は実装例(ほとんど本のままですが、if文はちょっと変えています)
#!/usr/bin/python3 ############################## # # Section 2.3.3 # ./233_pc_and_np.py # ############################## import numpy as np def AND(x1,x2): x = np.array([x1,x2]) w = np.array([0.5,0.5]) b = -0.7 tmp = np.sum(x*w)+b if tmp > 0: return 1 else: return 0 def OR(x1,x2): x = np.array([x1,x2]) w = np.array([0.5,0.5]) b = -0.2 tmp = np.sum(x*w)+b if tmp > 0: return 1 else: return 0 def NAND(x1,x2): x = np.array([x1,x2]) w = np.array([-0.5,-0.5]) b = 0.7 tmp = np.sum(x*w)+b if tmp > 0: return 1 else: return 0 def XOR(x1,x2): return AND(OR(x1,x2),NAND(x1,x2)) print("=== AND ===") print("AND(0,0)") print(AND(0,0)) print("AND(0,1)") print(AND(0,1)) print("AND(1,0)") print(AND(1,0)) print("AND(1,1)") print(AND(1,1)) print("=== OR ===") print("OR(0,0)") print(OR(0,0)) print("OR(0,1)") print(OR(0,1)) print("OR(1,0)") print(OR(1,0)) print("OR(1,1)") print(OR(1,1)) print("=== NAND ===") print("NAND(0,0)") print(NAND(0,0)) print("NAND(0,1)") print(NAND(0,1)) print("NAND(1,0)") print(NAND(1,0)) print("NAND(1,1)") print(NAND(1,1)) print("=== XOR ===") print("XOR(0,0)") print(XOR(0,0)) print("XOR(0,1)") print(XOR(0,1)) print("XOR(1,0)") print(XOR(1,0)) print("XOR(1,1)") print(XOR(1,1)) ############################## # # Section 2.3.3 # $ ./233_pc_and_np.py # # # # === AND === # AND(0,0) # 0 # AND(0,1) # 0 # AND(1,0) # 0 # AND(1,1) # 1 # === OR === # OR(0,0) # 0 # OR(0,1) # 1 # OR(1,0) # 1 # OR(1,1) # 1 # === NAND === # NAND(0,0) # 1 # NAND(0,1) # 1 # NAND(1,0) # 1 # NAND(1,1) # 0 # === XOR === # XOR(0,0) # 0 # XOR(0,1) # 1 # XOR(1,0) # 1 # XOR(1,1) # 0
■ご参考
勉強している本:
ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- 作者: 斎藤康毅
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/09/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (18件) を見る