gym注册customer env 报错:Attempted to register malformed environment ID:My_env

news/2024/5/19 0:32:01 标签: gym, 强化学习, envs

跟随着gym的教程,准备把自己写的环境注册在gymenvs上面,
过程如下:

第⼀步,将我们⾃⼰的环境⽂件(笔者创建的⽂件名为 Myenv.py,类名为ReEnv )
拷⻉到你的gym安装⽬录/gym/envs/classic_control⽂件夹中(拷⻉在此
⽂件夹中是因为要使⽤rendering模块。当然本⽅法并不是唯⼀的,也可以
采⽤其他办法。)。
第⼆步,打开该⽂件夹(第⼀步中的⽂件夹)下的__init__.py⽂件,
在⽂件末尾加⼊语句:

from gym.envs.classic_control.Myenv import ReEnv 

第三步,进⼊⽂件夹的gym安装⽬录/gym/gym/envs,打开该⽂件夹下
的__init__.py⽂件,添加代码:

register(
    id='My_env',
    entry_point='gym.envs.classic_control:ReEnv ',
)

反复对比官方文档发现并无纰漏,但是仍然import gym就报错:

Error: Attempted to register malformed environment ID: My_env. (Currently all IDs must be of the form ^(?:[\w:-]+\/)?([\w:.-]+)-v(\d+)$.)

后来经过一顿琢磨:
register这个id可以随便写,但是要注意的是,id中最后要带 -v() 括号里为数值,满足此格式才行,最终改为:

register(
    id='My_env-v0',
    entry_point='gym.envs.classic_control:ReEnv ',
)

成功!

此时又发现一个问题:
比如,注册一个环境是报错:

Error: Attempted to register malformed environment ID: My_env. (Currently all IDs must be of the form ^(?:[\w:-]+\/)?([\w:.-]+)-v(\d+)$.)

将注册相关代码注释掉,不重启控制台的话,会报错:

Error: Cannot re-register id: Copy-v0

其中Copy-v0是gym源码中默认的第一个环境,此时需要重启控制台,即可
这个问题反映了,对于python的一个包来说,一次import,后续再在控制台import 同名包,则实际不会将新改动的同名包加载进入内存,还是旧包,所以改动包的源码后,需要重启或打开新的控制台来导入


http://www.niftyadmin.cn/n/1690483.html

相关文章

如何查询期刊名称的英文缩写

在 Web of Science 网站 (网址为:http://apps.webofknowledge.com/)输入所要查询期刊的英文全称,如: 选择“出版物名称”选项,点击“检索”。选择该期刊中的任意一篇文章,并进入。找到“期刊信息…

更新tensorflow后应用tensorboard报错

更新tensorflow后,出现tensorboard 不可用情况(tensorflow-cpu 1.4 ->tensorflow-gpu 1.7) 尝试了更新tensorboard 仍然不可用,事故情况: 运行tensorboard.exe报错并且闪退,在控制台运行tensorboard命…

Android Studio实现内容丰富的安卓宿舍管理平台

如需源码可以添加q-------3290510686,也有演示视频演示具体功能,源码不免费,尊重创作,尊重劳动。 项目编号086 1.开发环境 android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端: 1.注册登录 2.查看公告 3.报…

关于tensorflow-gpu的程序用spyder运行后,控制台报错: Kernel died, restarting的解决方法

问题: 安装tensorflow-gpu以及cuda和cudnn以后,运行原先cpu版时可行的代码,spyder的控制台报错 Kernel died, restarting 原因: 我尝试通过 python xxx.py的方式运行代码文件,发现报错如下: 这里圈起来的…

Pytorch中的 AdaptivePooling

AdaptivePooling是只出现在Pytoch中的池化方法,官方给出的[运算公式]为:(https://discuss.pytorch.org/t/what-is-adaptiveavgpool2d/26897) kernel的大小为 (input_sizetarget_size-1) // target_size, i.e. rounded up(即四舍五入&#xff…

剑指offer:二叉树中和为某一值的路径,本人改变了原题目要求

原题: 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 改编版: 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点…

2020秋招腾讯机器视觉算法岗第一题

题目要求: 小Q有N个数字,每次任选两个不同的数字,同时删除,问是否可以删完? 代码: if __name__"__main__":numinput()numint(num)lists[]for i in range(num):sub_numinput()sub_listinput()sub…

经典问题:Top-K (转载)

TopK,是问得比较多的几个问题之一,到底有几种方法,这些方案里蕴含的优化思路究竟是怎么样的,今天和大家聊一聊。 问题描述: 从arr[1, n]这n个数中,找出最大的k个数,这就是经典的TopK问题。 栗…