在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():
然后该错误消失,但是在新线程上,急切的执行被禁用,这会导致其他问题。有没有一种方法可以在第二个线程上恢复张量流模型的会话,以便可以在一个线程上训练张量流模型并在另一个线程上对其进行评估?还是这不可能?
答案 0 :(得分:0)
最终我成功了。当我以为我正在使用tensorflow 2时,我正在运行tensorflow 1.4,因此默认情况下禁用急切执行。一旦启用了急切执行功能,我就不需要在另一个线程上做任何特别的事情了,就可以了。
我在主线程上创建了一个单独的模型副本,并在执行之前就将训练线程的权重复制到了锁中。