본문 바로가기
Python/deep learning

신경망 파이썬 코드로 구현하기

by 철이88 2023. 3. 30.
반응형

앞서 활성화 함수, 기초적인 퍼셉트론의 형태, 가중치를 행렬로 표현하는 법 등을 알아봤습니다. 이번에는 앞에서 배운 내용들을 종합하여 파이썬에서 간단한 신경망을 구현해 보겠습니다.

 

다음 그림 예는 두 개의 입력 신호(x), 한 개의 편향(b)과 출력(y)이 있고, 활성화 함수로 시그모이드 함수를 사용하였습니다.

 

  이를 파이썬 코드로 만들어 보겠습니다.

import numpy as np

def sigmoid(x):
    return 1/(1 + np.exp(-x))

X = np.array([0.8, 0.3]) # 입력값 x1 = 0.8, x2 = 0.3
W = np.array([[0.4], [0.6]]) # 가중치 w1 = 0.4, w2 = 0.6
b = -0.3 # 편향
A = np.dot(X, W) + b
Y = sigmoid(A)
print(A)
print(Y)

여기서 X는 입력값을 배열로 표현한 것이고, 행렬이라고 생각하면 1 × 2 행렬입니다.

마찬가지로 W도 가중치를 배열로 표현한 것이고, 2 × 1 행렬로 볼 수 있습니다. 

np.dot는 numpy 배열의 내적을 계산합니다. 즉, 행렬의 곱이라고 보면 됩니다.

위의 예에서 행렬곱 X$_{(1 × 2)}$W$_{(2 × 1)}$ 은 1 × 1 행렬, 즉 원소가 하나뿐인 행렬이 됩니다.

 

행렬의 곱에 대한 내용은 아래 링크를 참조하시기 바랍니다.

2.4 행렬 연산의 규칙 (1)

 

2.4 행렬 연산의 규칙 (1)

행렬 방정식은 선형 대수학의 핵심이라고 할 수 있습니다. 행렬 방정식을 잘 다루기 위해서는 행렬 연산의 규칙을 알아야 합니다. 행렬의 교환 법칙(commutative law), 분배 법칙(distributive law), 결합

er5030000.tistory.com

위 예를 이해하면 더 많은 입력(편향)과 출력, 그리고 더 많은 층으로 이뤄진 복잡한 신경망도 코드로 만들 수 있습니다.

단지 배열의 크기만 더 커지면 됩니다.

 

반응형

댓글