본문 바로가기

그 땐 AI했지/그 땐 DeepLearning했지

[TAVE/밑딥] ch03 신경망 | 03 다차원 배열의 계산

728x90

참고자료: 밑바닥부터 시작하는 딥러닝

 

1.  다차원 배열


import numpy as np

A = np.array([1, 2, 3, 4])

print(A) #[1 2 3 4]
print(np.ndim(A)) #1
print(A.shape) #(4,)
print(A.shape[0]) #4

👉🏻넘파이로 1차원 배열을 구현해보았다.

  • np.dim(): 배열의 차원 수
  • shape: 배열의 형상
B = np.array([[1, 2], [3, 4], [5, 6]])
print(B)
#[[1 2]
# [3 4]
# [5 6]]
print(np.ndim(B)) #2
print(B.shape) #(3, 2)

👉🏻넘파이를 통해 3x2 배열을 구현했다. 2차원 배열은 특히 행렬이라고 부른다.

 

2.  행렬의 곱


👉🏻행렬을 곱하는 방법은 위의 사진과 같다. 이는 넘파이 함수 dot()으로 계산할 수 있다.

import numpy as np

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

print(np.dot(A, B))
#[[19 22]
# [43 50]]

👉🏻np.dot()은 입력이 1차원 배열이면 백터를, 2차원 배열이면 행렬 곱을 계산한다.

✍🏻행렬의 형상: 행렬 A의 1번째 차원의 원소 수(열 수)와 행렬 B의 0번째 차원의 원소 수(행 수)가 같아야 한다.

 

3.  신경망에서의 행렬 곱


넘파이 행렬을 써서 신경망을 구현해보자. 이 신경망은 편향과 활성화 함수를 생략하고 가중치만 갖도록 해보자

X = np.array([1, 2])
W = np.array([[1, 3, 5], [2, 4, 6]])
Y = np.dot(X, W)
print(Y)
#[ 5 11 17]

👉🏻행렬의 곱으로 한꺼번에 계산해주는 기능은 신경망을 구현할 때 매우 중요한 역할을 한다.

728x90