728x90
반응형

벡터와 행렬

  • 신경망에서는 벡터와 행렬(또는 텐서)이 도처에서 등장한다.

 

벡터(vector)

  • 크기와 방향을 가진 양
  • 숫자가 일렬로 늘어선 집합으로 표현 가능
  • 파이썬에서느 1차원 배열로 취급

 

행렬(matrix)

  • 숫자가 2차원 형태(사각형 형상)로 늘어선 것

 

벡터와 행렬의 예

[그림1] 벡터와 행렬의 예

  • 벡터는 1차원 배열, 행렬은 2차원 배열로 표현 가능
  • 행렬에서 가로줄을 행(row), 세로줄을 열(column)이라 한다. - 3행 2열
  • 벡터와 행렬을 확장해 숫자 집합을 N차원으로 표현한 것도 생각할 수 있다. 이를 일반적으로 텐서라고 한다.
  • 벡터는 표현하는 방법이 두 가지 
    • 숫자를 세로로 나열하는 방법(열벡터)
    • 숫자를 가로로 나열하는 방법(행벡터)

 

열벡터와 행벡터

[그림2] 열벡터와 행벡터

 

import numpy as np

x = np.array([1,2,3])
print("x의 클래스 : ",x.__class__) # 클래스 이름 표시
print("x.shape : ", x.shape)
print("x.ndim : ", x.ndim)

W = np.array([[1,2,3], [4,5,6]])
print("W.shape : ",W.shape)
print("W.ndim : ", W.ndim)

[그림3] 벡터와 행렬 생성 예

  • np.ndarry클래스에는 다양한 편의 메서드와 인스턴스 변수가 준비되어 있다.
  • 인스턴스 변수 중 shape와 ndim이용
  • shape은 다차원 배열의 형상을
    • x는 1차원 배열 원소 수가 3개, w는 2차원 배열 2x3(2행 3열) 행렬
  • ndim은 차원 수를 담고 있다.

 

브로드캐스트

  • 넘파이의 다차원 배열에서는 형상이 다른 배열끼리도 연산할 수 있다.

 

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

[그림4] 브로드캐스트 예

  • 2*2 행렬에 10이라는 스칼라 값을 곱했다.

 

[그림5] 브로드캐스트 예

 

 

A = np.array([[1,2],[3,4]])
B = np.array([10,20])
A*B

[그림6] 브로드캐스트 예

 

[그림6] 브로드캐스트 예

 

벡터의 내적과 행렬의 곱

  • 벡터의 내적으로 수식은 아래와 같다.

[그림7] 벡터의 내적 수식

  • 2개의 벡터 x = (x1,x2,x3...xn)과 y = (y1,y2,y3...yn)이 있다고 가정
  • 벡터의 내적은 두 벡터에서 대응하는 원소들의 곱을 모두 더한 것이다.

 

행렬의 곱셈 방법

[그림8] 행렬의 곱셈 방법

# 행렬의 내적 
a = np.array([1,2,3])
b = np.array([4,5,6])
print("np.dot(a,b) : ", np.dot(a,b))

# 행렬의 곱
A = np.array([[1,2], [3,4]])
B = np.array([[5,6],[7,8]])
print("np.matmul(A,B) : ", np.matmul(A,B))

[그림9] 행렬의 곱셈 방법

  • 벡터의 내적과 행렬의 곱 모두에 np.dot()사용은 가능하다. 
  • np.dot(x,y)의 인수가 모두 1차원 배열이면 벡터의 내적을 계산하고, 2차원 배열이면 행렬의 곱을 계산한다.
    • 다만 둘을 구분해 코드의 논리와 의도 명확히

 

행렬 형상 확인

  • 행렬, 벡터 사용시 '형상(shape)'에 주의해야 한다.

 

형상 확인 : 행렬의 곱에서는 대응하는 차원의 원소 수를 일치시킨다.

[그림10] 형상 확인

  • 행렬 C의 형상은 A의 행 수와 B의 열 수가 된다.

 

 

 

출처 : 밑바닥부터 시작하는 딥러닝2

https://www.hanbit.co.kr/store/books/look.php?p_code=B8950212853

 

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

이 책은 『밑바닥부터 시작하는 딥러닝』에서 다루지 못했던 순환 신경망(RNN)을 자연어 처리와 시계열 데이터 처리에 사용하는 딥러닝 기술에 초점을 맞춰 살펴본다. 8장 구성으로 전체를 하나

www.hanbit.co.kr

 

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기