[딥러닝 1단계] 3. 파이썬에서의 벡터화

2-pi-r·2024년 3월 23일
0

인공지능

목록 보기
4/7

강의

벡터화 (Vectorization)


  • 정의

    • for문 대신 벡터 연산을 이용하여 효율적으로 계산하는 방법
  • 필요성

    • 코드에서 for문 써서 n번 연산할 것을, 벡터 써서 코드 1줄로 해결 가능.
      ⇒ 연산 빨라짐.
      ⇒ 딥러닝에서 큰 데이터셋 다룰 때 유리.
  • ex) 뉴런 하나를 벡터화

    • 상황
      • 데이터 1개, 반복횟수 1번
        z=WTX+bz = W^TX + b 를 계산하는 방법
        - y^=σ(z)ŷ = σ(z) 할 때 그 z 맞음.
    • Non-vectorization
      z = 0
      for i in range(n-x):
      	z += w[i] * x[i]
      z += b
    • Vectorization
      import numpy as np
      
      z = np.dox( np.transpose(W), X) + b
  • ex) Layer 한 층을 벡터화

      
  • 되도록 for문 쓰지 말고,
    대신 numpy 내장함수를 이용할 수 있나 확인하기! (벡터화)

브로드캐스팅 of 파이썬


  • 정의 :
    • 차원이 다른 행렬끼리 계산할 수 있도록 자동으로 차원을 변환한 후 계산해줌.
  • 방법 :
    • 직관적임.

numpy 쓸 때 오류 줄이는 Tip!


  • reshape을 생활화하자.
    • shape을 확실히 아는 게 아니면 그냥 한 번 더 써주자. 이런 건 확실히 하는 게 좋음.
    • 게다가 비용도 적은데 왜 안 써? cost = O(n)
  • shape이 헷갈리면 assert(a.shape == (1,5)) 함수로 찍어보자.
    • 확인은 자주자주!
  • rank가 1인 배열은 아예 사용하지 말자.
    • shape이 (4,)처럼 (n,) 꼴인 배열.
    • 행 벡터도, 열 벡터도 아님. ⇒ 직관적이지 않은 결과가 나올 수 있음.

0개의 댓글