Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- pip
- 프로그래머스
- C
- Numpy
- C#
- error
- pandas
- pytorch
- paramiko
- JSON
- mysql
- 핑거스타일
- Selenium
- SSH
- Linux
- 채보
- OpenCV
- Python
- 오류
- ubuntu
- Visual Studio
- C++
- 명령어
- label
- YOLO
- 기타 연주
- LIST
- Docker
- windows forms
- VS Code
Archives
- Today
- Total
기계는 거짓말하지 않는다
Pytorch no_grad, eval 본문
Pytorch에서 model을 선언 후 validation 혹은 test를 진행할 때 model.eval()과 with torch.no_grad():
혹은 함수에 @torch.no_grad를 선언한다. 이 의미는 다음과 같다.
no_grad
Pytorch의 autograd engine을 사용하지 않는다. 신경망 학습을 지원하는 PyTorch의 자동 미분 엔진이다.
이것은 gradient 계산을 하지 않는다는 의미이다. 역전파(backpropagation)를 진행하지 않고 이렇게 함으로써
계산에 대한 메모리 소비를 줄인다. test 시에는 이 과정을 활용하지 않기 때문에 명시한다.
model.eval()
선언한 모델을 평가 모드로 전환한다. training 시에 model.train()을 선언하는 것과 다르다.
inference 동안 다르게 동작하는 모델의 일부 특정 계층/부분에 대한 일종의 스위치라고 할 수 있다.
예를 들면 Dropouts Layers, BatchNorm Layers 등은 모델 평가중에는 작동하지 않아야 하며 자동으로 사용하지 않는다.
training, evaluating 시에 model.train(), model.eval()을 각각 다시 선언해줘야 한다.
evaluating 시에는 model.eval()과 no_grad를 함께 사용한다.
'AI' 카테고리의 다른 글
Pytorch torchvision transforms (0) | 2021.09.05 |
---|---|
Pytorch Dataset, DataLoader (0) | 2021.09.05 |
단층 퍼셉트론(Single-Layer Perceptron) AND, OR, NAND (0) | 2021.08.19 |
Classification 성능평가 (0) | 2021.08.18 |
Pytorch torch 버전, GPU 사용 유무, 이름 확인, device 설정 (0) | 2021.08.18 |
Comments