我使用自定义数据集训练了fast_rcnn_nas模型(尺寸调整为1280x1080的图像)。我的GPU是Nvidia Quadro P5000,我可以在这台计算机上测试模型。当我使用GTX 1060进行测试时,它会崩溃并给出内存错误。但是,当我测试预训练的faster_rcnn_nas时,它可以正常工作。
预训练模型和自定义模型有什么区别?有什么办法可以在1060上运行模型吗?还是有任何batch_size或类似参数需要更改以进行测试?
我所做的:我限制了我的GPU,发现我至少需要8GB的GPU来测试我的模型。
完整错误:
ResourceExhaustedError:找到2个根本错误。(0)资源耗尽:分配具有shape [500,4032,17,17]的张量并在/ job:localhost / replica:0 / task:0 / device:GPU:0上通过分配器GPU_0_bfc键入float[[{{node MaxPool2D / MaxPool-0-TransposeNHWCToNCHW-LayoutOptimizer}}]]提示:如果要在发生OOM时查看分配的张量的列表,请将report_tensor_allocations_upon_oom添加到RunOptions中以获取当前分配信息。
[[[SecondStagePostprocessor / BatchMultiClassNonMaxSuppression / map / while / MultiClassNonMaxSuppression / Sum / _275]]提示:如果要在发生OOM时查看分配的张量的列表,请将report_tensor_allocations_upon_oom添加到RunOptions中以获取当前分配信息。
((1)资源耗尽:分配带有形状[500,4032,17,17]的张量并在/ job:localhost / replica:0 / task:0 / device:GPU:0上通过分配器GPU_0_bfc输入float[[{{node MaxPool2D / MaxPool-0-TransposeNHWCToNCHW-LayoutOptimizer}}]]提示:如果要在发生OOM时查看分配的张量的列表,请将report_tensor_allocations_upon_oom添加到RunOptions中以获取当前分配信息。
0个成功的操作。忽略0个派生错误。
对于您的[[问题1]:预训练模型和自定义模型之间有什么区别?
这与您将模型[[train还是仅将模型用于inference有所不同。因此,当您使用模型进行推理时,将需要与训练模型时相比非常小的内存。但是,当您使用Tensorflow GPU train模型时,这需要更多内存 与仅CPU训练相比,但和[[更快的执行时间),特别是在处理复杂的模型体系结构(即Faster RCNN),。
当模型使用卷积层之类的计算重层时,这也是很明显的,因为出于更多的内存]的代价,计算的速度将更快。
。问题2:是否可以用1060运行模型?还是有任何batch_size或类似参数需要更改以进行测试?测试或推论时,数据长度通常为任意
,您可以在input_shape = (None, ##,##)
第一个参数为None
时进行检查。这意味着模型将接受具有任何不同长度lowest data_length = 1
的数据。意思是除非使用输入形状ie. (None, BATCH_SIZE, ##, ##)
明确定义或使用具有batch_size长度的数据
ie. (BATCH_SIZE, ##, ##)
来提供模型,否则使用Keras时只能使用batch_size”。 >避免内存错误的一种方法是将model.predict和model.train
的batch_size
parameter更改为较低的值,这也会增加您的模型准确性]
,但会训练更长的时间。另一种是将数据集转换为数据集生成器,该数据缓存您的数据,而不是将其<]]您可以在此link上阅读有关在Tensorflow中构建输入管道]的更多信息。