【问题标题】:ValueError: Error when checking input: expected flatten_input to have shape... but got the shapeValueError:检查输入时出错:预期 flatten_input 具有形状...但得到了形状
【发布时间】:2022-11-03 09:28:50
【问题描述】:

在 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)

错误出现在最后一行。

【问题讨论】:

    标签: python tensorflow keras openai-gym


    【解决方案1】:

    从健身房 0.26.2 降级到健身房 0.17.1 为我解决了这个问题。这与我假设您正在关注的 youtube 教程中使用的版本相同。

    【讨论】:

      猜你喜欢
      • 2022-10-16
      • 2021-02-26
      • 2019-04-07
      • 1970-01-01
      • 2019-08-21
      • 2020-04-05
      • 2020-12-05
      • 2020-09-01
      • 1970-01-01
      相关资源
      最近更新 更多