У меня есть некоторые проблемы с тем, как тензорный поток обрабатывает память.Я хотел бы удалять тензоры из моей памяти после каждой итерации на этом игрушечном примере.
Я использую tenorflow EagerExecution.Я пробовал с переменными и с простыми тензорами.tf.assign не делает работу.Все больше и больше памяти используется.Я думаю, это нормально, чтобы иметь возможность вычислить градиент.Даже если я применяю какой-то фиктивный оптимизатор в конце каждой итерации, память не освобождается (точнее, иногда это происходит, но общая тенденция заключается в том, что использование памяти растет).
Так же, как и этоможно удалить вручную?
import tensorflow as tf
import tensorflow.contrib.eager as tfe
import numpy as np
import time as ti
tf.enable_eager_execution()
for i in range(150):
all_subject=tfe.Variable(np.random.rand(200, 500), dtype=tf.float32)
tf.assign(all_subject, np.random.rand(200,500) )
ti.sleep(1.0)
del all_subject
ti.sleep(0.5)
Как выглядит выделение:
Профиль памяти