[부스트캠프 AI-Tech] 2주차 Day 1

LKM·2022년 2월 16일
0

✏️학습 정리


1. Introduction to Pytorch

  • ML 라이브러리

    • Pytorch (facebook): Dynamic Computation Graph(DCG)
      • 실행을 하면서 그래프를 생성하는 방식
    • TensorFlow (Google): Define and run
      • 그래프를 먼저 정의 → 실행시점에 데이터 feed
  • Why Pytorch

    • DCG의 장점 → 즉시 확인 가능(pythonic code)
    • GPU support, Good API and community
    • 사용하기 편한 장점이 가장 큼
  • Pytorch

    • Numpy 구조를 가지는 Tensor 객체로 array 표현
    • 자동미분을 지원하여 DL 연산을 지원
    • 다양한 형태의 DL을 지원하는 함수와 모델을 지워



2. Pytorch Basics

  • Tensor
    • 다차원 Arrays를 표현하는 Pytorch 클래스

    • 사실상 numpy의 ndarray와 동일 (TensorFlow의 Tensor와도 동일)

      • 가질 수 있는 data 타입 동일
      • operation 동일 (indexing, slicing, flatten, ones_like, shape....)
    • Tensor를 생성하는 함수도 거의 동일

      import torch
      import numpy as np
      
      n_array = np.arrange(10).reshape(2,5)
      test_tensor = torch.FloatTensor(n_array)
      
      data = [[3, 5], [10, 5]]
      x_data = torch.tensor(data)
      
      ## tip ##
      x.data = x.data.to('cuda')  # tensor는 GPU에 올려서 사용가능
  • Tensor handling and operation

    • view: reshape과 동일하게 tensor의 shape을 변환

      • view로 생성한 새 tensor는 항상 데이터를 원래 tensor와 공유
    • squeeze: 차원의 개수가 1인 차원을 삭제 (압축)

    • unsqueeze: 차원의 개수가 1인 차원을 추가

    • 행렬곱셈 연산은 dot이 아닌 mm, matmul 사용

      • matmul은 broadcasting 지원
    • nn.functional 모듈: 다양한 수식 변환을 지원 (one_hot....)

  • AutoGrad

    • Pytorch의 핵심은 자동 미분의 지원 (backward 함수 사용)



3. Pytorch 프로젝트 구조

  • Pytorch 프로젝트 Template

    • 초기 단계에서는 대화식 개발 과정이 유리(jupyter notebook)
      • 학습과정과 디버깅 등 지속적인 확인
    • 배포 및 공유 단계에서는 notebook 공유의 어려움
      • 쉬운 재현의 어려움, 실행순서 꼬임
    • DL 코드도 하나의 프로그램
      • 개발 용이성 확보와 유지보수 항상 필요
  • Module 구성

profile
함께 자라기

0개의 댓글