多判别器功能 ============================== 有时在一个决策流中,我们希望不同节点可以根据不同判别器给出的分数单独做优化。这时我们需要用到多判别器功能。 例如,在 :doc:`使用 REVIVE SDK 控制 Mujoco-HalfCheetah 运动` 任务中, 我们希望 ``action``, ``delta_x`` 以及 ``next_obs`` 节点分别由不同判别器打分,并且各个节点独立优化各自目标。 下面通过这个示例展示如何在训练时启动该功能。 启动该功能我们需要在 ``config.json`` 中做如下配置: .. code:: json { ... "venv_algo_config": { "revive_p": [ { "name": "matching_nodes", "type": "list", "default": [["obs", "action"], ["obs", "action", "delta_x"], ["obs", "action", "next_obs"]] }, { "name": "matching_fit_nodes", "type": "list", "default": [["action"], ["delta_x"], ["next_obs"]] }, ... ], ... }, ... } "matching_nodes" 代表各个判别器的输入;"matching_fit_nodes" 代表判别器需要打分的节点,同时也是该判别器对应的生成器需要更新的节点。 需要注意,"matching_nodes" 与 "matching_fit_nodes" 的长度需要保持一致,并且顺序上保持对应,比如: ["obs", "action"] 作为 ``action`` 节点的判别器的输入,这个判别器只负责 ``action`` 节点的优化目标。 ["obs", "action", "delta_x"] 作为 ``delta_x`` 节点的判别器的输入,这个判别器只负责 ``delta_x`` 节点的优化目标。 ["obs", "action", "next_obs"] 作为 ``next_obs`` 节点的判别器的输入,这个判别器只负责 ``next_obs`` 节点的优化目标。 .. note:: 默认情况下,决策流图只有一个判别器。