我如何建立一个包含元组列表的神经网络模型

问题描述 投票:0回答:1

我正在尝试使用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,)的数组

python keras keras-layer
1个回答
0
投票

尝试一下:

n_output = 3

def network(self):
        model = Sequential()
        model.add(Dense(6, input_dim=6, kernel_initializer='normal', activation='relu'))
        model.add(Dense(4, kernel_initializer='normal', activation='relu'))
        model.add(Dense(n_output, activation='softmax'))
        opt = Adam(self.learning_rate)
        model.compile(loss='mse', optimizer=opt)
        return model
© www.soinside.com 2019 - 2024. All rights reserved.