概要
初歩的な質問ですみません。「ゼロから作るDeepLearning」を現在勉強中の初学者です。
§2.5.2 XORゲートの実装 で実装を進めている際、出力がおかしくなってしまいました。
改善方法など、お教えいただけると幸いです。
実現したいこと
- 論理回路 XORゲートのPythonによる実装
該当のソースコード1 and_gate.py
Python
1# ANDゲートの実装 2import numpy as np 3 4 5def and_(x1, x2): # 二つの引数 x1とx2を受け取る 6 x = np.array([x1, x2]) 7 w = np.array([0.5, 0.5]) # 重み 8 b = -0.7 # バイアス 9 tmp = np.sum(w * x) + b # np.sumで各要素の総和を求める 10 if tmp <= 0: 11 return 0 12 else: 13 return 1 14 15 16print(and_(0, 0)) 17print(and_(0, 1)) 18print(and_(1, 0)) 19print(and_(1, 1)) 20
該当のソースコード2 nand_gate.py
python
1# NANDゲートの実装 2import numpy as np 3 4 5def nand_(x1, x2): 6 x = np.array([x1, x2]) 7 w = np.array([-0.5, -0.5]) 8 b = 0.7 9 tmp = np.sum(w * x) + b 10 if tmp <= 0: 11 return 0 12 else: 13 return 1 14 15 16print(nand_(0, 0)) 17print(nand_(0, 1)) 18print(nand_(1, 0)) 19print(nand_(1, 1))
該当のソースコード3 or_gate.py
Python
1# ORゲートの実装 2import numpy as np 3 4 5def or_(x1, x2): 6 x = np.array([x1, x2]) 7 w = np.array([0.5, 0.5]) 8 b = -0.2 9 tmp = np.sum(w * x) + b 10 if tmp <= 0: 11 return 0 12 else: 13 return 1 14 15 16print(or_(0, 0)) 17print(or_(0, 1)) 18print(or_(1, 0)) 19print(or_(1, 1))
該当のソースコード4 xor_gate.py
Python
1# XORゲートの実装 2from and_gate import and_ # それぞれのゲートを実装した関数を呼び出す 3from nand_gate import nand_ 4from or_gate import or_ 5 6 7def xor_(x1, x2): 8 s1 = nand_(x1, x2) 9 s2 = or_(x1, x2) 10 y = and_(s1, s2) 11 return y 12 13 14print(xor_(0, 0)) 15print(xor_(0, 1)) 16print(xor_(1, 0)) 17print(xor_(1, 1))
各コード出力結果
- and_gate.py
0
0
0
1
- nand_gate.py
1
1
1
0
-or_gate.py
0
1
1
1
-xor_gate.py
0
0
0
1
1
1
1
0
0
1
1
1
0
1
1
0
補足情報
Python3.11
Mac OSVenture13.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/12/30 17:24
2022/12/30 17:33