Python 游戏神经网络。如何设置输入
Python game Neural network. How to setup inputs
我正在 pygame 制作一款坦克游戏,您可以在其中绕墙移动坦克并射击其他坦克。
我正在尝试找到一种制作神经网络的方法,可能是针对敌人进行强化学习,以便游戏可以通过传递每个对象的属性来决定哪些坦克应该移动到哪里,是否应该射击等。
Attributes:
Enemy -> x,y,width,height,speed,health and other items
Wall -> x,y,width,height
Bullet -> x,y,width,height,speed
Player -> x,y,width,height,speed,health
我打算使用 keras python 模块来创建一个神经网络,但是我找不到一种方法来设置它以使输入数据具有正确的形状和大小,因为会有可变数量的墙壁和子弹。
我想做什么:
action = Network.predict(state)
哪里
state = (Enemy, Player, Tuple_of_Wall_Data, Tuple_of_Bullet_Data)
而行动是敌人应该移动到哪里的选项
action = (Direction,Should_Shoot)
TLDR
我的问题是,我将如何设置一个神经网络输入层,以便它可以接收(1 个敌人、1 个玩家、多堵墙、多发子弹)并训练神经网络为敌人指明方向,以及是否应该使用强化学习开火?
有 3 种典型的 AI 代理游戏状态表示方式:
内部游戏状态,几乎就是您所提议的 - 游戏中的对象列表及其原始属性。如果你想为此使用机器学习,你需要一个处理不同大小的架构,因此你最终可能会使用递归神经网络,一个一个地处理对象。请注意,这可能是 高度次优的 表示。特别是作为人类,您不会获得这样的游戏状态,也不会获得对象流。
全局地图视图。如果游戏有足够小的地图,它可以作为代理的输入,最终会出现完全可观察的问题,数据格式为 W x H x K,其中 W,H 是地图的宽度和高度, K 是对象类型的数量(因此你得到每个对象的单热编码)
Agent 的"vision",这可能是现代强化学习中最流行的一种,其中 agent 再次呈现为 W x H x K,但现在 W 和 H 是其视野的大小(随代理移动)。
我正在 pygame 制作一款坦克游戏,您可以在其中绕墙移动坦克并射击其他坦克。
我正在尝试找到一种制作神经网络的方法,可能是针对敌人进行强化学习,以便游戏可以通过传递每个对象的属性来决定哪些坦克应该移动到哪里,是否应该射击等。
Attributes:
Enemy -> x,y,width,height,speed,health and other items
Wall -> x,y,width,height
Bullet -> x,y,width,height,speed
Player -> x,y,width,height,speed,health
我打算使用 keras python 模块来创建一个神经网络,但是我找不到一种方法来设置它以使输入数据具有正确的形状和大小,因为会有可变数量的墙壁和子弹。
我想做什么:
action = Network.predict(state)
哪里
state = (Enemy, Player, Tuple_of_Wall_Data, Tuple_of_Bullet_Data)
而行动是敌人应该移动到哪里的选项
action = (Direction,Should_Shoot)
TLDR 我的问题是,我将如何设置一个神经网络输入层,以便它可以接收(1 个敌人、1 个玩家、多堵墙、多发子弹)并训练神经网络为敌人指明方向,以及是否应该使用强化学习开火?
有 3 种典型的 AI 代理游戏状态表示方式:
内部游戏状态,几乎就是您所提议的 - 游戏中的对象列表及其原始属性。如果你想为此使用机器学习,你需要一个处理不同大小的架构,因此你最终可能会使用递归神经网络,一个一个地处理对象。请注意,这可能是 高度次优的 表示。特别是作为人类,您不会获得这样的游戏状态,也不会获得对象流。
全局地图视图。如果游戏有足够小的地图,它可以作为代理的输入,最终会出现完全可观察的问题,数据格式为 W x H x K,其中 W,H 是地图的宽度和高度, K 是对象类型的数量(因此你得到每个对象的单热编码)
Agent 的"vision",这可能是现代强化学习中最流行的一种,其中 agent 再次呈现为 W x H x K,但现在 W 和 H 是其视野的大小(随代理移动)。