Boostcamper's TIL (9)

최현진·2021년 8월 18일
0

boostcamp

목록 보기
10/20

2021/08/18

학습한 내용

PyTorch

-PyTorch basic

Tensor

  • PyTorch의 자료구조, ndarray와 거의 동일함 따라서 data 타입 또한 numpy와 동일
  • numpy의 operations 대부분 적용 (ones_like(), flatten(), ...)
  • PyTorch의 tensor는 GPU에 할당 가능함
  • view, squeeze, unsqueeze로 tensor 모양 조정 (view, reshape 차이 )
  • +, - 연산 사용 가능, 행렬곱셈은 .mm() 사용 (.matmul(), .mm() 차이 )

torch.nn.functional

  • ML/DL에 필요한 다양한 operation 제공

AutoGrad

  • PyTorch의 핵심으로 자동 미분을 지원해 backward(역전파) 함수에서 사용

-PyTorch 프로젝트 구조

ML/DL 코드를 평생 Jupyter에서 구현하는 것은 불가능. (유지보수, 배포, 공유 단계에서 문제발생) 초기 단계에서는 유리함.

PyTorch Template를 통해 기본적인 구조 연습

-AutoGrad

torch.nn.Module

  • 딥러닝을 구성하는 base class
  • input, output, forward, backward를 정의하고 AutoGrad로 자동 미분 기능을 이용해서 학습의 대상이 되는 Parameter 학습

torch.nn.Parameter

  • nn.Module 내에서 AutoGrad의 대상이 되어 학습이 되는 Tensor.
  • layer들은 대부분 weights 값들이 지정되어 있기 때문에 직접 구현해야 하는 경우는 적음
import torch
import torch.nn as nn

class Model(nn.Module):
	def __init__(self):
    		...
            	self.weights = nn.Parameter(...) # 학습 대상이 되는 parameter

Backward

  • AutoGrad시 호출되는 함수로 Layer에 있는 Parameter들의 미분을 수행한다.
  • loss function에 대해 미분을 수행하고 해당 값으로 Parameter 값들을 업데이트한다.

-Dataset, DataLoader

torch.utils.Dataset

  • 데이터(image, text, ...)에 따라 입력 형태를 정의함
  • __init__: 데이터 생성 방법 정의
  • __len__: 데이터 전체 길이 반환
  • __getItem__: index 값이 주어지고 해당 index에 해당하는 데이터 x, y 반환 (DataLoader에서 호출해서 사용)
  • 데이터 생성 시점에서 처리할 필요 없음, 학습에 필요한 시점에 변환함

DataLoader

  • 데이터의 batch를 생성
  • 학습 직전에 데이터를 Tensor로 변환, batch 처리
  • GPU에 feed 할 때 병력적인 데이터 전처리 필요

Data Viz

-Text

시각적 표현들의 부족한 설명을 추가하거나 오해를 방지할 수 있다.

Text Properties

  • Title suptitle(), set_title()
  • Label
  • Tick Label set_xlabel(), set_ylabel()
  • Legend legend()
  • Annotation text()

-Color

시각화에서 가장 큰 부분을 차지하는 부분. 시각화에서 가장 중요한 부분 중 하나는 매력적인 요소도 중요함. 무조건 화려한것 보다는 전달하고 싶은 내용을 색을 사용해 적절하게 전달했느냐가 중요

Color Palette
적절한 색을 사용해야함

  • Categorical(범주형): 이산적인 값에 적합
  • Sequential(연속형): 같은 값이지만 다른 가중치 (github 잔디)
  • Diverge(발산형): 끝으로 갈수록 색이 진해지거나 밝아짐 (ex, 온도)

Reference

https://github.com/PyTorchLightning/deep-learning-project-template
https://github.com/victoresque/pytorch-template

profile
Boostcamper!

0개의 댓글