[부스트캠프 AI tech Pytorch Basic] week02 (2022.01.24)

redgreen·2022년 1월 24일
0

01 Introduction to PyTorch

강의 소개

이번 강의에선 딥러닝 프레임워크의 종류와 PyTorch의 기본적인 작동 구조에 대해 학습합니다.
우리는 딥러닝의 모든 수식과 연산을 직접 개발하기에는 어려움이 있어 이를 손쉽게 개발할 수 있도록 제공되는 딥러닝 프레임워크를 사용합니다.
PyTorch는 TensorFlow와 함께 가장 대표적인 딥러닝 프레임워크로 대부분의 연구에서 사용되고 있습니다.

  • computational graph

tensorflow:

cs231n_2017_lecture8

  • Static graph / Define and run
  • 그래프를 먼저 정의(코드) -> 실행시점에 데이터 feed
  • Prouction / Cloud / Multi GPU 이용 편리
  • scalability(확장성)

pytorch:

cs231n_2017_lecture8

  • Dynamic computation graph(DCG)
  • 실행시점에서 그래프를 정의
  • 중간중간 확인할 수 있음
  • 개발과정 디버깅이 쉬움(논문작성 유리)
  • Define by run(즉시 확인가능)
  • GPU support, Good API and community
  • 사용하기 편함
  • numpy 구조를 가지는 tensor 객체로 array 표현

02 PyTorch Basics(Colab)

강의 소개

이번 강의에선 PyTorch에서 데이터들의 연산을 위한 Tensor 사용법 및 자동 미분 기능인 AutoGrad에 대해 학습합니다. Tensor를 학습하여 추후 Custom Network를 작성할 수 있는 기본 지식을 익히고, AutoGrad의 작동 원리를 배워 backward 함수가 학습 시 어떻게 내부적으로 동작되는지 확인합니다

pytorch operations

  • view : reshape과 동일하게 tensor의 shape을 변환
  • squeeze: 차원의 개수가 1인 차원을 삭제(압축)
  • unsqueeze: 차원의 개수가 1인 차원을 추가
  • fill_: 채우기

view

  • t() 사용시에는 contiguous().view()를 사용해야 오류가 안남.

reshape

reshape() == contiguous().view()

  • 형태 보장이 안되면 값을 copy함.
  • t()없이 reshape()시에는 동일결과
  • 둘 다 shape은 달라져도 메모리주소는 공유함

행렬연산

mm(): 행렬연산 지원 + brodcasting 미지원
matmul(): 행렬연산 지원 + brodcasting, 사용시주의
dot(): 내적을 구할 때, 행렬연산x, 벡터연산o

Functions

import torch
import torch.nn.functional as F
tensor = torch.FloatTensor([0.5, 0.7, 0.1])
h_tensor = F.softmax(tensor, dim=0)
h_tensor

Autograd

  • 미분대상이 되는 변수는 requires_grad=True로 지정
w = torch.tensor(2.0, requires_grad=True)
y = w**2
z = 10*y + 50
z.backward()
w.grad
return
tensor(40.)

a = torch.tensor([2., 3.], requires_grad=True)
b = torch.tensor([6., 4.], requires_grad=True)
Q = 3*a**3 - b**2
external_grad = torch.tensor([1., 1.])
Q.backward(gradient=external_grad)
print(a.grad, b.grad)
# tensor([36., 81.]) tensor([-12.,  -8.])

03 PyTorch 프로젝트 구조 이해하기(colab)

추천템플릿-github

강의 소개

이번 강의에선 Jupyter 노트북을 사용하는 것을 넘어서기 위해 PyTorch 학습 프로젝트 구성에 대해 학습합니다. OOP와 모듈의 개념을 통해 프로젝트를 구성하는 방법과 PyTorch에서 구성되는 모듈들을 함께 살펴봅니다.
기본적인 PyTorch 사용법과 함께 VSCode와 SSH로 연결해서 Colab을사용하는 방법등 딥러닝 학습을 위해 환경을 구축하는 방법도 다룹니다.

코랩에서 local VS code에 ssh연결하기

colab에 템플릿 clone
!git clone https://github.com/victoresque/pytorch-template
현재 디렉토리 변경
%cd /content/pytorch-template
프로젝트 생성
!python new_project.py MNIST-example
!pip install colab-ssh
# 컴퓨터 외부에서 ssh로 접속할 수 있는 프로그램 설치
from colab_ssh import launch_ssh
launch_ssh(NGROK_TOKEN, PASSWORD)
# https://dashboard.ngrok.com/get-started/setup에서 토큰 확인, 비밀번호는 알아서

return

VS code에서

  • ctrl+shift+P에서 Remote-SSH:Add New SSH Host 선택
  • root@HostName -p Port 입력
  • ctrl+shift+P에서 Remote-SSH:Connect to Host선택
  • Linux - continue선택 - password 입력
  • New Terminal 눌러서 사용(처음에 cd ../content로 이동)

google drive로 폴더 복사

  • cd drive/MyDrive/workspace
  • cp -r /content/pytorch-template ./
    - cp -r (기존위치) (이동위치)

open folder로 디렉토리 추가도 가능.

profile
인공지능 꿈나무

0개의 댓글