[英]ValueError: RolloutWorker has no input_reader object
我正在使用 RLlib,我正在嘗試在 Python 3.9.6 上使用 Ray v1.10 在多代理環境中運行 APEX_DDPG。 我收到以下錯誤:
raise ValueError("RolloutWorker has no input_reader object: " ValueError。RolloutWorker 沒有 input_reader object。無法調用 sample()。您可以嘗試將 create_env_on_driver 設置為 True。
我在文檔中找到了錯誤的來源,在 RolloutWorker class 定義中:
if self.fake_sampler and self.last_batch is not None:\
return self.last_batch\
elif self.input_reader is None:\
raise ValueError("RolloutWorker has no input_reader object! "\
"Cannot call sample(). You can try setting "
"create_env_on_driver to True.")
但我不知道如何解決它,因為我對 RLlib 有點陌生。
我也是 Ray 和 RLlib 的新手。 我今天也遇到這個錯誤。 我的問題是我忘記將我的env
添加到config
。 在使用ApexDDPGTrainer(config=config)
或使用ray.tune(config=config)
config
,您可以嘗試將您的環境添加到您的配置中
以下是ray 官方文檔中的示例:
import gym, ray
from ray.rllib.agents import ppo
class MyEnv(gym.Env):
def __init__(self, env_config):
self.action_space = <gym.Space>
self.observation_space = <gym.Space>
def reset(self):
return <obs>
def step(self, action):
return <obs>, <reward: float>, <done: bool>, <info: dict>
ray.init()
trainer = ppo.PPOTrainer(env=MyEnv, config={
"env_config": {}, # config to pass to env class
})
您也可以先注冊您的自定義環境:
from ray.tune.registry import register_env
def env_creator(env_config):
return MyEnv(...) # return an env instance
register_env("my_env", env_creator)
trainer = ppo.PPOTrainer(env="my_env")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.