ray.rllib.core.models.catalog.Catalog#
- class ray.rllib.core.models.catalog.Catalog(observation_space: gymnasium.Space, action_space: gymnasium.Space, model_config_dict: dict, view_requirements: dict = None)[源代码]#
基类:
object
描述了在 RLModules 中使用的子模块架构。
RLlib 的原生 RLModules 从 Catalog 对象获取其模型。默认情况下,该 Catalog 将其作为属性构建配置。此组件旨在可被破解和扩展。您可以通过重写此类中的
build_xxx
方法将自定义组件注入 RL Modules。请注意,建议为单一用例编写自定义 RL Module。如果您想为不同的 RL Modules 重用相同的 Catalog,修改 Catalog 大多是有意义的。例如,如果您编写了一个自定义编码器并希望将其注入不同的 RL Modules(例如 PPO、DQN 等)。您可以通过修改Catalog._determine_components_hook
来影响确定子组件的决策树。使用示例:
# 定义一个自定义目录
import torch import gymnasium as gym from ray.rllib.core.models.configs import MLPHeadConfig from ray.rllib.core.models.catalog import Catalog class MyCatalog(Catalog): def __init__( self, observation_space: gym.Space, action_space: gym.Space, model_config_dict: dict, ): super().__init__(observation_space, action_space, model_config_dict) self.my_model_config = MLPHeadConfig( hidden_layer_dims=[64, 32], input_dims=[self.observation_space.shape[0]], ) def build_my_head(self, framework: str): return self.my_model_config.build(framework=framework) # With that, RLlib can build and use models from this catalog like this: catalog = MyCatalog(gym.spaces.Box(0, 1), gym.spaces.Box(0, 1), {}) my_head = catalog.build_my_head(framework="torch") # Make a call to the built model. out = my_head(torch.Tensor([[1]]))
方法
使用默认编码器配置初始化一个目录。
构建编码器。
获取动作分布类。
返回适用于给定观测空间的合适预处理器。
返回给定空间的标记器配置。
属性
返回编码器的潜在维度。