pytorch 는 테스트 할 때 dropout 를 사용 합 니 다.
pytorch 에서 네트워크 는 train 과 eval 두 가지 모드 가 있 습 니 다.train 모드 에서 dropout 와 batch normalization 이 유효 합 니 다.val 모드 에서 dropout 는 유효 하지 않 습 니 다.bn 고정 매개 변수 입 니 다.
테스트 할 때 dropout 를 사용 하려 면 dropout 를 train 모드 로 따로 설정 할 수 있 습 니 다.여 기 는 apply 함 수 를 사용 할 수 있 습 니 다.
def apply_dropout(m):
if type(m) == nn.Dropout:
m.train()
다음은 전체 데모 코드 입 니 다.
# coding: utf-8
import torch
import torch.nn as nn
import numpy as np
class SimpleNet(nn.Module):
def __init__(self):
super(SimpleNet, self).__init__()
self.fc = nn.Linear(8, 8)
self.dropout = nn.Dropout(0.5)
def forward(self, x):
x = self.fc(x)
x = self.dropout(x)
return x
net = SimpleNet()
x = torch.FloatTensor([1]*8)
net.train()
y = net(x)
print('train mode result: ', y)
net.eval()
y = net(x)
print('eval mode result: ', y)
net.eval()
y = net(x)
print('eval2 mode result: ', y)
def apply_dropout(m):
if type(m) == nn.Dropout:
m.train()
net.eval()
net.apply(apply_dropout)
y = net(x)
print('apply eval result:', y)
실행 결과:eval 모드 에서 dropout 가 적용 되 지 않 아 매번 달 리 는 결과 가 다 르 기 때문에 apply 함 수 를 이용 하여 Dropout 를 단독으로 train 모드 로 설정 하면 dropout 가 적 용 됩 니 다.
보충:Pytorch 의 dropout 의합 테스트 피하 기
데 이 터 를 작성 하 다
2.신경 망 구축
훈련
4.테스트 결과 비교
주의:테스트 과정 중 모드 전환 에 주의해 야 합 니 다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정확도에서 스케일링의 영향데이터셋 스케일링은 데이터 전처리의 주요 단계 중 하나이며, 데이터 변수의 범위를 줄이기 위해 수행됩니다. 이미지와 관련하여 가능한 최소-최대 값 범위는 항상 0-255이며, 이는 255가 최대값임을 의미합니다. 따...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.