首页 > 解决方案 > 使用自定义 obs 形状时如何指定 conv_filters?

问题描述

我正在使用自定义环境来运行 Ray 的run_experiment功能。

我的观察空间是

spaces.Box(low=-np.finfo(np.float32).max,
           high=np.finfo(np.float32).max,
           shape=(3, 76),
           dtype=np.float16)

输入是一个数组,其中包含三个数组,每个数组包含 76 个项目。像这样的东西:

[[0. 0. 0. ... 0.],
 [0. 0. 0. ... 0.],
 [0. 0. 0. ... 0.]]

当我尝试在未指定的情况下运行我的火车脚本时,conv_filters我收到此错误:

ValueError: No default configuration for obs shape [3, 76], you must specify `conv_filters` manually as a model option. Default configurations are only available for inputs of shape [42, 42, K] and [84, 84, K]. You may alternatively want to use a custom model or preprocessor.

所以我在我的火车脚本中配置它:

"model": {
    "dim": 3,
    "conv_filters": [[3, [1, 1], 1]]
}

但是当我这样做时,我会收到这个:

ValueError: Convolution expects input with rank 4, got 3

顺便说一句,我的输入不是图像,它实际上是时间序列的 3 行,每行有 76 个项目。

我认为我在这条线上错了,"conv_filters": [[3, [1, 1], 1]]但我知道如何解决它,所以我需要帮助......

有没有办法不做卷积?因为我不想在这里丢失信息,这是一个时间序列,每一个小信息都值得。

我做了一个测试,看看自定义 env 是否可以在没有 ray 的情况下工作,并且确实可以。

我很感激任何帮助

标签: conv-neural-networkray

解决方案


您可以通过使用自定义模型选项强制 RLlib 使用完全连接的网络。这是代码中的一个示例:https ://github.com/ray-project/ray/blob/master/rllib/examples/custom_env.py


推荐阅读