Generator
GAN의 generator는 무작위 노이즈 벡터를 입력으로 받아 생성된 이미지를 출력해요. 아키텍처를 재사용하기 쉽게 만들기 위해, 모델에 입력과 출력의 형태를 매개변수로 전달하겠습니다. 이렇게 하면 입력 노이즈 크기나 이미지 모양이 달라져도 같은 모델을 사용할 수 있어요.
이미 torch.nn이 nn으로 임포트되어 있어요. 또한 선형층, 배치 정규화, ReLU 활성화를 묶어 반환하는 커스텀 gen_block() 함수도 사용할 수 있어요. 이 블록을 generator의 빌딩 블록으로 사용합니다.
def gen_block(in_dim, out_dim):
return nn.Sequential(
nn.Linear(in_dim, out_dim),
nn.BatchNorm1d(out_dim),
nn.ReLU(inplace=True)
)
이 연습은 강의의 일부입니다
PyTorch로 배우는 이미지 딥러닝
연습 안내
self.generator를 순차 모델로 정의하세요.- 마지막
gen_block다음에, 입력 크기를 알맞게 설정하고 출력 크기가out_dim이 되도록 선형층을 추가하세요. - 선형층 뒤에 시그모이드 활성화를 추가하세요.
forward()메서드에서 입력을self.generator에 통과시키세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
class Generator(nn.Module):
def __init__(self, in_dim, out_dim):
super(Generator, self).__init__()
# Define generator block
self.generator = ____(
gen_block(in_dim, 256),
gen_block(256, 512),
gen_block(512, 1024),
# Add linear layer
____
# Add activation
____
)
def forward(self, x):
# Pass input through generator
return ____