Вывод на большое изображение с использованием 2Gb GPU в керасе - PullRequest
0 голосов
/ 24 апреля 2019

Я хочу получить вывод для 2D-изображения размером 3584x2796 на 2 Гб GPU с использованием Keras. Является ли это возможным? сетевая архитектура Unet.

Ошибка нехватки памяти постоянно возникает при выводе. Даже свертка, только для первого слоя не удалась. Кажется, Keras не оптимизирован для больших сверток изображений. Даже приведенная ниже сеть дает сбой во время вывода на GPU 2 Гб.

Layer (type)                 Output Shape              Param #   
=================================================================
input_3 (InputLayer)         (None, 3584, 2796, 1)     0         
_________________________________________________________________
conv2d_4 (Conv2D)            (None, 3584, 2796, 32)     80        
_________________________________________________________________
conv2d_5 (Conv2D)            (None, 3584, 2796, 32)     584       
_________________________________________________________________
instance_normalization_3 (In (None, 3584, 2796, 32)     2         
_________________________________________________________________
activation_3 (Activation)    (None, 3584, 2796, 32)     0         
=================================================================
Total params: 666
Trainable params: 666
Non-trainable params: 0

Я получаю ошибку ниже:

OOM when allocating tensor with shape[1,32,3584,2796] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
     [[{{node conv2d_2/convolution}} = Conv2D[T=DT_FLOAT, data_format="NCHW", dilations=[1, 1, 1, 1], padding="SAME", strides=[1, 1, 1, 1], use_cudnn_on_gpu=true, _device="/job:localhost/replica:0/task:0/device:GPU:0"](conv2d_2/convolution-0-TransposeNHWCToNCHW-LayoutOptimizer, conv2d_2/kernel/read)]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.

     [[{{node activation_2/Relu/_11}} = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device_incarnation=1, tensor_name="edge_47_activation_2/Relu", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.

1 Ответ

0 голосов
/ 24 апреля 2019

Исходное изображение огромно.

Даже 11 ГБ видеопамяти (например, GTX 1080 Ti) недостаточно для обработки такого размера.

2 ГБ GPU действительно недостаточно для глубокого обучения, особенно для компьютерного зрения.

Прежде всего, пожалуйста, используйте графический процессор с как минимум 4 ГБ видеопамяти. Хорошей отправной точкой будет 6 ГБ видеопамяти, 8 ГБ - более подходящей.

Во-вторых, попробуйте уменьшить исходный размер изображения (3584x2796) до (448x350). Практически вы делите и высоту, и ширину на 8.

Речь идет не об оптимизации Keras, а об объеме памяти вашего графического процессора и огромных размерах входного изображения.

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