我正在尝试使用Keras模型制作一个AI,学习如何打乒乓球。我当前模型接受的输入是agent.rect元组的列表,该列表取自pygame.Rect()函数和agent.rect.center以及我编码的机器人和游戏的球。我如何建立一种可以接受这种输入并输出适当结果的模型。
我已经尝试将input_dim从原始代码更改为18,但这是行不通的
这是我的模特
def network(self):
model = Sequential()
model.add(Dense(output_dim=120,activation='relu',input_dim=6))
model.add(Dropout(0.15))
model.add(Dense(output_dim=120,activation='relu'))
model.add(Dropout(0.15))
model.add(Dense(output_dim=120,activation='relu'))
model.add(Dropout(0.15))
model.add(Dense(output_dim=3,activation='softmax'))
opt = Adam(self.learning_rate)
model.compile(loss='mse',optimizer=opt)
return model
这是我尝试输入的状态
def get_state(self,pong,player,bot):
state = [player.rect,player.rect.center,pong.rect,pong.rect.center,bot.rect,bot.rect.center]
self.length = len(state)
return np.asarray(state)
这就是错误所在
print self.model.predict(np.array(next_state))
target = reward + self.gamma * np.amax(self.model.predict(np.array([next_state]))[0])
target_f = self.model.predict(np.array([state]))
target_f[0][np.argmax(action)] = target
self.model.fit(np.array([state]),target_f,epochs=1,verbose=0)
错误输出为ValueError:检查输入时出错:预期density_1_input具有形状(6,)但具有形状(1,)的数组