赞
踩
使用相同的参数进行模型的训练和inference。但居然在inference时出现:
RuntimeError: CUDA out of memory
后来发现可能是由于改变了inference出来的特征之后的计算过程,导致使用了更多的显存来计算梯度。原来计算出特征之后直接去算loss,而在inference时计算出特征之后是一些其他的操作。
之前以为model.eval()
就可以停止计算梯度,但事实上model.eval()
貌似只有禁用BatchNormalization和Dropout的功能。
在代码中加入torch.set_grad_enabled(False)
后显存就够用了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。