PyTorch에서 동일한 입력(input)에 대해 매번 결과(output)가 다르게 나올 때 해결 방법
동일한 입력에 대하여 매번 모델이 다른 결과를 뱉는다면, 아래의 유형에 해당되는지 체크한다.
유형 1. torch 설정
기본적인 torch 설정을 바꿔줄 수 있다.
torch.backends.cudnn.deterministic = True
torch.backends.cudnn.benchmark = False
유형 2. 모델의 랜덤성
StyleGAN 등의 모델에서는 랜덤성(randomness)이 포함되어 있다. 이러한 레이어를 identity() 레이어로 치환하는 방법으로 랜덤성을 제거할 수 있다.
class Identity(nn.Module):
def __init__(self):
super(Identity, self).__init__()
def forward(self, x):
return x
유형 3. eval() 모드
ResNet 등의 모델에서는 Batch Normalization을 사용한다. 이러한 레이어에서는 train() 모드와 eval() 모드에서의 파라미터가 다르게 적용된다. 그래서 test time에 항상 eval() 모드를 사용하는 방식으로 랜덤성을 제거할 수 있다.
'기타' 카테고리의 다른 글
부동산 대지지분 계산 방법 (등기부 등본을 이용하는 방법) (0) | 2021.04.10 |
---|---|
4대 보험 가입 내역 확인서 발급 방법 (PDF 파일) (0) | 2021.04.02 |
Python Jupyter Notebook에서 load한 코드가 수정되었을 때, Jupyter에서 자동으로 reload하여 반영하기 (0) | 2021.03.16 |
깃허브(GitHub) Fork한 저장소(repository)를 부모 저장소와 최신화(merge)하는 방법 (싱크 맞추는 방법) (0) | 2021.03.10 |
만 24세 경기도 청년 기본 소득 100만원 신청 방법! (0) | 2021.03.09 |
Python Jupyter Notebook에서 load한 코드가 수정되었을 때, Jupyter에서 자동으로 reload하여 반영하기
Jupyter Notebook에서는 다음과 같이 코드를 불러올 수 있다. 하지만 아래와 같이 불러온 라이브러리의 코드가 수정된다면 어떻게 Jupyter 상에서 반영할 수 있을까? Jupyter Notebook 상에서는 곧바로 반영이 어렵기 때문에 reload()를 수행하여 문제를 해결할 수 있다.
가장 간편한 방법은 다음과 같이 autoreload를 사용하는 것이다. 이렇게 하면 Jupyter상에서 불러오는 코드에 대하여 자동으로 reload를 진행한다.
%load_ext autoreload
%autoreload 2
사용 예시는 다음과 같다.
'기타' 카테고리의 다른 글
4대 보험 가입 내역 확인서 발급 방법 (PDF 파일) (0) | 2021.04.02 |
---|---|
PyTorch에서 동일한 입력(input)에 대해 매번 결과(output)가 다르게 나올 때 해결 방법 (1) | 2021.03.16 |
깃허브(GitHub) Fork한 저장소(repository)를 부모 저장소와 최신화(merge)하는 방법 (싱크 맞추는 방법) (0) | 2021.03.10 |
만 24세 경기도 청년 기본 소득 100만원 신청 방법! (0) | 2021.03.09 |
프린터에서 "삭제 중"이나 "스풀링" 상태에서 계속 멈춰있을 때 강제로 지우는 방법 (0) | 2021.03.07 |