【发布时间】:2020-04-21 18:38:36
【问题描述】:
我正在自定义环境中使用 tensorflow 训练深度 RL 代理,并注意到在我的训练循环中调用 environment.step 方法比在外部调用要慢得多。 这是解释这一点的伪代码
class agent():
........
def train():
for i in batch_size:
start = time.time()
nextstate, reward, done = env.step()
agent.timecounter += time.time - start
对于代理,我会发现调用 env.step 在单个批次的 ~.8 秒挂壁时间中占用 ~.5 秒。如果我只是正常调用代码,而不是在代理训练循环中调用,我看不到这种开销。
start = time.time()
for i in batch_size:
out = env.step()
print(time.time() - start)
我会发现只需要 ~.01 秒即可运行 environment.step 相同的次数。是什么导致了这种额外的开销?这让我的训练变得非常缓慢。
我尝试了健身房的 cartpole 环境,它没有这个问题。我的自定义环境有几个字典属性。这可能是导致问题的原因吗?我没有看到我的代码和健身房的购物车之间有任何其他差异。
在您的机器上重现的完整代码可在https://github.com/ronan-keane/havsim/tree/DL3 获得 在scripts/meng assignments/control 1/traintest.py
【问题讨论】:
标签: python tensorflow reinforcement-learning tf.keras