더북(TheBook)

이제 모델을 검증(테스트)하기 위한 함수를 생성합니다.

코드 13-6 모델 테스트 함수 생성

def test_epoch(encoder, decoder, device, dataloader, loss_fn, noise_factor=0.3):
    # Set evaluation mode for encoder and decoder
    encoder.eval() ------ 인코더 테스트
    decoder.eval() ------ 디코더 테스트
    with torch.no_grad():
        conc_out = [] ------ 각 배치에 대한 출력을 저장하기 위해 리스트 형식의 변수 정의
        conc_label = []
        for image_batch, _ in dataloader:
            image_batch = image_batch.to(device)
            encoded_data = encoder(image_batch)
            decoded_data = decoder(encoded_data)
            conc_out.append(decoded_data.cpu())
            conc_label.append(image_batch.cpu())
        conc_out = torch.cat(conc_out) ------ 리스트 형식으로 저장된 모든 값을 하나의 텐서로 생성
        conc_label = torch.cat(conc_label)
        val_loss = loss_fn(conc_out, conc_label) ------ 손실 함수를 이용하여 오차 계산
    return val_loss.data

입력 데이터셋에 추가할 노이즈를 생성하기 위한 함수를 정의합니다.

코드 13-7 노이즈 데이터 생성

def add_noise(inputs, noise_factor=0.3):
    noisy = inputs + torch.randn_like(inputs) * noise_factor ------ ①
    noisy = torch.clip(noisy, 0., 1.) ------ ②
    return noisy
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.