4강. AutoGrad & Optimizer
- torch.nn.Module: 딥러닝을 구성하는 Layer의 base class으로 input, output, forward, backward를 정의함, 학습의 대상이 되는 parameter(tensor)를 정의한다.
- nn.Parameter: 학습의 대상이 되는 weight를 정의한다.
- Tensor객체의 상속 객체
- nn.Module 내에서 attribute가 될 때는 required_grad = True로 설정해 학습의 대상의 되는 Tensor
- 대부분의 layer에서는 weights 값들이 지정되어 있어 직접 지정할 일은 별로 없음
- Backward
- 실제 backward는 Module단계에서 직접 지정 가능
- Module에서 backward와 optimizer 오버라이딩
5강. Dataset & DataLoader
데이터셋에 전처리를 수행한 후에 Tensor로 변환한다.
Dataset
- Dataset 클래스: 데이터 입력 형태를 정의하는 클래스, 데이터를 입력하는 방식을 표준화 함, image/text/audio에 따라 다른게 정의된다.
- init() : 초기 데이터 생성 방법을 지정
- len() : 데이터의 전체 길이
- getitem() : map-style로 index 값이 주어졌을 때 반환되는 데이터의 형태(X, y)
- Dataset 클래스 생성 시 유의점
- 데이터 형태에 따라 함수를 다르게 정의
- 데이터 생성 시점에 모든걸 처리할 필요는 없음, image의 Tensor 변화는 학습에 필요한 시점에 변환(transform 함수 사용)
- 최근에는 HuggingFace 등 표준화된 라이브러리 사용
DataLoader
-
DataLoader: 데이터를 모델에 어떻게 feeding할지, Data의 배치를 생성하는 클래스
- 학습 직전 데이터의 변환을 책임
- Tensor로 변환 + 배치 처리가 주된 업무/기능
- 데이터 전처리 코드는 병렬적으로 작성해야 함
-
MNIST 데이터셋 직접 다운받고 dataloader 등 사용하기: pytorch datasets & dataloader tutorial
6강. 모델 불러오기
- model.save(): 학습의 결과를 저장하는 함수로 architecture와 parameter를 저장한다.
- checkpoints: 학습의 중간 결과를 저장해 최선의 결과를 선택, 일반적으로 epoch, loss, metric을 함께 저장한다.
- Transfer Learning: 다른 데이터셋으로 만든 모델을 현재 데이터에 적용, 대용량 데이터셋으로 만들어진 모델의 성능이 좋음, backbone architecture가 잘 학습된 모델에서 일부분만 변경해 학습을 수행한다.
- NLP는 huggingface가 표준으로 사용된다.
1. tensorboard
- 텐서플로우의 프로젝트로 만들어진 시각화 도구로 학습 그래프, metric, 학습 결과의 시각화를 지원한다. PyTorch에도 연결 가능하다.
- scalar: metric 등 상수 값의 epoch을 표시
- graph: 모델의 computational graph 표시
- histogram: weight 등 값의 분포를 표현
- image: 예측 값과 실제 값을 비교 표시
- mesh: 3D 형태의 데이터를 표현하는 도구
2. weight & biases
- 머신러닝 실험을 원활히 지원하기 위한 상용 도구(MLOps의 대표적인 툴)
- 협업, code versioning, 실험 결과 기록 등을 제공