首页 > 解决方案 > Tensorflow 在 cpu 中分配的内存是二进制模型大小的 4 倍

问题描述

我们从这里使用 tensorflow C API 版本 1.13.1 https://www.tensorflow.org/install/lang_c

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

我们从这里尝试了图形转换工具 https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/graph_transforms/README.md 来优化图形。但是只有量化似乎可以有效地减少模型大小和内存使用量。但有时我们不能使用它,因为量化会降低 15% 的模型精度。

正如我们目前认为的那样,减少模型大小且不会显着影响准确性的唯一方法是。

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

2)使用知识蒸馏技术重新训练小模型。 https://arxiv.org/pdf/1503.02531.pdf

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

标签: c++tensorflowc-api

解决方案


推荐阅读