conv-neural-network - 使用自定义 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 的情况下工作,并且确实可以。
我很感激任何帮助
解决方案
您可以通过使用自定义模型选项强制 RLlib 使用完全连接的网络。这是代码中的一个示例:https ://github.com/ray-project/ray/blob/master/rllib/examples/custom_env.py
推荐阅读
- python - WSL2 Docker Flask 容器未连接
- node.js - 打字机。通过日期查询时仅使用日期部分并排除时间戳部分
- c# - 即使数字只有一位小数,也要添加两位小数(C#)
- c++ - image.channels() 在 opencv c++ 中没有正确计算 2 通道 tif 图像
- android - 共享元素转换根本不起作用?
- reactjs - 说明:通常,变量在函数退出时“消失”,但状态变量由 React 保留
- c++ - 在 C++ 中,fgets() 函数不起作用
- linux - gfortran 将 c 库与 conda 链接
- python - Pytorch 模型以 99% 的验证准确率进行训练,但在预测期间仅预测一个类别
- python - 深度优先搜索算法跳过迷宫中的空间?