부스트캠프 2주차

TAEJUN YOUN·2022년 9월 30일
0

과제복습

모듈의 구성

import torch
from torch import nn
class Add(nn.Module):
    def __init__(self.value):
				super().__init__()
				self.value = value

		def forward(self, x):
				return x + self.value

주의할 점! (forward)

forward함수는 nn.Module을 상속받은 클래스로부터 만든 model 객체를 데이터와 함께 호출하면 자동으로 실행이 된다. 예를 들어서 model이라는 이름의 객체를 생성하고, (위의 경우에) model(x)와 같이 객체를 호출하면 자동으로 forward연산이 수행된다.

https://jungeui.tistory.com/26

위의 모듈을 사용하고 싶을때는 아래와 같이 사용하면 된다.

model = Add(value)  <- value는 model의 value로 들어간다.

print(model(x))   <- x는 forward함수의 인자로 들어간다.
# 이런식으로도 가능
Add(value)(x) <- value는 객체 초기화할때 self.value로 들어가고 x는 forward 함수의 인자로 들어감

nn.Sequential

sequential은 순차적인 컨테이너다 모듈들이 이 안에 더해지며 컨테이너 안에서 순서대로 실행된다.

nn.Sequential 작동순서

calculator = nn.Sequential(Add(1),
														Add(2),
														Add(3))

x = 1
output = calculator(x)
## output == 7

# 이렇게도 실행 가능
# nn.Sequential(Add(1), Add(2), Add(3))(1)

calculator(x)는 nn.Sequential(Add(1), Add(2), Add(3))(x)로 볼 수 있다. 실행 과정은 아래와 같(은 걸로 추청..?)한다.

tmp = Add(1)(x)

tmp = Add(2)(tmp)

tmp = Add(3)(tmp)

output = tmp

Dataset의 기본 구성 요소(어제와 반복)

  1. init
  2. len
  3. getitem
class CustomDataset(Dataset):
		def __init__(self):
				# 데이터를 불러오고 data와 target을 넣어준다.
		def __len__(self):
				# 데이터의 길이를 반환해준다.
		def __getitem__(self):
				# data와 target에 인덱스를 먹이고 어떤 형태로 반환할 것인지 정의한다.

# 이미지의 경우 transforms도 정의해줄 수 있다.

DataLoader

https://pytorch.org/docs/stable/data.html

Dataloader는 dataset의 index를 이용해 배치 단위로 데이터를 제공한다.

인자로는 아래와 같이 있다.

DataLoader(dataset, batch_size=1, shuffle=False, sampler=None,
           batch_sampler=None, num_workers=0, collate_fn=None,
           pin_memory=False, drop_last=False, timeout=0,
           worker_init_fn=None, *, prefetch_factor=2,
           persistent_workers=False)
# 참고: https://pytorch.org/docs/stable/data.html

이 중 batch_size나 collate_fn인자는 자주 사용된다고 한다.

  1. dataset: 위에서 만든 dataset으로 생성된 인스턴스를 넣는다.
  2. batch_size: 배치사이즈
  3. shuffle: 데이터를 섞을지 설정한다.
  4. sampler: 데이터의 index를 원하는 방식대로 조정한다. 이 때 shuffle 파라미터는 False여야 한다.
    사용방법:
    https://towardsdatascience.com/pytorch-basics-sampling-samplers-2a0f29f0bf2a 참조
  5. collate_fn: map-style 데이터셋에서 sample list를 batch 단위로 바구기 위해 필요한 기능
    참고: https://deepbaksuvision.github.io/Modu_ObjectDetection/posts/03_01_dataloader.html
    공부 더해야할듯..
  6. pin_memory: True로 하면 Tensor를 CUDA 고정 메모리에 할당한다.
  7. drop_last: 배치단위로 데이터를 가져오면 나머지 몇개의 데이터가 남는다. 나머지 데이터 사용하기 귀찮으면 버리는 옵션이다.
  8. time_out: dataloader가 데이터를 가져오는데 시간을 제한하는 옵션이다.
  9. worker_init_fn: 어떤 worker를 불러올 것인가에대한 옵션이다.

참고: 부스트캠프 AI Tech 4기 Pytorch강의 [최성철 교수님]

profile
Study and Share

0개의 댓글