评估我的CNN因消息"OOM when allocating tensor with shape[3,3,256,512]"而停止



我构建了一个具有 5 层、100 个纪元、32 个批处理大小的 CNN,并在具有 16GB RAM、4GB nvidia GTX 卡和 5 cuda 计算能力的设备上使用 Tensorflow-GPU 对其进行训练。 训练过程使用80%的训练数据成功完成且快速。当我想评估同一网络上剩余的 20% 未见过的图像数据时,我的问题就出现了。评估过程非常缓慢,并停止并显示消息:

    ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[3,3,256,512] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
 [[Node: conv2d_5_122/kernel/Assign = Assign[T=DT_FLOAT, use_locking=true, validate_shape=true, _device="/job:localhost/replica:0/task:0/device:GPU:0"](conv2d_5_122/kernel, conv2d_5_122/random_uniform)]]
    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.

任何人都可以请帮助我,我很困惑。谢谢。

我在评估Open L3 CNN以创建音频数据嵌入时遇到了同样的问题。

我发现当我调用model.test()函数时,我在循环中反复加载模型。在我的例子中,测试函数是: openl3.get_audio_embedding(audio, sampling_rate)

当我一次又一次地从磁盘重新加载模型时,它耗尽了内存。

因此,解决方案是加载一次模型,就像我加载 openl3 模型一样:

model = openl3.models.load_audio_embedding_model(input_repr="mel256", content_type="music",embedding_size=615)

然后用模型处理测试数据,就像我的情况一样:

loop starts:

openl3.get_audio_embedding(audio, sampling_rate, **model**)

loop ends

因此,请检查在处理每个测试样本时是否重新加载模型。

相关内容

最新更新