PyTorch에서 동일한 입력(input)에 대해 매번 결과(output)가 다르게 나올 때 해결 방법
기타2021. 3. 16. 07:30
728x90
반응형
동일한 입력에 대하여 매번 모델이 다른 결과를 뱉는다면, 아래의 유형에 해당되는지 체크한다.
유형 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() 모드를 사용하는 방식으로 랜덤성을 제거할 수 있다.
728x90
반응형
'기타' 카테고리의 다른 글
부동산 대지지분 계산 방법 (등기부 등본을 이용하는 방법) (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 |