SubprocVecEnv 无法与自定义环境一起使用(稳定基线 - 健身房)

2023-12-11

我使用gym.Env作为父类创建了一个自定义环境,并且一切都可以很好地运行单核。我已经开始代码如下:

class MyEnv(gym.Env):
....

但是,如果我尝试使用 SubprocVecEnv 使用所有 24 个 CPU 核心来加速学习过程,我会收到以下消息:ValueError:无法将输入数组从形状 (24,24) 广播到形状 (24,1)

我已经测试了 DummyVecEnv 并且它运行良好,但由于此函数不允许多重处理,所以我想使用 SubprocVecEnv,就像我通常使用 Atari/Gym envs 一样。

PS:我的自定义环境非常简单,基本上我使用的是 567 行 4 列的数据集,代理一次访问一行并根据该观察结果预测两个值。观察空间和动作空间如下:

self.observation_space = spaces.Box(low=1, high=1, shape=(1,4), dtype=np.float64)

self.action_space = spaces.Box(low=np.array([0., -1.]), high=np.array([2., 1.]), dtype=np.float64)

我像往常一样使用稳定基线的 PPO2 来训练代理。

我错过了什么重要的事情吗?


对我来说,它与输入“start_method”有关。

默认值为“forkserver”,但在我的机器上它只能与“fork”一起使用

envs= [make_env(env_name, seed) for seed in range(nproc)]

envs = SubprocVecEnv(envs, start_method='fork')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SubprocVecEnv 无法与自定义环境一起使用(稳定基线 - 健身房) 的相关文章

  • 有没有办法检查子进程是否仍在运行?

    我正在启动许多子流程subprocess Popen在Python中 我想检查一个这样的过程是否已经完成 我找到了两种检查子流程状态的方法 但这两种方法似乎都强制该流程完成 一种正在使用process communicate 并打印返回码
  • 子进程 check_output 返回非零退出状态 1

    这是我的Python代码 import subprocess subprocess check output ls shell True stderr subprocess STDOUT import subprocess subproce
  • Python:将 pandas Dataframe 作为参数传递给子进程

    如何使用子进程通过 Spark Submit 将数据帧作为参数发送到 Python 脚本 我已经尝试了下面的代码 但没有成功 因为我们无法连接字符串和对象 def spark submit self test cases email com
  • 捕获子进程输出[重复]

    这个问题在这里已经有答案了 我了解到 在Python中执行命令时 我应该使用子进程 我想要实现的是通过 ffmpeg 对文件进行编码并观察程序输出 直到文件完成 Ffmpeg 将进度记录到 stderr 如果我尝试这样的事情 child s
  • 使用 python 进行实时 mp3 ffmpeg 编码器时出错

    我有如下代码 我想录制声音并将每个 wav 帧转换为 mp3 格式 使用 ffmpeg 实时 import pyaudio sys import subprocess command ffmpeg y f wav i f mp3 proce
  • python 中子进程的替代方案

    我正在尝试编写一个脚本 该脚本必须对一些 bash 命令进行大量调用 解析和处理输出 最后给出一些输出 我正在使用 subprocess Popen 和 subprocess call 如果我理解正确 这些方法会生成一个 bah 进程 运行
  • epsilon 贪婪 q 学习中的 epsilon 和学习率衰减

    我知道 epsilon 标志着探索和利用之间的权衡 一开始 你希望 epsilon 较高 这样你才能取得大的进步并学到东西 当您了解未来的奖励时 epsilon 应该衰减 以便您可以利用您发现的更高的 Q 值 然而 在随机环境中 我们的学习
  • Python Popen().stdout.read() 挂起

    我正在尝试使用 Python 获取另一个脚本的输出subprocess Popen就像下面这样 process Popen command stdout PIPE shell True exitcode process wait outpu
  • 使用强化学习训练神经网络

    我了解前馈神经网络的基础知识 以及如何使用反向传播算法训练它们 但我正在寻找一种可以用于通过强化学习在线训练 ANN 的算法 例如 车杆向上摆动 http www google com search q cart 20pole 20swin
  • 输入到 C++ 可执行 python 子进程

    我有一个 C 可执行文件 其中包含以下代码行 Do some calculations for int i 0 i
  • 具有可变动作的强化学习

    All the 强化学习 http en wikipedia org wiki Reinforcement learning我读过的算法通常应用于具有固定数量操作的单个代理 是否有任何强化学习算法可以在考虑可变数量的动作的同时做出决策 例如
  • 何时使用 subprocess.call() 或 subprocess.Popen(),运行 airodump

    我有这个小脚本 可以将您的无线设备置于监控模式 它执行 airodump 扫描 然后在终止扫描后将输出转储到 file txt 或变量 这样我就可以抓取 BSSID 以及我可能需要的任何其他信息 我觉得我还没有理解两者之间的概念或区别sub
  • 使用Python C API时如何中断Windows上的Python子进程?

    我可以用以下命令中断 Windows 中的子进程 import ctypes ctypes windll kernel32 GenerateConsoleCtrlEvent 1 proc pid 但前提是我通过正常的 Python 进程运行
  • 从需要 stdin 的子进程实时打印 stdout

    这是后续这个问题 https stackoverflow com questions 17395243 printing stdout in realtime from subprocess 但如果我想传递一个参数stdin to subp
  • 与 Python 中的另一个命令行程序交互

    我需要编写一个 Python 脚本 它可以运行另一个命令行程序并与其标准输入和标准输出流交互 本质上 Python 脚本将从目标命令行程序中读取数据 通过写入其 stdin 进行智能响应 然后再次从程序中读取结果 它会重复执行此操作 我查看
  • subprocess.Popen args 参数的最大长度是多少?

    我在用Popen http docs python org library subprocess html using the subprocess modulesubprocess 模块中的函数来执行命令行工具 subprocess Po
  • subprocess.Popen('start') 失败

    在 python 中运行此命令将导致 WindowsError 指出找不到指定的文件 FAILS import subprocess subprocess Popen start notepad exe 在命令窗口中 它可以工作 start
  • 在 Java 中获取并存储子进程的输出

    我正在做一些需要我开始子处理 命令提示符 并在其上执行一些命令的事情 我需要从子进程获取输出并将其存储在文件或字符串中 这是我到目前为止所做的 但它不起作用 public static void main String args try R
  • 在 python 3 中使用子进程

    我使用 subprocess 模块在 python 3 中运行 shell 命令 这是我的代码 import subprocess filename somename py in practical i m using a real fil
  • Python、subprocess、call()、check_call 和 returncode 来查找命令是否存在

    我已经弄清楚如何使用 call 让我的 python 脚本运行命令 import subprocess mycommandline lumberjack sleep all night work all day subprocess cal

随机推荐

  • R data.table 按名称进行多列转换[重复]

    这个问题在这里已经有答案了 设 DT 为数据表 DT lt data table V1 factor 1 10 V2 factor 1 10 V9 factor 1 10 是否有更好 更简单的方法来进行多列因子转换 如下所示 DT Vn1
  • 简写“index >= 0 && count++”有什么作用?

    我正在消磨时间阅读下划线 字符串函数 当我发现这个奇怪的简写时 function count str substr var count 0 index for var i 0 i lt str length index str indexO
  • 这种初始化方法有什么区别?

    这两个代码有什么区别 class SomeClass SomeType val new SomeType and class SomeClass SomeType val SomeClass val new SomeType 哪种方法是首选
  • R 闪亮的 RODBC 连接失败

    我有一个可以在本地运行的 R 闪亮应用程序 但是当我上传它时 出现错误 first argument is not an open RODBC channel 这是我的代码 conn lt suppressWarnings odbcDriv
  • C 计算字符串中某个字符出现的次数

    我是 C 新手 我正在自己工作explode像函数一样 我正在尝试计算指定字符在字符串中出现的次数 int count chars char string char chr int count 0 int i for i 0 i lt si
  • 如何使用selenium python点击谷歌上的第一个结果

    我正在尝试点击谷歌结果上的第一个结果 这是我的代码 我在其中输入从 csv 文件读取的 chennai craiglist 所以我确信有机结果中的第一个链接将是 chennai craiglist org 但我很安静 不知道该怎么做 fro
  • 如何用awk合并两个文件?

    我有两个文件的顺序相同 并且行数相同 file1 仅2列 562 201 RIR1 562 202 RIR1 562 203 RIR1 562 204 RIR1 562 205 RIR1 562 206 RIR1 562 207 RIR1
  • 库未在 Python 中初始化(pygame)

    所以我有一个在类函数中创建的字体 我在代码中多次调用这个函数并且它运行得很好 但是有一次当我调用它时它说 self font pygame font Font None self text size RuntimeError Library
  • UWP 项目中的条件包引用

    我想使用一个 NuGet 包仅用于调试配置 我found如果我有一个针对 Creators Update 15063 的 UWP 项目 则可以在 Visual Studio 2017 中执行此操作
  • Odoo 规则实际上运行正常吗?

    我的目的 我试图使用安全规则来实现以下目的 我需要在用户模型中添加一个字段 该字段将设置每个用户可以修改哪些仓库 这是因为我想隐藏您不允许看到的库存变动 其他仓库的库存变动 我做了什么 我创建了一个多对多字段命名allowed wareho
  • Bootstrap 工具提示不起作用

    我在这里要疯了 我有以下 HTML a href title A nice tooltip test a 而且Bootstrap风格的工具提示拒绝显示 只是一个普通的工具提示 我的 bootstrap css 工作得很好 我可以看到其中的类
  • c++11 如何实现`std::string ToString(std::tuple &t)`?

    我想要一个非常友好的ToString许多类型的函数 包括std tuple 函数是这样的 template
  • 绘制 100% 堆叠图问题

    我得到了一个数据框 df5 其中包含我从 read csv 读取的下表 Week Days Category Total Products Sold Total Profit 0 Monday A 3221 9999 53 0 Monday
  • 32 位 .NET 最大字节数组大小是否 < 2GB?

    我一直在研究一些与字节数组的最大大小相关的问题 here and here 并一直在玩一些数组并得到一些我不太明白的结果 我的代码如下 byte myByteArr byte myByteArr2 new byte 671084476 fo
  • 多个 WebClient 不工作?

    我正在尝试使用三个单独的 WebClient 下载三个文件 我用这个 void client1 OpenReadCompleted object sender OpenReadCompletedEventArgs e MessageBox
  • 如何搜索哈希表?

    我刚刚开始学习哈希表 我了解如何插入但不知道如何搜索 这些是我将基于这个问题的算法 散列密钥 int Hash int key return key 10 table has a max size of 10 用于解决碰撞的线性探测 假设我
  • 在 Laravel 中显示输入数组的验证错误

    我正在向我的控制器提交一组输入 如下所示
  • 使用 JsonObjectRequest 和 GET 请求发送 JSON 正文

    我需要通过 get 方法发送 json 代码 我尝试通过 JsonObjectRequest 发送方法 url 和参数 响应为 null 并且未发送 json JSONObject request new JSONObject try re
  • Hibernate 查询中的 Unicode 字符串

    在 SQL 中 我们可以编写一个查询来搜索人名 如下所示 SELECT FROM Person P WHERE P Name LIKE N ike 该查询将使用 unicode 字符运行 假设名称列和数据库设置为处理 unicode 支持
  • SubprocVecEnv 无法与自定义环境一起使用(稳定基线 - 健身房)

    我使用gym Env作为父类创建了一个自定义环境 并且一切都可以很好地运行单核 我已经开始代码如下 class MyEnv gym Env 但是 如果我尝试使用 SubprocVecEnv 使用所有 24 个 CPU 核心来加速学习过程 我