'model.eval()' vs 'with torch.no_grad()'

model.eval()

Untitled

해당 모델 ( nn.Module을 상속한 클래스 )가 evaluation mode가 되도록 해준다.

이는 gradient 전파가 안되고 그런 개념이 아니고

학습할 때만 사용하는 개념인 Dropout이나 Batchnorm 등을 비활성화시킨다는 말이다.

self.train(False)와 동일하다고 한다

torch.no_grad()

with torch.no_grad():
	model.eval()
	for epoch in range(epochs):
		...

대충 이런식으로 많이 쓴다

pytorch의 autograd engine을 비활성화 시킨다.