강의 소개
이번 강의에선 딥러닝 프레임워크의 종류와 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 표현
강의 소개
이번 강의에선 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.])
강의 소개
이번 강의에선 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로 디렉토리 추가도 가능.