BiB*_*iBi 8 queue training-data neural-network deep-learning tensorflow
我正在使用队列使用下面的代码将我的训练示例提供给我的网络,并且它正常工作.
但是,我希望每n次迭代能够提供一些测试数据,但我真的不知道应该如何进行.我应该暂时停止队列并手动提供测试数据吗?我应该创建另一个队列来测试数据吗?
编辑:这样做的正确方法是创建一个单独的文件,比如eval.py连续读取最后一个检查点并评估网络?这就是他们在CIFAR10示例中的做法.
batch = 128 # size of the batch
x = tf.placeholder("float32", [None, n_steps, n_input])
y = tf.placeholder("float32", [None, n_classes])
queue = tf.RandomShuffleQueue(capacity=4*batch,
min_after_dequeue=3*batch,
dtypes=[tf.float32, tf.float32],
shapes=[[n_steps, n_input], [n_classes]])
enqueue_op = queue.enqueue_many([x, y])
X_batch, Y_batch = queue.dequeue_many(batch)
sess = tf.Session()
def load_and_enqueue(data):
while True:
X, Y = data.get_next_batch(batch)
sess.run(enqueue_op, feed_dict={x: X, y: Y})
train_thread = threading.Thread(target=load_and_enqueue, args=(data))
train_thread.daemon = True
train_thread.start()
for _ in xrange(max_iter):
sess.run(train_op)
Run Code Online (Sandbox Code Playgroud)
Jua*_*ang -1
您可以在代码中添加 eval_op,然后在每 n(例如 n=1000)次迭代中进行评估。示例如下:
for niter in xrange(max_iter):
sess.run(train_op)
if niter % 1000 == 0:
sess.run(eval_op)
Run Code Online (Sandbox Code Playgroud)