Discriminator
생성기가 정의되었으니, 다음 단계는 GAN의 Discriminator를 만드는 일이에요. Discriminator는 생성기의 출력을 입력으로 받아, 그 입력이 생성된 것인지 실제인지를 이진 분류로 예측해요.
torch.nn은 이미 nn으로 임포트되어 있어요. 또한, 선형 레이어에 이어서 LeakyReLU 활성화를 적용한 블록을 반환하는 커스텀 disc_block() 함수도 사용할 수 있어요. Discriminator를 구성하는 기본 블록으로 활용할 거예요.
def disc_block(in_dim, out_dim):
return nn.Sequential(
nn.Linear(in_dim, out_dim),
nn.LeakyReLU(0.2)
)
이 연습은 강의의 일부입니다
PyTorch로 배우는 이미지 딥러닝
연습 안내
- 알맞은 입력 크기와
256의 출력을 갖도록 마지막 Discriminator 블록을 모델에 추가하세요. - 마지막 Discriminator 블록 뒤에, 출력을 크기
1로 매핑하는 선형 레이어를 추가하세요. __init__()에서 정의한 순차 블록을 통해 입력 이미지를 전달하도록forward()메서드를 정의하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
class Discriminator(nn.Module):
def __init__(self, im_dim):
super(Discriminator, self).__init__()
self.disc = nn.Sequential(
disc_block(im_dim, 1024),
disc_block(1024, 512),
# Define last discriminator block
____,
# Add a linear layer
____,
)
def forward(self, x):
# Define the forward method
____