我正在训练一个复杂的神经网络,而我的代码则根据是否注释掉这一行而表现出很大的不同:

print("validation accuracy %g" % accuracy.eval(feed_dict={x: validation_predictors, y_: validation_targets, keep_prob: 1.0}))


注释掉该行时,TensorFlow非常流畅,消耗约8 GB。当此行未注释掉时,TensorFlow会消耗整个系统上的所有内存,并且SIGKILL会以137返回码(内存不足错误)终止该过程。我的火车数据集是32620条记录,而我的验证数据集(导致错误的数据集)只有5292条记录。

我在Python 3.4.4中使用TensorFlow(0.9.0)和numpy(1.11.1)。我有一个2.5 GB的数据集。我正在运行OSX Yosemite 10.10,并且我的计算机上装有16 GB的RAM。

为什么这个微小的验证数据集会炸毁我的机器,我的代码有什么问题?

最佳答案

尝试这样的事情:

for i in xrange(10):
    testSet = mnist.test.next_batch(500)
    print("test accuracy %g" % accuracy.eval(feed_dict={x: testSet[0], y_: testSet[1], keep_prob: 1.0}))

10-08 08:10