Deep Learning

numpy를 이용한 다차원 배열 계산 - 신경망 효율적 구현

햇농nongnong 2022. 5. 31. 15:17

다차원 배열


  • 다차원 배열도 일단 '숫자의 집합'
  • 숫자가 한 줄로 있는 것부터 시작해서 직사각형, 3차원, 더 일반화하여 N차원으로 나열하는 모든 배열을 '다차원 배열' 이라고 함

 

넘파이로 작성한 1차원 배열

 

 

  • np.ndim(A) : 배열의 차원 수 확인
  • A.shape : 인스턴스 변수 shape 로 배열의 형상 확인하기 - "튜플 반환"
    1차원 배열이라도 다차원 배열과의 형태 통일을 위해 튜플 형태인 (4, ) 로 반환
    예를 들어 2차원 배열이면 (4, 3), 3차원 배열이면 (4, 3, 2) 형태로 반환됨
  • 이 예시에서는, A 는 1차원 배열이고 원소 4개로 구성되어 있다는 것을 확인 가능

 

넘파이로 작성한 2차원 배열

 

 

  • B는 '3 x 2 배열' : 처음 차원에는 원소가 3개, 다음 차원에는 원소가 2개있다는 의미
  • 2차원 배열은 특히 행렬(matrix) 이라고 함

 

행렬의 곱

 

 

  • np.dot() : 넘파이 함수 np.dot() 을 이용해 행렬의 곱 계산
  • np.dot() 은 입력이 1차원 배열이면 벡터 곱 계산, 2차원 배열이면 행렬 곱 계산
  • np.dot(A, B) 와 np.dot(B, A) 는 다른 값이 될 수 있음 - 행렬의 곱에서는 피연산자의 순서가 다르면 결과도 다르기 때문
  • dot 은 스칼라곱(scalar product) 을 뜻하며 점곱(dot product) 라고도 함
  • 이 예시에서는 2 x 2 행렬 두 개를 곱했지만, 형상이 다른 행렬의 곱도 계산 가능

 

형상이 다른 행렬의 곱

 

 

  • 행렬의 형상을 주의해서 봐야 함 - 행렬 A의 1번째 차원의 원소 수(열 수) 와 행렬 B의 0번째 차원의 원소 수9행 수) 가 같아야 함
  • 다차원 배열을 곱하려면 두 행렬의 대응하는 차원의 원소 수를 일치시켜야 함

 

 

 

 Reference

  • 밑바닥부터 시작하는 딥러닝