더북(TheBook)

모델 학습에 대한 함수를 생성합니다.

코드 13-5 모델 학습 함수 생성

def train_epoch(encoder, decoder, device, dataloader, loss_fn, optimizer, noise_factor=0.3):
    encoder.train() ------ 인코더 훈련
    decoder.train() ------ 디코더 훈련
    train_loss = []
    for image_batch, _ in dataloader: ------ 훈련 데이터셋을 이용하여 모델 학습(비지도 학습으로 레이블은 필요하지 않습니다)
        image_noisy = add_noise(image_batch, noise_factor)
        image_noisy = image_noisy.to(device) ------ 데이터셋이 CPU/GPU 장치를 사용하도록 지정
        encoded_data = encoder(image_noisy) ------ 노이즈 데이터를 인코더의 입력으로 사용
        decoded_data = decoder(encoded_data) ------ 인코더 출력을 디코더의 입력으로 사용
        loss = loss_fn(decoded_data, image_noisy)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
        train_loss.append(loss.detach().cpu().numpy())
    return np.mean(train_loss)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.