Jogue um jogo de tabuleiro contra um agente treinado com aprendizado por reforço e implantado com o TensorFlow Lite.
iniciar
Se você é novo no TensorFlow Lite e está trabalhando com Android, recomendamos explorar o exemplo de aplicativo a seguir que pode ajudá-lo a começar.
Se você estiver usando uma plataforma diferente do Android ou já estiver familiarizado com as APIs do TensorFlow Lite , poderá baixar nosso modelo treinado.
Como funciona
O modelo foi construído para que um agente de jogo jogue um pequeno jogo de tabuleiro chamado 'Plane Strike'. Para uma introdução rápida deste jogo e suas regras, consulte este README .
Abaixo da interface do aplicativo, construímos um agente que joga contra o jogador humano. O agente é um MLP de 3 camadas que toma o estado do tabuleiro como entrada e gera a pontuação prevista para cada uma das 64 células possíveis do tabuleiro. O modelo é treinado usando gradiente de política (REINFORCE) e você pode encontrar o código de treinamento aqui . Após treinar o agente, convertemos o modelo em TFLite e implantamos no aplicativo Android.
Durante o jogo real no aplicativo Android, quando é a vez do agente agir, o agente analisa o estado do tabuleiro do jogador humano (o tabuleiro na parte inferior), que contém informações sobre ataques anteriores bem-sucedidos e malsucedidos (acertos e erros) e usa o modelo treinado para prever onde atacar em seguida, para que possa terminar o jogo antes do jogador humano.
Referências de desempenho
Os números de benchmark de desempenho são gerados com a ferramenta descrita aqui .
Nome do modelo | Tamanho do modelo | Dispositivo | CPU |
---|---|---|---|
Gradiente de política | 84 KB | Pixel 3 (Android 10) | 0,01ms* |
Pixel 4 (Android 10) | 0,01ms* |
* 1 fio usado.
Entradas
O modelo aceita um tensor float32
3-D de (1, 8, 8) como o estado da placa.
Resultados
O modelo retorna um tensor float32
2-D de formato (1,64) como as pontuações previstas para cada uma das 64 posições de ataque possíveis.
Treine seu próprio modelo
Você pode treinar seu próprio modelo para uma placa maior/menor alterando o parâmetro BOARD_SIZE
no código de treinamento .