为tensorflow.js模型实现同步fit()或训练功能

时间:2019-03-21 08:44:56

标签: javascript node.js tensorflow tensorflow.js

我有一个使用tensorflow.js神经网络玩'tic tac toe'游戏的代理,试图模仿Q函数的行为。

我正在关注这次旅行报告,但使用的是TFJS和节点:Part 4 — Neural Network Q Learning

代理会在游戏过程中跟踪游戏状态,并在游戏完成后尝试根据游戏的结束方式使用这些状态的更新Q值训练NN。

我的问题是:fit()是一个异步函数,我玩游戏的脚本运行一个游戏循环,游戏循环完成,然后由于所有对fit()的调用,我得到了一堆UnhandledPromiseRejectionWarning。以前的游戏正在进行中。

是否有一种方法可以在每局游戏结束时同步训练我的模型。也许使用model.makeTrainFunction()还是有使用优化器的方法? (在cart-pole example中找到的optimizer.applyGradients())

链接到我的代码NNQPlayer.js

感谢您阅读我的问题。我希望有人能朝着正确的方向推动我!

1 个答案:

答案 0 :(得分:1)

fit是异步操作。如果您正在寻找一种可以多次调用fit的方式,则只需在调用await之前使用fit。这样可以确保在再次调用fit之前完成fit操作。您可以看看这个answer