2016-07-10 3 views
1

Я тренируюсь запутанной нейронная сеть, и мой код ведет себя очень по-разному в зависимости от того, я закомментировать эту единственную строку:Экстремальное использование памяти по TensorFlow и Numpy

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

Когда эта линия закомментирована, TensorFlow очень плавный и потребляет около 8 ГБ. Когда эта строка не закомментирована, TensorFlow потребляет всю память всей системы, а SIGKILL завершает процесс кодом возврата 137 (из-за ошибки памяти). Мой набор данных поезда - 32620 записей, а мой набор данных проверки (тот, который приводит к ошибке) составляет всего 5292 записи.

Я использую TensorFlow (0.9.0) и numpy (1.11.1) с Python 3.4.4. У меня есть набор данных объемом 2,5 ГБ. Я запускаю OSX Yosemite 10.10, и у меня есть 16 ГБ оперативной памяти на моей машине.

Почему этот крошечный набор данных проверки взорвет мою машину и что не так с моим кодом?

+0

является то, что первый 'eval' в вашем коде? – James

+0

Я думаю, что вы пытаетесь передать всю проверку, установленную в Tensorflow, тогда как вы должны разделить ее на меньшие партии. –

+0

@James Да, это утверждение eval. Честно говоря, я не совсем уверен, как работает инструкция eval. Я вытащил его из одного из обучающих программ TensorFlow: https://www.tensorflow.org/versions/r0.8/tutorials/mnist/pros/index.html – user554481

ответ

3

попробовать что-то вроде этого:

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})) 
Смежные вопросы