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
は、100000000の定数のnumpy配列です。テンソルフロー変数bを作成してaと等しく設定し、variables_initializer()を呼び出してbを初期化します。それ自体は762 MBなので、bは、私が理解していないことはTFが4GBメモリを使用して終わる方法です。 –
'a'は大きな配列です(それについては何も「定数」はありません)。 'b'は' a'sデータのコピーを作成する 'tf'オブジェクトです。 9行目にもそのデータの3つの 'コピー'が追加されているか、少なくとも同じサイズの3つのオブジェクトが作成されています。私はそれが 'initializer'のステップか' run'のステップかどうか分かりません。多分両方。 – hpaulj