【发布时间】: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