chakokuのブログ(rev4)

テック・コミック・DTM・・・ごくまれにチャリ

【DLfS】2章パーセプトロンを学ぶ

「ゼロから作る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

■ご参考
勉強している本: