测试Tensorflow对象检测API时出现内存错误(OOM)

2024-06-11 00:06:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我用我的自定义数据集(调整大小的图像1280x1080)训练了更快的nas模型。我的GPU是Nvidia Quadro P5000,我可以在这台计算机上测试模型。 当我用GTX 1060测试时,它崩溃并给出内存错误。但是当我测试预先训练的更快的时候,它工作得很好

预培训模型和定制模型之间有什么区别? 有没有办法用1060运行该模型?或者是否有任何批次大小或类似参数需要更改以进行测试

我所做的:我限制了我的gpu,发现我需要至少8gb的gpu来测试我的模型

完全错误:

ResourceExhaustedError:发现2个根错误。 (0)资源耗尽:当分配器GPU\U 0\bfc分配形状为[5004032,17,17]且类型为float on/job:localhost/replica:0/task:0/device:GPU:0的张量时,出现OOM [{{节点MaxPool2D/MaxPool-0-TransposeHWCTONCHW-LayoutOptimizer}] 提示:如果您想在OOM发生时查看已分配的张量列表,请在OOM上添加report_tensor_allocations_on_to RunOptions以获取当前分配信息

[[SecondStagePostprocessor/BatchMultiClassNonMaxSuppression/map/while/MultiClassNonMaxSuppression/Sum/_275]] 提示:如果您想在OOM发生时查看已分配的张量列表,请在OOM上添加report_tensor_allocations_on_to RunOptions以获取当前分配信息

(1)资源耗尽:当分配器GPU\U 0\bfc分配形状为[5004032,17,17]且类型为float on/job:localhost/replica:0/task:0/device:GPU:0的张量时,出现OOM [{{节点MaxPool2D/MaxPool-0-TransposeHWCTONCHW-LayoutOptimizer}] 提示:如果您想在OOM发生时查看已分配的张量列表,请在OOM上添加report_tensor_allocations_on_to RunOptions以获取当前分配信息

0成功的操作。 忽略0个派生错误


Tags: to模型report信息列表gpuon错误
1条回答
网友
1楼 · 发布于 2024-06-11 00:06:14

对于您的问题1:预培训模型和定制模型之间有什么区别

这与您是将训练该模型还是仅将该模型用于推理不同
因此,当您使用模型进行推理时与训练模型时相比,所需的内存将非常小。

但是,当您使用Tensorflow GPU对模型进行训练时,这需要更多的内存而不是仅使用CPU的训练,但是执行时间更快,尤其是在处理复杂模型架构时(即更快的RCNN)

当模型使用计算重层卷积层类似时,这一点也很明显,因为由于更多内存的成本,计算的速度将更大

问题2:是否有办法使用1060运行该模型?或者是否有任何批次大小或类似参数需要更改以进行测试

当测试或推断时,数据长度通常是任意的,您可以在第一个参数为input_shape = (None, ##,##)时检查这一点。这意味着模型将接受任何不同长度的数据lowest data_length = 1

这意味着您只能在输入形状ie. (None, BATCH_SIZE, ##, ##)中明确定义时使用批次大小,或使用长度为批次大小ie. (BATCH_SIZE, ##, ##)数据馈送模型

避免记忆错误的一种方法是更改模型的batch_size参数。预测模型。将训练到一个较低的值,这也会提高模型的精度,但训练时间会更长

另一种方法是将数据集转换为数据集生成器,该生成器将缓存数据,而不是将数据直接加载到内存中

您可以在此link上阅读更多关于在Tensorflow中构建输入管道的信息

相关问题 更多 >