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

了解稳定基线中的自定义政策3

如何解决了解稳定基线中的自定义政策3

我试图从这个 doc page 中了解 stable-baselines3 中的策略网络。

  1. this 示例中所述,要指定自定义 CNN 特征提取,我们扩展 BaseFeaturesExtractor 类并在 policy_kwarg.features_extractor_class 中使用第一个参数指定它CnnPolicy

    model = PPO("CnnPolicy","BreakoutNoFrameskip-v4",policy_kwargs=policy_kwargs)
    

    Q1.我们可以对自定义 MLP 特征提取采用相同的方法吗?

  2. this 示例中所述,要指定自定义 MLP 特征提取,我们扩展 ActorCriticPolicy 类和 override _build_mlp_extractor() 和将其作为第一个参数传递:

    class CustomActorCriticPolicy(ActorCriticPolicy): ...
    model = PPO(CustomActorCriticPolicy,"CartPole-v1",verbose=1)
    

    Q2.我们可以对自定义 CNN 特征提取采用相同的方法吗?

  3. 我觉得我们可以使用 CNN 提取器或 MLP 提取器。因此,将 MlpPolicy 作为第一个参数传递给模型,然后在 policy_kwarg.features_extractor_class 中指定 CNN 特征提取器是没有意义的,如 this 示例。这导致以下政策(包含 features_extractormlp_extractor),我认为这是不正确的:

    ActorCriticPolicy(
      (features_extractor): Net(
        (conv1): Conv2d(1,32,kernel_size=(3,3),stride=(1,1))
        (conv2): Conv2d(32,64,1))
        (fc3): Linear(in_features=384,out_features=512,bias=True)
      )
      (mlp_extractor): MlpExtractor(
        (shared_net): Sequential(
          (0): Linear(in_features=512,out_features=64,bias=True)
          (1): ReLU()
        )
        (policy_net): Sequential(
          (0): Linear(in_features=64,out_features=32,bias=True)
          (1): ReLU()
          (2): Linear(in_features=32,out_features=16,bias=True)
          (3): ReLU()
        )
        (value_net): Sequential(
          (0): Linear(in_features=64,bias=True)
          (3): ReLU()
        )
      )
      (action_net): Linear(in_features=16,out_features=7,bias=True)
      (value_net): Linear(in_features=16,out_features=1,bias=True)
    )  
    

    Q3.我的这种理解是否正确?如果是,那么是否忽略了 MLP 或 CNN 特征提取器之一?

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