[PyTorch] model.eval()
μλ―Έ
λ₯λ¬λ λͺ¨λΈμ μ½λλ₯Ό μ΄ν΄λ³΄λ€ 보면 Evaluation λΆλΆμμ κΌ μ΄λ° μ½λκ° λ±μ₯νλ€.
def evaluation(model, criterion, ...):
model.eval()
criterion.eval()
...
λ¬΄μ¨ μλ―ΈμΈμ§ κΆκΈν΄μ μ°Ύμ보λ, nn.Module
μμ train timeκ³Ό eval timeμμ μννλ λ€λ₯Έ μμ
μ μνν μ μλλ‘ switching νλ ν¨μλΌκ³ νλ€. stackoverflow
train timeκ³Ό eval timeμμ λ€λ₯΄κ² λμν΄μΌ νλ λνμ μΈ μλ€μ
Dropout
LayerBatchNorm
Layer
λ±λ±μ΄ μλ€κ³ νλ€.
.eval()
ν¨μλ evaluation κ³Όμ μμ μ¬μ©νμ§ μμμΌ νλ layerλ€μ μμμ off μν€λλ‘ νλ ν¨μμΈ μ
μ΄λ€.
evaluation/validation κ³Όμ μμ λ³΄ν΅ model.eval()
κ³Ό torch.no_grad()
λ₯Ό ν¨κ» μ¬μ©νλ€κ³ νλ€.
# evaluate model:
model.eval()
with torch.no_grad():
...
out_data = model(data)
...
eval/val μμ
μ΄ λλ νμλ μμ§λ§κ³ train modeλ‘ λͺ¨λΈμ λ³κ²½ν΄μ€μΌ νλ€. μ΄κ²μ .train()
ν¨μλ₯Ό μ€νμν€λ©΄ λλ€.
# after eval/val, and in training step
model.train()
PyTorch 곡μ λ¬Έμμμ .eval()
μ λν μμΈν λ΄μ©μ νμΈν μ μλ€. nn.Module.eval()