繁体   English   中英

ValueError:检查输入时出错:预期 flatten_input 具有形状 (1, 4) 但得到形状为 (1, 2) 的数组

[英]ValueError: Error when checking input: expected flatten_input to have shape (1, 4) but got array with shape (1, 2)

我是 RL 的新手,我真的不明白为什么我会收到这个错误。

import random
import numpy as np
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.optimizers import Adam
from rl.agents import DQNAgent
from rl.policy import BoltzmannQPolicy
from rl.memory import SequentialMemory



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

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

def main():

    env = gym.make('CartPole-v1')
    states = env.observation_space.shape[0]
    actions = env.action_space.n
    #print(env.reset())
    #print(env.action_space.sample())
    print(env.observation())

    model = build_model(states, actions)


    dqn = build_agent(model, actions)
    dqn.compile(Adam(learning_rate=1e-3),metrics=['mae'])
    dqn.fit(env, nb_steps=50000, visualize=False, verbose=1)


main()

我不明白为什么它会得到一个形状为 (1,2) 的数组。 我已经查看了一些人的类似问题,但我无法将其应用于我的问题。 它开始训练,但立即失败,执行了 0 步。

提前致谢!

keras-rl2 库自 2021 年起停用。请在此处查看他们的 github 存储库: https ://github.com/taylormcnally/keras-rl2 可以看到它已存档,不再更新。

他们还删除了在线文档。

Gym 建议不要使用 keras-rl2,而是使用其他库,例如https://github.com/google/dopamine

虽然它已经停产,但我通过编辑 core.py 来修复它我改变了

action = self.forward(observation)

            if first_time:
                action = self.forward(observation[0])
                first_time = False
            else:
                action = self.forward(observation)

现在好了:)确保你在方法的顶部初始化了 first_time=True

我正在处理同样的问题并面临完全相同的问题。 安装包 'rl-agents==0.1.1' 为我解决了这个问题。 谢谢

这是我的这个项目的回购链接https://github.com/tahmiid/DQNCartPoleAI

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM