Pytorch RuntimeError:CUDA错误:内存不足时丢失。backward(),使用CPU时没有错误

时间:2018-11-27 07:14:41

标签: out-of-memory pytorch

我正在训练全卷积网络(FCN32),以便在具有超过11G内存的Tesla K80上进行语义分割。

输入图像非常大:352x1216。网络结构如下所示。我使用了 batch_size = 1 ,但仍然遇到 out_of_memory错误。

条件为nn.BCEWithLogitsLoss()

当我在CPU上运行时,网络工作正常。


    Layer (type)               Output Shape       #  Param 
        Conv2d-1        [-1, 64, 352, 1216]           1,792
        Conv2d-2        [-1, 64, 352, 1216]          36,928
     MaxPool2d-3         [-1, 64, 176, 608]               0
        Conv2d-4        [-1, 128, 176, 608]          73,856
        Conv2d-5        [-1, 128, 176, 608]         147,584
     MaxPool2d-6         [-1, 128, 88, 304]               0
        Conv2d-7         [-1, 256, 88, 304]         295,168
        Conv2d-8         [-1, 256, 88, 304]         590,080
        Conv2d-9         [-1, 256, 88, 304]         590,080
    MaxPool2d-10         [-1, 256, 44, 152]               0
       Conv2d-11         [-1, 512, 44, 152]       1,180,160
       Conv2d-12         [-1, 512, 44, 152]       2,359,808
       Conv2d-13         [-1, 512, 44, 152]       2,359,808
    MaxPool2d-14          [-1, 512, 22, 76]               0
       Conv2d-15          [-1, 512, 22, 76]       2,359,808
       Conv2d-16          [-1, 512, 22, 76]       2,359,808
       Conv2d-17          [-1, 512, 22, 76]       2,359,808
    MaxPool2d-18          [-1, 512, 11, 38]               0
       Conv2d-19         [-1, 4096, 11, 38]     102,764,544
       Conv2d-20         [-1, 4096, 11, 38]      16,781,312
       Conv2d-21          [-1, 1, 11, 38]           4,097  ConvTranspose2d-22         [-1, 1, 352, 1216]             4,096

错误消息:

  

-------------------------------------------------- ---------------------------- RuntimeError Traceback(最近一次调用   最后)在()        36打印(丢失)        37#torch.cuda.empty_cache()   ---> 38 loss.backward()        39 Optimizer.step()        40

     

/anaconda/envs/py35/lib/python3.5/site-packages/torch/tensor.py在   向后(自我,渐变,retain_graph,create_graph)        91个产品。默认为False。        92“”“   ---> 93 torch.autograd.backward(自己,渐变,retain_graph,create_graph)        94        95 def register_hook(self,hook):

     

/anaconda/envs/py35/lib/python3.5/site-packages/torch/autograd/ init .py   向后(张量,grad_tensors,retain_graph,create_graph,   grad_variables)        第88章        89张量,grad_tensors,retain_graph,create_graph,   ---> 90 allow_unreachable = True)#allow_unreachable标志        91        92

     

RuntimeError:CUDA错误:内存不足

2 个答案:

答案 0 :(得分:0)

我发现了原因...与硬件有关。我换了另一台机器,错误消失了。

答案 1 :(得分:0)

通常是由于 GPU上的内存而导致的。如果您拥有更强大的GPU,则可以解决您的问题(如您在回答中所述)。
但是如果没有,您可以缩小图像256*x大小。 这也是性能的好习惯。