Tensorflow 张量流估计器内存使用

Tensorflow 张量流估计器内存使用,tensorflow,Tensorflow,我发现,在这种情况下,TF估计器与Dataset配对使用了不合理的巨大内存(约1GB),需要数十分钟,尽管批处理大小只有10,迭代次数为100。 模型初始化代码: classifier = tf.estimator.LinearClassifier ( feature_columns=construct_feature_columns(), n_classes=10, optimizer=my_optimizer, config=tf.estimator.RunConfig(ke

我发现,在这种情况下,TF估计器与Dataset配对使用了不合理的巨大内存(约1GB),需要数十分钟,尽管批处理大小只有10,迭代次数为100。 模型初始化代码:

classifier = tf.estimator.LinearClassifier (
  feature_columns=construct_feature_columns(),
  n_classes=10,
  optimizer=my_optimizer,
  config=tf.estimator.RunConfig(keep_checkpoint_max=1)
)
调用的Fit过程:

classifier.train(
    input_fn=training_input_fn,
    steps=steps_per_period
)
该程序使用逻辑回归对10k示例MNIST数据集(内存约60 MB)进行分类,而使用sklearn的逻辑回归,同样的过程只需几秒钟和一点内存。有谁能告诉我这里的主要内存消费者是什么,或者我如何跟踪内存使用情况

UPD。我进行了另一个实验,使用占位符和Dataset类将数据馈送到模型。我实施了自定义逻辑回归(与估计器的回归相反),并发现使用数据集输入数据:

ds = Dataset.from_tensor_slices((train_x, train_y))
ds = ds.batch(10).repeat(num_epochs)
ds = ds.shuffle(buffer_size=10000)
x,y = ds.make_one_shot_iterator().get_next()
...
sess.run(my_optimiser)
导致在培训期间消耗的内存至少是占位符的5倍:

x = tf.placeholder(tf.float32, (None,784), 'pixels')
y = tf.placeholder(tf.float32, (None), 'targets')
...
sess.run(my_optimiser, feed_dict={x:train_x, y:train_y})

你是如何发现1GB的消耗量的?只有在我运行程序时检查系统监视器(我在本地运行)