model.eval,torch.no_grad,以及torch.cuda.empty_cache

  • with torch.no_grad()则主要是用于停止autograd模块的工作,以起到加速和节省显存的作用。它的作用是将该with语句包裹起来的部分停止梯度的更新,从而节省了GPU算力和显存,但是并不会影响dropout和BN层的行为
  • eval()的作用是不启用 Batch Normalization 和 Dropout,并且不会保存中间变量、计算图。
  • torch.cuda.empty_cache用于释放没有被释放的多余的显存,比如,当你把某一个模型的输出定义为一个类的属性的时候,eg:self.pred = torch.argmax(model(inputs)),这个似乎后self.pred就不会主动释放,需要用这个命令来手动释放

另外注意!!!!,test过程中,必须设置model.eval(),其他两个可选。 

你可能感兴趣的:(python,深度学习,人工智能)