multithreading - Tensorflow REstart 队列运行程序 : different train and test queue

标签 multithreading python-2.7 tensorflow

我想使用“完全连接”模型来进行训练和测试。我有一个 train.tfrecords 文件和一个 test.tfrecords 文件。我认为正确的方法是创建一个单独的图表来进行训练和测试。

根本问题是使用 OutOfRange 错误和 coord.should_stop() 会破坏我尝试过的任何类型的封装。

#main.py: I would like main to look clean like this:#
session=tf.Session()
model.init(session, train.tfrecords, test.tfrecords)
model.fit() 
model.eval() 
session.close()

只要您只调用一次 fit 或 eval (正如您可以想象的那样),就完全可以正常工作。 I'm roughly following this implementation

#model.py
from graph.py import MyGraph

with tf.variable_scope(scope,reuse=False):
    train_graph=MyGraph(train_queue.batch)
with tf.variable_scope(scope,reuse=True):
    test_graph=MyGraph(test_queue.batch)

def fit(self):
    coord=tf.train.Coordinator()
    threads=tf.train.start_queue_runners(coord,self.session)
    try:
        while not coord.should_stop()
            self.session.run(self.train_graph....)
        etc
    except e:
        coord.request_should_stop()
    finally:
        coord.join()

def eval_on_test_set(self):#similar to fit
    coord=tf.train.Coordinator()
    threads=tf.train.start_queue_runners(coord,self.session)
    try:
        while not coord.should_stop()
            self.session.run(test_graph....)
    except e:
        coord.request_should_stop()
    finally:
        coord.join()

显然发生的事情是 coord 正在 (1) 关闭线程,这反过来又 (2) 关闭队列,稍后无法轻松重新打开。我只是不知道解决办法。 coord.clear_stop() 可能是难题的一部分,但我无法让它发挥作用。

其次,我有一个训练和测试队列,但它们并没有同时使用。理想情况下,该解决方案不涉及等待一半时间的专用测试/训练线程。

最佳答案

看起来协调器与当前线程上下文有一些联系。在同一线程上下文中,尽管您有不同的图形、 session 和协调器,但如果其中一个协调器终止,可能会导致其他协调器强制退出。我试图通过单独的线程进行训练和评估来避免这个问题。希望这有帮助

关于multithreading - Tensorflow REstart 队列运行程序 : different train and test queue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37715330/

相关文章:

python - 为 Keras 逐个元素编写自定义损失函数

multithreading - Rust 中的线程之间共享无锁资源

c - 防止可能的数据竞争情况

c++ - Node JS native 模块 : Can You Run C/C++ Methods In A Separate Libuv/NodeJS Style Process?

python - 如何使用类似列表的类型通过 string.Template python 生成 markdown?

python - 如何对 3D 卷积数组执行最大池化操作?

python - Tensorflow 多 GPU 重用与复制?

c++ - 将 OpenCV 矩阵分配到数据结构中

python - 使用我自己的数据的 Tensorflow 错误

python - 如何使用 if 语句来检查某些内容是否可见?