ORゲート

Pythonを使って,ANDゲートと同様に,単純な論理ゲートであるORゲートを考える.

def OR_gate(input1, input2):
if input1 == 1 or input2 == 1:
return 1
else:
return 0

# テスト
print("0 OR 0 =", OR_gate(0, 0)) # 0
print("0 OR 1 =", OR_gate(0, 1)) # 1
print("1 OR 0 =", OR_gate(1, 0)) # 1
print("1 OR 1 =", OR_gate(1, 1)) # 1

実行すると,

0 OR 0 = 0
0 OR 1 = 1
1 OR 0 = 1
1 OR 1 = 1

次に,同じくORゲートパーセプトロンとして考えてみる.

import numpy as np

class Perceptron:
def __init__(self, input_size, lr=0.1, epochs=100):
self.W = np.zeros(input_size + 1)
self.epochs = epochs
self.lr = lr

def activation_fn(self, x):
return 1 if x >= 0 else 0

def predict(self, x):
x = np.insert(x, 0, 1) # バイアス項の追加
z = self.W.T.dot(x)
a = self.activation_fn(z)
return a

def train(self, X, d):
for _ in range(self.epochs):
for i in range(d.shape[0]):
y = self.predict(X[i])
e = d[i] - y
self.W = self.W + self.lr * e * np.insert(X[i], 0, 1)

# 入力データ
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
# 目標値
d = np.array([0, 1, 1, 1])

# パーセプトロンの定義と訓練
perceptron = Perceptron(input_size=2)
perceptron.train(X, d)

# テスト
print("0 OR 0 =", perceptron.predict(np.array([0, 0])))
print("0 OR 1 =", perceptron.predict(np.array([0, 1])))
print("1 OR 0 =", perceptron.predict(np.array([1, 0])))
print("1 OR 1 =", perceptron.predict(np.array([1, 1])))

出力は次のようになる.

0 OR 0 = 0
0 OR 1 = 1
1 OR 0 = 1
1 OR 1 = 1

Mathematics is the language with which God has written the universe.





















view関数 NANDゲート ANDゲート Virtualboxでavxを有効化 Docker composeのインストール Goのインストール