与使用强化学习训练并使用 TensorFlow Lite 部署的代理玩棋盘游戏。
入门
如果您是 TensorFlow Lite 的新手,并且正在使用 Android,我们建议您探索以下示例应用程序,它可以帮助您入门。
如果您使用的是 Android 以外的平台,或者您已经熟悉 TensorFlow Lite API,您可以下载我们训练的模型。
工作原理
该模型是为游戏代理构建的,用于玩一个名为“飞机攻击”的小型棋盘游戏。有关此游戏及其规则的快速介绍,请参阅此 README。
在应用程序 UI 的下方,我们构建了一个与人类玩家对战的代理。该代理是一个 3 层 MLP,它将棋盘状态作为输入,并输出对 64 个可能的棋盘单元格的每个单元格的预测得分。该模型使用策略梯度 (REINFORCE) 进行训练,您可以在 此处 找到训练代码。训练完代理后,我们将模型转换为 TFLite 并将其部署到 Android 应用程序中。
在 Android 应用程序中的实际游戏过程中,当轮到代理采取行动时,代理会查看人类玩家的棋盘状态(底部的棋盘),其中包含有关先前成功和不成功攻击(命中和未命中)的信息,并使用训练的模型来预测下一步攻击的位置,以便它可以在人类玩家之前完成游戏。
性能基准
性能基准数字是使用 此处 描述的工具生成的。
模型名称 | 模型大小 | 设备 | CPU |
---|---|---|---|
策略梯度 | 84 Kb | Pixel 3 (Android 10) | 0.01ms* |
Pixel 4 (Android 10) | 0.01ms* |
* 使用了 1 个线程。
输入
该模型接受 (1, 8, 8) 的 3-D float32
张量作为棋盘状态。
输出
该模型返回形状为 (1,64) 的 2-D float32
张量,作为对 64 个可能的攻击位置的每个位置的预测得分。
训练您自己的模型
您可以通过更改 训练代码 中的 BOARD_SIZE
参数来训练您自己的模型,用于更大/更小的棋盘。