일반적으로 테스트 환경이 아닌 실제 메인 모델을 학습 할 때에는 다중 GPU를 이용하여 학습하는 경우가 많다
이럴 경우 보통 pytorch에서 지원하는 nn.DataParallel ([Pytorch] Multi GPU를 활용 해 보자) 을 이용한다
이렇게 잘 학습을 하고 inference를 위해 모델을 load 할 때 map_location을 이용하여 single GPU를 지정했다
( [Pytorch] torch.load 에서 학습시와 환경이 달라서 못읽을 경우 )
이러면 동일하게 읽을 수 있을 줄 알았는데 "layer.0.weight, layer.1.weight, ... " 이런 형태의 key값을 찾지 못한다며 에러를 발생시켰다.
이럴 경우에는 저장 단계에서
torch.save(net.state_dict(), savePath)
를 사용하지 말고 대신에
torch.save(net.module.state_dict(), savePath)
와 같이 .module을 붙여서 저장하면 일반적으로 사용하듯이 model 을 load 할 수 있다.
'전공관련 > Deep Learning' 카테고리의 다른 글
[Pytorch] multiGPU 에서 학습한 모델을 singleGPU에서 사용하자2 (1) | 2019.12.17 |
---|---|
[Pytorch] pytorch 와 tensorboard를 같이 써보자. (0) | 2019.11.15 |
[Pytorch] tensor의 차원을 바꿔보자 (0) | 2019.03.15 |
[Pytorch] Multi GPU를 활용 해 보자 (2) | 2019.03.15 |
[Pytorch] network 결과물 사용시 주의사항! (0) | 2019.03.13 |