我正在尝试将适用于pytorch 0.3的Pytorch模型转换为0.4.1。但是,在0.4.1中的训练和评估中似乎都占用了大量内存。
这是代码: https://github.com/multimodallearning/pytorch-mask-rcnn/blob/master/model.py
当我逐步遍历1636行的代码时,内存使用量急剧增加。当我的计算机内存不足时,代码在第1645行崩溃:
[p2_out, p3_out, p4_out, p5_out, p6_out] = self.fpn(molded_images)
# Note that P6 is used in RPN, but not in the classifier heads.
rpn_feature_maps = [p2_out, p3_out, p4_out, p5_out, p6_out]
mrcnn_feature_maps = [p2_out, p3_out, p4_out, p5_out]
对于pytorch 0.4,我已将“ F.upsample()”替换为“ F.interpolate()”,并将volitile = True替换为“ with torch.no_grad()”。有人知道这种内存使用量激增的原因吗?
由于我要遍历的地方需要反向传播,所以我想这与缺少detatch()也无关。
我希望pytorch 0.3和0.4之间的内存使用情况相似。但是在我的情况下,pytorch 0.3中的模型使用了约4GB的ram,而在CPU上调试时,它在版本0.4中使用了> 20gb的ram