参考:
https://oldpan.me/archives/how-to-calculate-gpu-memory
https://oldpan.me/archives/how-to-use-memory-pytorch
https://oldpan.me/archives/pytorch-gpu-memory-usage-track
https://github.com/Oldpan/Pytorch-Memory-Utils

其他可能的踩坑点1

应该先把checkpoint加载到内存,再送显存
存储方面,能在 device=’cpu’ 上面做的事情,就别在 device=’cuda’上面做

  1. model = Network()
  2. model.load_state_dict(torch.load('xxxx.pth.tar', map_location='cpu' ))
  3. model.cuda()

其他可能的踩坑点2

主动释放显存里的缓存

  1. torch.cuda.empty_cache()

可能的踩坑点3

不要忘记使用no_grad

可能的踩坑点4

inplace替换:
我们都知道激活函数Relu()有一个默认参数inplace,默认设置为False,当设置为True时,我们在通过relu()计算时的得到的新值不会占用新的空间而是直接覆盖原来的值,这也就是为什么当inplace参数设置为True时可以节省一部分内存的缘故。