Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Tensorflow在cpu中分配的内存是二进制模型大小的4倍_C++_Tensorflow_C Api - Fatal编程技术网

C++ Tensorflow在cpu中分配的内存是二进制模型大小的4倍

C++ Tensorflow在cpu中分配的内存是二进制模型大小的4倍,c++,tensorflow,c-api,C++,Tensorflow,C Api,我们使用的是tensorflow C API版本1.13.1 从这里 我们的神经网络模型冻结图。pb大小为230mb,采用MobileNet架构。 当我们加载它时,tensorflow在第一次会话运行时分配了大约1.1GB的内存,然后内存分配减少到约900mb,并保持在这个值 我们在这里尝试了图形转换工具 优化图形。 但只有量化似乎能有效地减少模型大小和内存使用,但有时我们不能使用它,因为量化会使模型精度降低15% 正如我们目前认为的那样,减小模型尺寸且不严重影响精度的唯一方法是 1) 移动到另

我们使用的是tensorflow C API版本1.13.1 从这里

我们的神经网络模型冻结图。pb大小为230mb,采用MobileNet架构。 当我们加载它时,tensorflow在第一次会话运行时分配了大约1.1GB的内存,然后内存分配减少到约900mb,并保持在这个值

我们在这里尝试了图形转换工具 优化图形。 但只有量化似乎能有效地减少模型大小和内存使用,但有时我们不能使用它,因为量化会使模型精度降低15%

正如我们目前认为的那样,减小模型尺寸且不严重影响精度的唯一方法是

1) 移动到另一个后端,如MXNET等

2) 使用知识提取技术重新训练小模型。

我们期望单个型号的内存分配不超过二进制大小的150%。 任何解决方案都可以接受。
谢谢。

“我们希望单个型号的内存分配不超过二进制大小的150%—为什么?因为我们必须在服务器中支持同一型号的多个实例,所以我们必须尽可能减少内存我不是在问为什么要减少型号内存消耗,但是为什么你假设内存中的模型应该是二进制模型中的最大150%的大小?因为我在C++中写了我的小后端,内存使用不超过二进制模型的140%。MxNET也不等于为模型分配的170%个内存。