gpt4 book ai didi

queue - 使用队列时如何在 tensorflow 训练期间测试网络

转载 作者:行者123 更新时间:2023-12-04 08:54:50 25 4
gpt4 key购买 nike

我正在使用队列使用下面的代码将我的训练示例提供给我的网络,并且它可以正常工作。

但是,我希望能够每 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)

最佳答案

您可以像这样构建另一个测试队列和训练模型的副本作为测试模型:

trainX, trainY = Queue0(batchSize, ...)...
testX, testY= Queue1(batchSize, ...)...
modelTrain = inference(trainX, trainY, ...)
# reuse variables
modelTest = inference(testX, testY, ...)
sess.run(train_op,loss_op,trainX,trainY)
sess.run(test_op,testX,testY)
由于初始化了2个模型,这种方式可能会消耗更多内存,希望看到更好的解决方案

关于queue - 使用队列时如何在 tensorflow 训练期间测试网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38297221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com