微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

强化学习代理构建 DQNAgent 导致未知问题

如何解决强化学习代理构建 DQNAgent 导致未知问题

我想进入一点强化学习,所以我按照一个动手教程从相当简单的例子“Cartpole”开始。 Github link of the tutorial source code (identical with mine) 不幸的是,我被同样的错误困了两天,找不到基于 TypeError 的类似问题/解决方案。错误消息如下:

*File "C:\Users\Felix\DropBox\Pendelcart.py",line 40,in dqn = build_agent(model,actions)

文件“C:\Users\Felix\DropBox\Pendelcart.py”,第 29 行,在 build_agent 中 dqn = DQNAgent(model=model,memory=memory,policy=policy,nb_actions =actions,

文件“C:\Users\Felix\AppData\Roaming\Python\python38\site-packages\rl\agents\dqn.py”,第 108 行,在 init if hasattr(model.output,'len') 和len(model.output) > 1:

文件“C:\Users\Felix\AppData\Roaming\Python\python38\site-packages\tensorflow\python\keras\engine\keras_tensor.py”,第 240 行,在 len raise TypeError('Keras Symbolics Inputs/输出不 '

TypeError:Keras 符号输入/输出未实现 len。您可能正在尝试将 Keras 符号输入/输出传递给未注册分派的 TF API,从而阻止 Keras 自动将 API 调用转换为功能模型中的 lambda 层。如果您尝试直接断言符号输入/输出,也会引发此错误。*

我真的希望这里有人可以帮助我。我使用 Pyhton 3.8、Tensorflow 2.4.0 和 Keras 2.4.3。完整的源代码附在下面。

提前致谢,节日快乐。

import gym
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(Input(shape=(1,states)))
    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,nb_steps_warmup=10,target_model_update=1e-2)
    return dqn

env = gym.make('CartPole-v0')
states = env.observation_space.shape[0]
actions = env.action_space.n

model = build_model(states,actions)
model.summary()

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。