Может ли тензор потока сканировать и только сохранить конечный результат? - PullRequest
1 голос
/ 11 июня 2019

Следующий код вычисляет сумму массива с tf.scan. Выделит ли тензорный поток массив из 6 элементов для хранения шести частичных сумм? Или тензор потока достаточно умен, выделяя только массив из 1 элемента для хранения частичных сумм?

Как узнать наверняка?

import tensorflow as tf
import numpy as np

elems = np.array([1, 2, 3, 4, 5, 6])
s = tf.scan(lambda a, x: a + x, elems)
# s == [1, 3, 6, 10, 15, 21]
final_s = s[-1]  # final_s == 21
with tf.Session() as sess:
    print(sess.run(final_s))

Следующий код приводит к нехватке памяти на машине с 16 ГБ.

Полагаю, tenorflow никогда не пытается оптимизировать сканирование.

import tensorflow as tf
import numpy as np

elems = tf.ones(int(1e9), dtype=np.float32)  # 4GB
s = tf.scan(lambda a, x: a + x, elems)
final_s = s[-1]
with tf.Session() as sess:
    print(sess.run(final_s))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...