본문 바로가기
AI-driven Methodology/ANN

[ANN] 퍼셉트론 연산

by goatlab 2022. 11. 10.
728x90
반응형
SMALL

퍼셉트론 연산

 

import numpy as np

grade = 10
test = 20

# 1x2
input0 = np.array([grade, test])

# 2x2
w1 = np.array(
     [[0.5, 0.12],
      [0.3, 0.4]])

# 2x1
w2 = np.array([[0.4],
               [0.5]])

result_0 = np.dot(input0, w1)
result_1 = np.dot(result_0, w2)
print('result_0:', result_0)
print('result_1:', result_1)
result_0: [11.   9.2]
result_1: [9.]

 

step 함수 (기본 활성화 함수)

 

def step(h):
    return np.array(h >= 0, dtype = "int")
    
a0 = np.array([1,2,3,4])
step(a0)
array([1, 1, 1, 1])
# 이전 네트워크에 스텝 활성화 함수 대입
result_0 = np.dot(input0, w1)
result_0 = step(result_0)
result_1 = np.dot(result_0, w2)
result_1 = step(result_1)
print('result_0:', result_0)
print('result_1:', result_1)
result_0: [1 1]
result_1: [1]
import matplotlib.pyplot as plt

x = np.arange(-10, 10, 0.1)
y = step(x)
plt.plot(x, y)

# bias 값을 추가하면 step function의 기준 변경 가능
bias = 2

x = np.arange(-10, 10, 0.1) 
y = step(x + bias)
plt.plot(x, y)

 

비트 연산

 

# AND 연산
def AND(a, b):
    w1 = .25
    w2 = .25
    bias = -.5
    y = w1 * a + w2 * b + bias 
    result = step(y)
    return result 

inputs = [[1, 1],   # 1
          [1, 0],   # 0
          [0, 1],   # 0
          [0, 0]]   # 0

for a, b in inputs:
    result = AND(a, b)
    print(f'{a} and {b} = {result}')
1 and 1 = 1
1 and 0 = 0
0 and 1 = 0
0 and 0 = 0
# OR 연산
def OR(a, b):
    w1 = .25
    w2 = .25
    bias = -0.25
    y = w1 * a + w2 * b + bias 
    result = step(y)
    return result 

inputs = [[1, 1],   # 1
          [1, 0],   # 1
          [0, 1],   # 1
          [0, 0]]   # 0

for a, b in inputs:
    result = OR(a, b)
    print(f'{a} or {b} = {result}')
1 or 1 = 1
1 or 0 = 1
0 or 1 = 1
0 or 0 = 0
# NOT 연산
def NOT(x):
    return np.array(~(x == 1), dtype='int')

x = np.array([1,0,1,0])
NOT(x)
array([0, 1, 0, 1])

 

XOR

 

def XOR(a, b):
    return AND(NOT(AND(a, b)), OR(a, b))


inputs = [[1, 1],   # 1
          [1, 0],   # 1
          [0, 1],   # 1
          [0, 0]]   # 0

for a, b in inputs:
    result = XOR(a, b)
    print(f'{a} xor {b} = {result}')
1 xor 1 = 0
1 xor 0 = 1
0 xor 1 = 1
0 xor 0 = 0
728x90
반응형
LIST

'AI-driven Methodology > ANN' 카테고리의 다른 글

[ANN] 신경망 구현  (0) 2022.11.17
[ANN] GRU으로 삼성전자 주가 예측  (0) 2022.10.21
[ANN] LSTM으로 삼성전자 주가 예측  (0) 2022.10.21
[ANN] SimpleRNN (2)  (0) 2022.10.21
[ANN] SimpleRNN (1)  (0) 2022.10.19