ResourceExhaustedError(请参阅上面的回溯):分配带有shape [1,256,1024,1021]的张量时,OOM

时间:2018-12-12 19:49:07

标签: tensorflow

我从同事那里得到了张量流代码,并试图在DGX-1上运行它。但是,代码会引发异常:

ResourceExhaustedError(请参阅上面的回溯):分配带有shape [1,256,1024,1021]的张量并在/ job:localhost / replica:0 / task:0 / device:GPU:0上通过分配器GPU_0_bfc键​​入float [[{{node Optimizer / gradients / Decoder / Decoder / LeakyRelu_9_grad / Select_1}} =选择[T = DT_FLOAT,_device =“ / job:localhost /副本:0 / task:0 / device:GPU:0”]] / gradients / Decoder / Decoder / LeakyRelu_9_grad / GreaterEqual,Optimizer / Gradients / Decoder / Decoder / LeakyRelu_9_grad / zeros,Optimizer / gradients / Decoder / Decoder / conv2d_5 / Conv2D_grad / Conv2DBackpropInput)]] 提示:如果要在发生OOM时查看分配的张量的列表,请将report_tensor_allocations_upon_oom添加到RunOptions中以获取当前分配信息。

以下几点要注意:

Batch is already set to 1.
Every time, exception is raised on different epoch number.
I have tried following settings (not working):
config.gpu_options.allocator_type ='BFC'
config.gpu_options.per_process_gpu_memory_fraction = 0.90

任何帮助将不胜感激。

谢谢

2 个答案:

答案 0 :(得分:0)

幸运的是,我尝试了不同的图像大小(其中一些大小导致代码异常或仍然存在内存问题)。

答案 1 :(得分:0)

您的计算机内存不足。您可以做一些事情:

  • 减少DenseConv2D层中神经元的数量
  • 为输入使用较小的float数据类型,即np.float16而不是np.float64
  • 使用较小的batch_size(或增加steps_per_epoch
  • 使用灰度图像(因此1个通道而不是3个通道)
  • 减少层数
  • 使用更多的MaxPooling2D层,并增加其池大小
  • strides层中使用较大的Conv2D
  • 缩小图像的大小(可以使用PIL
  • 应用辍学