我使用python进行强化学习任务。有时(通常,实际上)代理失败,我怀疑它过度拟合数据集。出于明显的速度原因,训练是在没有渲染的情况下完成的,因此,我只能在完成训练时观察它失败。虽然我使用的是印刷品,但我认为如果能观看培训,我可能会发现它开始过度拟合的那一刻。但是,我不想牺牲速度。有什么办法可以通过终端和用户输入在脚本运行时调用一个函数而不阻塞它吗? 我想这会像一个事件。
编辑也许正如有人建议的那样,多处理是一种解决方案。
这是我的代码。它确实渲染,但我不确定它是多处理的任何东西:
from multiprocessing import Process
def drawing(y):
x = np.arange(y.shape[0])
plt.cla()
plt.bar(x,y)
process = Process(target = drawing)
s = env.reset()
process.start()
plt.show()
while True:
state_tensor = Variable(torch.Tensor(s)).unsqueeze(0)
action, vals = a3.think(state_tensor, display= True, train = False)
env.render()
drawing(vals) # the part I want to speed up
ns,r, done, _ = env.step(action)
s = ns
if done:
s = env.reset()