python - TypeError:“方法”类型的参数不可迭代(Tensorforce DQN 教程)
问题描述
我正在尝试使用 DQN 算法做一个 tensorforce 教程,但我遇到了一些错误。自编写本教程以来,似乎 tensorforce 已经更新,所以我试图通过文档自己解决问题。任何人,这是我的代码。
import logging
from tensorforce.environments.openai_gym import OpenAIGym
from tensorforce.agents import DQNAgent
from tensorforce.execution import Runner
# def main():
gym_id = 'CartPole-v0'
max_episodes = 10000
max_timesteps = 1000
total_memory = 100
env = OpenAIGym(gym_id)
network_spec = [
dict(type='dense', size=32, activation='tanh'),
dict(type='dense', size=32, activation='tanh')
]
agent = DQNAgent(
# states_spec=env.states,
# actions_spec=env.actions,
states=env.states,
actions=env.actions,
# network_spec=network_spec,
batch_size=64,
memory=total_memory <-- Here is where my error is coming from.
)
runner = Runner(agent, env)
report_episodes = 10
def episode_finished(r):
if r.episode % report_episodes == 0:
logging.info("Finished episode {ep} after {ts} timesteps".format(ep=r.episode, ts=r.timestep))
logging.info("Episode reward: {}".format(r.episode_rewards[-1]))
logging.info("Average of last 100 rewards: {}".format(sum(r.episode_rewards[-100:]) / 100))
return True
print("Starting {agent} for Environment '{env}'".format(agent=agent, env=env))
runner.run(max_episodes, max_timesteps, episode_finished=episode_finished)
runner.close()
print("Learning finished. Total episodes: {ep}".format(ep=runner.episode))
# if __name__ == '__main__':
# main
错误源于
memory=total_memory
此处找到的文档说需要内存并且它必须是 int>0,所以我很困惑。任何帮助都会很甜蜜。
编辑 这是回溯代码。
Traceback (most recent call last):
File "test3.py", line 19, in <module>
agent = DQNAgent(
File "/home/dskinner/.local/lib/python3.8/site-packages/tensorforce/agents/dqn.py", line 217, in __init__
super().__init__(
File "/home/dskinner/.local/lib/python3.8/site-packages/tensorforce/agents/tensorforce.py", line 441, in __init__
super().__init__(
File "/home/dskinner/.local/lib/python3.8/site-packages/tensorforce/agents/agent.py", line 243, in __init__
super().__init__(
File "/home/dskinner/.local/lib/python3.8/site-packages/tensorforce/agents/recorder.py", line 50, in __init__
if 'type' in states or 'shape' in states:
TypeError: argument of type 'method' is not iterable
解决方案
推荐阅读
- javascript - 如何在电子中单击按钮时打开第二个窗口
- javascript - 有没有办法清除输入自动完成的缓存历史记录
- azure - Azure - 发布 Web API - 编译
- .net - 如何从多个解决方案/项目中删除 nuget 包?
- r - R Shiny 应用程序不会上传文件或显示绘图
- javascript - 选择或 Jquery 有时无法加载
- java - 条件正则表达式
- javascript - 无法在 AngularJS 中的 Internet Explorer 11 中获取事件目标的父级
- javascript - 带有偏移量的画布 createPattern() 和 fill()
- python - 如何修复此 python 代码以获取我在代码中引用的表中的所有人员姓名?