为棋盘游戏的Keras模型生成适当的输出层

时间:2018-09-20 03:17:05

标签: python machine-learning neural-network keras

我基于this game here创建了一个游戏。我正在尝试使用Deep Q Learning进行此操作,这是我首次尝试神经网络(请轻柔!!)

我正在尝试创建一个可以玩此游戏的NN。以下是有关游戏的一些相关事实:

  • 玩家1(狐狸)有1个棋子,他可以在任何方向对角移动1步

  • 第2层(鹅)有4个,只能向对角线(左对角线或右对角线)向前移动1步。

  • 如果狐狸到达棋盘的另一端则获胜,如果鹅将狐狸困住而无法移动,则鹅获胜。

我想先为鹅做代理,因为它似乎是更坚硬的代理,有更多的碎片和限制。这是我到目前为止拥有的重要代码部分:

  

这是我设置游戏板并设置鹅的总动作的地方

def __init__(self):
    self.state_size = (LENGTH,LENGTH) ##LENGTH is 8 so (8,8)
    #...
    #other DQN variables that aren't important to question
    #...
    self.action_size = 8 ##4 geese, each can potentially make 2 moves
    self.model = self.build_model()
  

这是我创建模型的地方

def build_model(self):
    #builds the NN for Deep-Q Model
    model = Sequential() #establishes a feed forward NN
    model.add(Dense(64,input_shape = (LENGTH,), activation='relu'))
    model.add(Dense(64, activation='relu'))
    model.add(Dense(self.action_size, activation = 'linear'))
    model.compile(loss='mse', optimizer='Adam')
  

我的问题:由于有4只鹅,每只鹅都可以进行2次移动,因此我认为我的action_size应该为 8 (每只鹅为2)或应该为2( (对角线是向左还是向右)或其他所有内容?

我不知所措的原因是,在任何给定的转弯中,一些鹅的举动可能无效,这有关系吗?

0 个答案:

没有答案