1
我最近注意到一件奇怪的事情,Tensorflow似乎在用常量初始化变量时使用了太多的内存。有人能帮我理解下面的例子吗?当使用常量初始化时,Tensorflow使用太多的内存
$ python -m memory_profiler test.py
[0 1 2 3 4 5 6 7 8 9]
Filename: test.py
Line # Mem usage Increment Line Contents
================================================
4 144.531 MiB 0.000 MiB @profile
5 def go():
6 907.312 MiB 762.781 MiB a = np.arange(100000000)
7 910.980 MiB 3.668 MiB s = tf.Session()
8 1674.133 MiB 763.152 MiB b = tf.Variable(a)
9 3963.000 MiB 2288.867 MiB s.run(tf.variables_initializer([b]))
10 3963.145 MiB 0.145 MiB print(s.run(b)[:10])
我不关注。你在谈论什么'常量'?哪个内存增量错了? – hpaulj
a是一个大小为100000000的常数numpy数组,我创建一个tensorflow变量b并将其设置为a,并调用variables_initializer()来初始化b。 a本身是762 MB,b也是,我不明白的是TF最终如何使用4GB内存。 –
'a'是一个大型数组(关于它没有任何'常数')。 'b'是一个'tf'对象,显然是复制'a's'数据。第9行也添加了该数据的3个“副本” - 或者至少可以创建3个相似大小的对象。我不知道它是'initializer'步骤还是'run'步骤;也许都是。 – hpaulj