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 |