【问题标题】:Tensorflow Eager Execution MultithreadedTensorFlow Eager Execution 多线程
【发布时间】:2019-12-12 03:16:34
【问题描述】:

在 tensorflow 2.0 上运行 DDPG 强化学习器。对于我使用的批量大小,训练非常慢,所以我希望在单独的线程中运行训练而不是执行。

但是,当我尝试在单独的线程上训练 Tensorflow 模型而不是使用它来预测和执行时,我遇到了问题。

首先是图表错误:

ValueError: Tensor("dense_2/kernel/Read/ReadVariableOp:0", shape=(3, 9), dtype=float32) 必须与 Tensor("Const:0", shape=(32 , 3), dtype=float32).

通过从训练线程上的主线程恢复图形很容易解决这个问题:

with self.tf_graph.as_default():

这个错误然后消失了,但是在新线程上急切执行被禁用,这会导致其他问题。有没有办法在第二个线程上恢复 tensorflow 模型的会话,以便可以在一个线程上训练 tensorflow 模型并在另一个线程上进行评估?或者这是不可能的?

【问题讨论】:

    标签: tensorflow tensorflow2.0


    【解决方案1】:

    最终我得到了这个工作。当我认为我正在使用 tensorflow 2 时,我正在运行 tensorflow 1.4,因此默认情况下禁用了急切执行。一旦我启用了 Eager Execution,我就不需要在另一个线程上做任何特别的事情,它就可以工作了。

    我在主线程上创建了一个单独的模型副本,并在执行前将训练线程的权重复制到一个锁中。

    【讨论】:

      猜你喜欢
      • 2019-02-13
      • 1970-01-01
      • 2019-02-06
      • 2020-02-16
      • 2018-10-02
      • 1970-01-01
      • 2023-03-14
      • 2020-01-10
      • 2023-03-13
      相关资源
      最近更新 更多