Skip to content

尝试多重离散动作的环境,policy收集的数据格式报错 #867

Description

@Nnasan

我用的是自己自定义的env,这是其中action的空间定义
self.action_space = gym.spaces.MultiDiscrete([11, 11] + [2] * 16, dtype=np.uint64))
以及config.policy的里的shape设置是
model=dict(
obs_shape=[4, 96, 96],
action_shape=[11, 11] + [2] * 16,
encoder_hidden_size_list=[128, 128, 512],
),
我不太清楚config里是否是这样定义的,而且在实行的时候遇到了几个疑惑的地方:
1.在实践示例的定义里 有说到“在 config.env 中的键 multi_discrete 应该设置为 True 以使用 MultiDiscreteEnv wrapper” 可是我在源码中并未见到关于multi_discrete 生效的地方 而且MultiDiscreteEnv 的包装器也没见着,如果是直接就是多重离散的动作环境的话,是否需要像示例那样去离散转换到多重离散。
2.在我上述的config设置后 我对环境进行了测试 我发现policy在collect采集数据的阶段 收集到的action类型为list[np.ndarray] 而要求的数据是np.ndarray或list,里面的数据全部被np.ndarray包装了一层,即使我定义的是int64
于是我对policy的收集部分进行了处理 将他的变成了list,关于这一点 我不知道的是,如果是正确的使用的情况下,step接收的应该是这个类型吗,还是其他的?又或者说,是我不应该使用DingEnvWrapper包装它?因为这个部分的类型判断导致程序异常。
3.在2的前提下,修改了收集类型的问题之后,程序正常运行了几轮,但是在eps触发之后,生成的数据维度是错误而且未知的,例如我现在是18维的多重离散,在多次训练中,eps曾生成过32,35的维度数据。
这是我的使用方式有误,还是说多重离散这部分并没有开发完全?求解答

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

envQuestions about RL environment

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions