Python 为什么tensorflow占用的GPU内存比模型文件多?
我有一个tensorflow模型,作为协议缓冲区格式保存为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
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文件并不表示模型的内存重量,只表示保存的参数。例如,您仍然需要输入、输出和中间缓冲区(以及一大堆其他东西,这只是一个例子来说明这一点),所以是的,希望您的内存大小更大。这很正常。