我有一个玩游戏'tic tac toe‘的代理,它使用tensorflow.js神经网络,试图模仿Q函数的行为。
我正在关注这个行程报告,但使用的是TFJS和node:Part 4 — Neural Network Q Learning
智能体在游戏期间跟踪游戏状态,在游戏完成后,根据游戏如何结束,尝试使用这些状态的更新Q值来训练神经网络。
我的问题是: fit()是一个异步函数,我玩游戏的脚本运行了一个游戏循环,游戏循环完成后,我得到了一堆UnhandledPromiseRejectionWarning,因为之前所有游戏的fit()调用都在进行中。
有没有办法在每次游戏结束时同步训练我的模型?可能是使用model.makeTrainFunction(),还是有使用优化器的方法?(在cart-pole example中找到optimizer.applyGradients())
链接到我的代码NNQPlayer.js
感谢您阅读我的问题。我希望有人能给我一个正确的方向!
发布于 2019-03-21 23:30:55
fit
是异步操作。如果您正在寻找多次调用fit
的方法,则只需在调用fit
之前使用await
即可。这将确保在另一个对fit
的调用之前完成fit
操作。你可以看看这个answer
https://stackoverflow.com/questions/55276575
复制相似问题