Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Python 为什么tensorflow占用的GPU内存比模型文件多?_Python_Tensorflow - Fatal编程技术网

Python 为什么tensorflow占用的GPU内存比模型文件多?

Python 为什么tensorflow占用的GPU内存比模型文件多?,python,tensorflow,Python,Tensorflow,我有一个tensorflow模型,作为协议缓冲区格式保存为model.pb,即184MB。当我使用会话加载它时,我看到该进程占用了11GB的GPU RAM。为什么会这样?默认情况下,Tensorflow使用所有GPU内存来最小化内存碎片(请参阅)。您可以使用allow_growth config选项来防止此行为: config = tf.ConfigProto() config.gpu_options.allow_growth = True session = tf.Session(config

我有一个tensorflow模型,作为协议缓冲区格式保存为
model.pb
,即
184MB
。当我使用会话加载它时,我看到该进程占用了
11GB的GPU RAM。为什么会这样?

默认情况下,Tensorflow使用所有GPU内存来最小化内存碎片(请参阅)。您可以使用allow_growth config选项来防止此行为:

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config, ...)

默认情况下,Tensorflow使用所有GPU内存来最小化内存碎片(请参阅)。您可以使用allow_growth config选项来防止此行为:

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
session = tf.Session(config=config, ...)

一方面,默认情况下,TF在创建会话时分配(几乎)整个GPU内存,而不管您实际需要模型多少内存(这使内存管理更有效)。查找“启用GPU内存增长”。另一方面,protobuf文件并不表示模型的内存重量,只表示保存的参数。例如,您仍然需要输入、输出和中间缓冲区(以及一大堆其他东西,这只是一个例子来说明这一点),所以是的,希望您的内存大小更大。这是正常的。首先,默认情况下,TF在创建会话时分配(几乎)整个GPU内存,而不管您实际需要模型多少内存(这使内存管理更有效)。查找“启用GPU内存增长”。另一方面,protobuf文件并不表示模型的内存重量,只表示保存的参数。例如,您仍然需要输入、输出和中间缓冲区(以及一大堆其他东西,这只是一个例子来说明这一点),所以是的,希望您的内存大小更大。这很正常。