더북(TheBook)

먼저 예측된 이미지를 출력하기 위한 전처리 함수를 생성합니다.

코드 5-28 예측 이미지 출력을 위한 전처리 함수

def im_convert(tensor):
    image = tensor.clone().detach().numpy() ------ ①
    image = image.transpose(1, 2, 0)
    image = image * (np.array((0.5,0.5,0.5)) + np.array((0.5,0.5,0.5)))
    image = image.clip(0, 1) ------ ②
    return image

tensor.clone()은 기존 텐서의 내용을 복사한 텐서를 생성하겠다는 의미이며, detach()는 기존 텐서에서 기울기가 전파되지 않는 텐서입니다. 즉, tensor.clone().detach()는 기존 텐서를 복사한 새로운 텐서를 생성하지만 기울기에 영향을 주지는 않겠다는 의미입니다.

다음은 tensor.clone(), tensor.detach(), tensor.clone().detach()를 비교한 표입니다.

▼ 표 5-2 tensor.clone( ), tensor.detach( ), tensor.clone( ).detach( )의 비교

구분

메모리

계산 그래프 상주 유무

tensor.clone()

새롭게 할당

계산 그래프에 계속 상주

tensor.detach()

공유해서 사용

계산 그래프에 상주하지 않음

tensor.clone().detach()

새롭게 할당

계산 그래프에 상주하지 않음

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.