我想在一组数据上反复训练我的tensorflow图,我想
tf.estimator.inputs.numpy_input_fn
可能是我要找的。我发现批处理大小、重复、epoch和迭代器之间的区别令人难以置信地混淆,所以我开始尝试检查数据集的内容,试图找出实际发生的情况。然而,每当我尝试这样做我的程序只是挂起。
下面是我为重现这一点而提出的最小的测试用例:
import tensorflow as tf
import numpy
class TestMock(tf.test.TestCase):
def test(self):
inputs = numpy.array(range(10))
targets = numpy.array(range(10,20))
input_fn = tf.estimator.inputs.numpy_input_fn(
x=inputs,
y=targets,
batch_size=1,
num_epochs=2,
shuffle=False)
print input_fn()
with self.test_session() as sess:
# sess.run(input_fn()[0]) # it'll hang if I run this
pass
if __name__ == '__main__':
tf.test.main()
这个程序输出
(<tf.Tensor 'fifo_queue_DequeueUpTo:1' shape=(?,) dtype=int64>, <tf.Tensor 'fifo_queue_DequeueUpTo:2' shape=(?,) dtype=int64>)
这看起来很合理,但只要我试着运行
sess.run
行,我的程序冻结,我必须终止进程。我在这里做错什么了?
我想做的是确保我正在处理的数据实际上是我所认为的,但是我认为我没有能力去检查数据。