Pytorch RuntimeError: ошибка CUDA: недостаточно памяти при loss.backward (), ошибки при использовании процессора - PullRequest
0 голосов
/ 27 ноября 2018

Я обучаю полностью сверточную сеть (FCN32) семантической сегментации на Tesla K80 с объемом памяти более 11 ГБ.

Входное изображение довольно большое: 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 print (потеря) 37 #torch.cuda.empty_cache () ---> 38 loss.backward () 39 optimizer.step () 40

/ anaconda / envs / py35 / lib / python3.5 / site-packages / torch / тензор.py в обратном направлении (self, градиент, retain_graph, create_graph) 91 товаров.По умолчанию False.92 "" "---> 93 torch.autograd.backward (self, градиент, 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 Variable._execution_engine.run_backward (89 тензоров, grad_tensors, retain_graph, create_graph, --> 90 allow_unreachable = True) # allow_unreachable флаг 91 92

RuntimeError: ошибка CUDA: недостаточно памяти

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Обычно это происходит из-за памяти на вашем GPU .Если у вас есть более мощные графические процессоры, ваша проблема может быть решена (как вы упомянули в своем ответе).
Но если у вас ее нет, вы можете уменьшить ваши изображения до размеров 256*x.Это также хорошая практика для производительности ради.

0 голосов
/ 01 декабря 2018

Я выяснил причину ... Это связано с аппаратным обеспечением.Я перешел на другую машину, и ошибка исчезла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...