Я обучаю полностью сверточную сеть (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: недостаточно памяти