julia coding story

[Deep Learning from Scratch] 신경망(2) - 다차원 배열의 계산 본문

소프트웨어/Deep Learning (딥러닝)

[Deep Learning from Scratch] 신경망(2) - 다차원 배열의 계산

julia-biolat 2023. 1. 7. 23:47
728x90

1. 다차원 배열의 계산

 

1.1 다차원 배열

- 다차원 배열은 '숫자의 집합'

 

▶1차원

import numpy as np
A = np.array([1,2,3,4])
print(A)
np.ndim(A)#배열의 차원수
#출력 : 1
A.shape#배열의 형상 인덱스, 튜플을 반환해야함 why? 다차원 배열일 때와 통일된 형태로 결과를 반환하기 위함
# 출력 : (4,)
A.shape[0] 
#출력 : 4

 

▶2차원

- B는 3 x 2 배열

- 2차원 배열은 행렬이라고 부름

- 배열의 가로 방향으로 행, 세로 방향으로 열이라고 함

 

 

 

 

 

 

 

 

 

 

 

 

1.1 행렬의 곱

 

- A의 1행과 B의 열을 곱한 값은 행렬의 1행 1번째 원소가 되고, A의 2행과 B의 1열을 곱한 결과는 2행 1번째 원소가 된다. 

 

 

행렬 곱 by Python

import numpy as np
A = np.array([[1,2],[3,4]])
B = np.array([[5,6],[7,8]])
np.dot(A, B)  #행렬 곱 = np.dot()함수 사용

#출력 : array([[19, 22],[43, 50]])

- np.dot()은 1차원이면 벡터를 2차원 배열이면 행렬곱을 계산함. 

- np.dot(A, B)  ≠  np.dot(B,A)

 

import numpy as np
A = np.array([[1,2,3],[4,5,6]])
B = np.array([[1,2],[3,4],[5,6]])
C = np.array([[1,2],[3,4]])

np.dot(A, B)
#np.dot(A,C) A와 C의 차원이 다름, 행렬 곱할 수 없음

A - 3 X 2           B - 2 x 4      =     C - 3 X 4

A - 3 X 2           B - 2            =     C - 3

- 색이 같은 것 끼리 동일 해야함

 

import numpy as np
A = np.array([[1,2,3],[4,5,6]])
B = np.array([[1,2],[3,4],[5,6]])
C = np.array([[1,2],[3,4]])
D = np.array([7,8])

np.dot(B,D)

#출력 : array([23, 53, 83])

▶ 신경망에서 행렬 곱

출처: Deep Learning from Scratch

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

#출력 : [ 5 11 17]