ResourceExhaustedError(有关回溯,请参阅上文):分配形状为[125610241021]的张量时出现



我从同事那里得到了tensorflow代码,并试图在DGX-1上运行它。然而,代码抛出异常:

ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[1,256,1024,1021] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
[[{{node Optimizer/gradients/Decoder/Decoder/LeakyRelu_9_grad/Select_1}} = Select[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:GPU:0"](Optimizer/gradients/Decoder/Decoder/LeakyRelu_9_grad/GreaterEqual, Optimizer/gradients/Decoder/Decoder/LeakyRelu_9_grad/zeros, Optimizer/gradients/Decoder/Decoder/conv2d_5/Conv2D_grad/Conv2DBackpropInput)]]
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.

需要注意的事项如下:

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

任何帮助都将不胜感激。

谢谢,

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

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

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

最新更新