① 생성자에서 새로운 이미지 데이터(텐서)를 생성하기 위해서는 노이즈 데이터가 필요합니다. 노이즈 데이터는 torch.randn()을 이용해서 생성할 수 있으며, 여기에서 사용되는 파라미터는 다음과 같습니다. d
ⓐ 생성자에서 가짜 이미지를 생성하기 위해서는 생성자에 노이즈 데이터(벡터)를 제공해야 합니다. 노이즈 데이터는 잠재 벡터(nz)의 크기와 동일해야 하며, 평균이 0이고 표준편차가 1인 가우시안 정규분포를 이용하여 (b_size×nz) 크기를 갖도록 합니다.
ⓑ 모델이 데이터를 처리하려면 모델과 데이터 모두 동일한 장치(CPU 혹은 GPU)를 사용해야 합니다. 여기에서는 to(device)를 이용하여 모델이 사용할 장치를 지정합니다.
ⓒ detach()는 Ctrl+X와 같은 기능을 합니다. 즉, detach()를 통해 떼어 낸 데이터를 이용하여 ①′처럼 판별자를 학습시키고 그 결과를 loss_d에 붙여 넣습니다(Ctrl+V).
다음은 모델을 학습시킨 결과입니다.
Epoch 0 of 200 Generator loss: 1.28965569, Discriminator loss: 0.94043517 Epoch 1 of 200 Generator loss: 2.55902362, Discriminator loss: 1.09625375 Epoch 2 of 200 Generator loss: 6.74595404, Discriminator loss: 0.20054729 Epoch 3 of 200 Generator loss: 1.58426058, Discriminator loss: 1.02565455 Epoch 4 of 200 Generator loss: 2.40962863, Discriminator loss: 1.11043680 Epoch 5 of 200 Generator loss: 4.19420624, Discriminator loss: 0.73168665 ... 중간 생략 ... Epoch 194 of 200 Generator loss: 1.26986551, Discriminator loss: 1.09756744 Epoch 195 of 200 Generator loss: 1.28353238, Discriminator loss: 1.06755567 Epoch 196 of 200 Generator loss: 1.26950192, Discriminator loss: 1.08437514 Epoch 197 of 200 Generator loss: 1.23257947, Discriminator loss: 1.10518491 Epoch 198 of 200 Generator loss: 1.28899515, Discriminator loss: 1.08550680 Epoch 199 of 200 Generator loss: 1.31970513, Discriminator loss: 1.07432187