为 tensorflow.js 模型实施同步 fit() 或训练函数

Implement synchronous fit() or training function for tensorflow.js model

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

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

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

我的问题是:fit() 是一个异步函数,我玩游戏的脚本运行一个游戏循环,游戏循环完成,然后我得到一堆 UnhandledPromiseRejectionWarning 因为从之前的所有游戏都在进行中。

有没有办法在每场比赛结束时同步训练我的模型。也许使用 model.makeTrainFunction() 或者有没有办法使用优化器? (optimizer.applyGradients() 在 cart-pole example 中找到)

Link 到我的代码 NNQPlayer.js

感谢阅读我的问题。我希望有人能给我一个正确的方向!

fit 是一个异步操作。如果您正在寻找多次调用 fit 的方法,您只需在调用 fit 之前使用 await。这将确保 fit 操作在另一个调用 fit 之前完成。你可以看看这个