신경망 데이터의 행렬 특징

yoon·2021년 10월 13일
0

(*이 시리즈의 내용은 모두 '인공지능 100점을 위한 파이썬 수학' 서적의 내용을 정리한 것입니다. 사진과 같은 자료들 또한 출처가 위 책임을 밝힙니다.)

MNIST 데이터로 784개의 입력과 10개의 출력이 있는 신경망에서 은닉층이 하나, 그 은닉층에 50개의 노드가 있는 신경망을 만들었을 때, 다음 그림과 같은 계산이 필요하다.

입력(784) - 은닉(50) - 출력(10)
일 때, 입력과 은닉 사이 계산을 위해 784x50개의 원소를 가진 W1 행렬이 필요하고,
은닉과 출력 사이 계산을 위해 50x10개의 원소를 가진 W2 행렬이 필요하다.

  • 입력 X는 784행, 1열짜리 행렬이다. 개별 값은 0에서 255 사이의 값
  • 출력 Y는 10행 1열짜리 행렬이다. 값은 0에서 1 사이의 값으로 확률값을 의미한다.
  • 입력 - 은닉층 연결을 위한 행렬W1은 행의 크기 50, 열의 크기 784
  • 은닉층 - 출력 연결을 위한 행렬W2는 행의 크기 10, 열의 크기 50
  • 은닉층 노드 50개의 편차를 보정하기 위한 B1은 50행 1열 행렬
  • 출력층 노드 10개의 편차를 보정하기 위한 B2는 10행 1열 행렬

간단한 10행 1열 행렬로 2번째 값이 1이고 나머지가 0인 행렬 A는 다음과 같다.

np.array([[0], [1], [0], [0], [0], [0], [0], [0], [0], [0]])

A 행렬의 행과 열을 바꿔서 1행 10열로 나타낸 A의 전치행렬은 다음과 같다.

np.array([[0, 1, 0, 0, 0, 0, 0, 0, 0, 0]])

profile
공부하자

0개의 댓글