我想使用Keras在2 Gb GPU上推断2D图像的3584x2796大小。可能吗?网络体系结构是一个Unet。
在推断过程中,总是会出现内存不足错误。即使是卷积,仅对于第一层也会失败。看来Keras并未针对大型图像卷积进行优化。在2 Gb GPU上进行推理时,即使是下面的网络也会失败。
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.
答案 0 :(得分:0)
输入的图像很大。
即使11GB的Video Ram(例如GTX 1080 Ti)也不足以处理这种大小。
2GB GPU确实不足以进行深度学习,尤其是对于计算机视觉而言。
首先,请使用至少具有4GB VRAM的GPU。 6GB的VRAM是一个很好的起点,8GB的VRAM将更合适。
第二,尝试将初始图像尺寸(3584x2796)减小为(448x350)。实际上,您将高度和宽度都除以8。
这与Keras优化无关,而与GPU的内存大小和输入图像的巨大大小有关。