在Openai-gym环境中,尝试使用Tensorflow/Keras实现DQN时,我遇到了以下错误:ValueError: Error when checking input: expected flatten_input to have shape (1, 4) but got array with shape (1, 2))
我尝试过的方法:
我确实知道我的模型得到了错误的输入,**但是我还没有弄清楚为什么,以及如何得到的。**此外,正如可以看到的,我有一个Flatten层,正如在其他线程中推荐的那样。1 + 2
版本:python 3.8.0
,gym 0.26.2
,protobuf 3.19.10
,tensorflow 2.10.0
,我的操作系统是windows。
此为相关代码:
#importing al the relevant libraries...
env = gym.make('CartPole-v1', render_mode='human')
states = env.observation_space.shape[0]
actions = env.action_space.n
def build_model(states,actions):
model = Sequential()
model.add(Flatten(input_shape=(1,states)))
model.add(Dense(24, activation='relu'))
model.add(Dense(24, activation='relu'))
model.add(Dense(actions, activation='linear'))
return model
model = build_model(states, actions)
def build_agent(model,actions):
policy = BoltzmannQPolicy()
memory = SequentialMemory(limit=50000, window_length=1)
dqn = DQNAgent(model=model, memory=memory, policy = policy,
nb_actions=actions, nb_steps_warmup=10, target_model_update=1e-2)
return dqn
optimizerr = tf.keras.optimizers.Adam(learning_rate=0.001)
dqn = build_agent(model,actions)
dqn.compile(optimizer=optimizerr,metrics=['mae'])
dqn.fit(env, nb_steps=50000, visualize=False, verbose=1)
错误出现在最后一行。
1条答案
按热度按时间sy5wg1nm1#
从gym 0.26.2降级到gym 0.17.1对我来说解决了这个问题。我想你在youtube教程中使用的是同一个版本。