-
Notifications
You must be signed in to change notification settings - Fork 409
Description
我用的是自己自定义的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的维度数据。
这是我的使用方式有误,还是说多重离散这部分并没有开发完全?求解答