keras ValueError:检查输入时出错:预期flatten_input具有形状...但得到的是形状

uqdfh47h  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(176)

在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.0gym 0.26.2protobuf 3.19.10tensorflow 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)

错误出现在最后一行。

sy5wg1nm

sy5wg1nm1#

从gym 0.26.2降级到gym 0.17.1对我来说解决了这个问题。我想你在youtube教程中使用的是同一个版本。

相关问题