J'ai récemment remarqué une chose étrange, Tensorflow semble utiliser trop de mémoire lors de l'initialisation des variables avec des constantes. Quelqu'un peut-il m'aider à comprendre l'exemple ci-dessous?Tensorflow utilise trop de mémoire lors de l'initialisation avec des constantes
$ 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])
Je ne suis pas. De quelles «constantes» parlez-vous? Quel incrément de mémoire est faux? – hpaulj
a est un tableau numpy constant de taille 100000000, je crée une variable tensorflow b et lui donne la valeur a, et appelle variables_initializer() pour initialiser b. a lui-même est de 762 Mo, donc b, ce que je ne comprends pas, c'est comment TF finit en utilisant 4 Go de mémoire. –
'a' est un grand tableau (il n'y a rien de 'constant' à ce sujet). 'b' est un objet' tf' qui fait apparemment une copie des données 'a's'. La ligne 9 ajoute 3 'copies' de ces données - ou au moins fait 3 objets de taille similaire. Je ne sais pas si c'est l'étape 'initializer' ou la' run' qui le fait; peut-être les deux. – hpaulj