Jouez à un jeu de société contre un agent, qui est formé à l'aide de l'apprentissage par renforcement et déployé avec TensorFlow Lite.
Commencer
Si vous débutez avec TensorFlow Lite et que vous travaillez avec Android, nous vous recommandons d'explorer l'exemple d'application suivant qui peut vous aider à démarrer.
Si vous utilisez une plateforme autre qu'Android, ou si vous connaissez déjà les API TensorFlow Lite , vous pouvez télécharger notre modèle entraîné.
Comment ça fonctionne
Le modèle est conçu pour qu'un agent de jeu joue à un petit jeu de société appelé "Plane Strike". Pour une présentation rapide de ce jeu et de ses règles, veuillez vous référer à ce README .
Sous l'interface utilisateur de l'application, nous avons construit un agent qui joue contre le joueur humain. L'agent est un MLP à 3 couches qui prend l'état de la carte en entrée et produit le score prévu pour chacune des 64 cellules possibles de la carte. Le modèle est formé à l'aide du gradient de politique (REINFORCE) et vous pouvez trouver le code de formation ici . Après avoir formé l'agent, nous convertissons le modèle en TFLite et le déployons dans l'application Android.
Pendant le jeu réel dans l'application Android, lorsque c'est au tour de l'agent d'agir, l'agent regarde l'état du tableau du joueur humain (le tableau en bas), qui contient des informations sur les frappes précédentes réussies et infructueuses (hits and miss) , et utilise le modèle formé pour prédire où frapper ensuite, afin qu'il puisse terminer le jeu avant que le joueur humain ne le fasse.
Références de performances
Les numéros de référence de performance sont générés avec l'outil décrit ici .
Nom du modèle | Taille du modèle | Dispositif | CPU |
---|---|---|---|
Dégradé de politique | 84 Ko | Pixel 3 (Android 10) | 0,01 ms* |
Pixel 4 (Android 10) | 0,01 ms* |
* 1 fils utilisés.
Contributions
Le modèle accepte un float32
3-D de (1, 8, 8) comme état de la carte.
Les sorties
Le modèle renvoie un float32
2-D de forme (1,64) comme scores prédits pour chacune des 64 positions de frappe possibles.
Entraînez votre propre modèle
Vous pouvez entraîner votre propre modèle pour une carte plus grande/plus petite en modifiant le paramètre BOARD_SIZE
dans le code d'entraînement .