我已经安装了 OpenAIgym和 ATARI 环境。我知道我可以在文档中找到所有 ATARI 游戏,但是有没有办法在 Python 中执行此操作,而无需打印任何其他环境(例如,不是经典的控制环境)
artificial-intelligence reinforcement-learning deep-learning openai-gym
问题是关于普通的非批量强化学习。基本上是被定义在这里在萨顿的书。我的模型训练,(呜呜!)虽然有一个元素让我感到困惑。
背景:
在持续时间得到奖励的环境中(如极点平衡),我们每一步有(比如)1 个奖励。在一集之后,在将这个 1 数组发送到训练步骤之前,我们进行标准折扣和标准化以获得回报:
returns = self.discount_rewards(rewards)
returns = (returns - np.mean(returns)) / (np.std(returns) + 1e-10) // usual normalization
Run Code Online (Sandbox Code Playgroud)
折扣奖励是常用的方法,但如果好奇,这里是要点。
所以奖励数组 [1,1,1,1,1,1,1,1,1] 变成了回报数组 [1.539, 1.160, 0.777, 0.392, 0.006, -0.382, -0.773, -1.164, - 1.556]。
鉴于基本背景,我可以问我的问题:
如果强制执行正回报,不鼓励负回报(在优化步骤中),那么无论情节的长度如何,大约前半部分的行动将被鼓励,后半部分将被阻止。这是真的,还是我误解了什么?
如果它不是真的,很想了解我做错了什么。
如果这是真的,那么我不明白为什么模型会训练,因为即使是表现良好的剧集也会阻止其后半部分的动作。
重申一下,这是非批量学习(因此回报与训练步骤中另一个情节的回报无关)。每一集之后,模型都会训练,而且训练得很好:)
希望这是有道理的,并且足够短,感觉像是一个适当的明确问题。
我正在学习机器人强化学习中采用的方法,并遇到了进化策略的概念。但我无法理解 RL 和 ES 有何不同。谁能解释一下?
robotics reinforcement-learning evolutionary-algorithm deep-learning
我尝试按照本文档的建议设置“export OPENBLAS_NUM_THREADS=1” 。但我发现一个奇怪的现象,设置这个会显着损害我的 RL 算法的性能(我对 TD3 和 SAC 做了一些测试,所有结果一致表明“导出 OPENBLAS_NUM_THREADS=1”会损害性能)。为什么会造成这么大的问题呢?
顺便说一句,算法是使用 Tensorflow1.13 实现的,数据通过tf.data.Dataset输入神经网络。所有测试均在OpenAI Gym 的BipedalWalker-v2环境中完成。
python multithreading reinforcement-learning openblas tensorflow
我正在使用网站上的版本来指导他解决问题,但我有问题:对于 maxQ,我是否使用新状态(s')的所有 Q 表值来计算最大奖励 - 在我的情况下有 4 种可能动作(a'),每个动作都有各自的值,或者是采取动作(a')时所有位置的Q表值的总和?
换句话说,我是使用我可以采取的所有可能操作中的最高 Q 值,还是使用所有“相邻”方块的 Q 值之和?
有人知道我们可以设置游戏初始状态的任何 OpenAI Gym 环境吗?例如,我发现 MountainCarContinuous-v0 可以做这样的事情,以便我们可以选择汽车启动的时间点。但是,我正在寻找另一个更复杂的环境。在此先感谢您的帮助!
我有以下用于训练 A3C 的训练函数代码。我陷入了以下错误。
RuntimeError("grad can be implicitly created only for scalar outputs")
Run Code Online (Sandbox Code Playgroud)
在线(policy_loss + 0.5 * value_loss).backward()
这是我的代码,有人可以帮忙检查一下这段代码有什么问题吗?
def train(rank, params, shared_model, optimizer,ticker):
torch.manual_seed(params.seed + rank) # shifting the seed with rank to asynchronize each training agent
print(ticker)
try:
ohlcv = pd.read_csv(ticker + '.csv')
data = ohlcv.copy()
data['rsi'] = ab.RSI(data['Close'],14)
data['adx'] = ab.ADX(data,20)
data = ab.BollBnd(data,20)
data['BBr'] = data['Close']/data['BB_dn']
data['macd_signal'] = ab.MACD(data)
data['macd_r'] = data['macd_signal']/data['Close']
data['ema20'] = ab.EMA(np.asarray(data['Close']), 20)
data['ema20_r'] = data['ema20']/data['Close']
data['Close'] = data['Close']/data['Close'].max()
data = data.iloc[:,[4,7,8,13,15,17]]
data …Run Code Online (Sandbox Code Playgroud) 我可以在 Colab 中做什么来使用 OPENAI-gym 的环境“LunarLander-v2”。我已经安装了BOX2D和box2d-py但总是返回相同的错误:
AttributeError: module 'gym.envs.box2d' has no attribute 'LunarLander'
Run Code Online (Sandbox Code Playgroud)
这段话在我的本地机器上有效,但在 Colab 上不行。有什么解决办法吗?
版本:Python:3.6 - 健身房:0.17.2 - BOX2D:2.3.10
reinforcement-learning python-3.x openai-gym google-colaboratory
使用ray进行分布式计算时,所有服务器都是无头的(无显示)。因此,使用“xvfb-run -s \xe2\x80\x9c-screen 0 1400x900x24\xe2\x80\x9d”来创建 screen.
\n出现错误\npyglet.canvas.xlib.NoSuchDisplayException:无法连接到\xe2\x80\x9cNone\xe2\x80\x9d
\n如果没有光线,仅使用 1 台机器,此命令可以完美运行。\n"xvfb-run -s \xe2\x80\x9c-screen 0 1400x900x24\xe2\x80\x9d
\n总之,xvfb-run 不适用于光线分布。
\nRay 是否需要额外的配置才能实现这一点?还有其他方法可以克服这个错误吗?我正在开发开放健身房人工智能的赛车环境,它会触发渲染。
\n我尝试运行以下代码来测试 HalfCheetah-v2 环境:
import gym
env = gym.make('HalfCheetah-v2')
Run Code Online (Sandbox Code Playgroud)
但这给了我以下错误:ModuleNotFoundError:没有名为“mujoco_py”的模块
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
env = gym.make('HalfCheetah-v2')
File "C:\Users\Amine\AppData\Roaming\Python\Python36\site-packages\gym\envs\registration.py", line 145, in make
return registry.make(id, **kwargs)
File "C:\Users\Amine\AppData\Roaming\Python\Python36\site-packages\gym\envs\registration.py", line 90, in make
env = spec.make(**kwargs)
File "C:\Users\Amine\AppData\Roaming\Python\Python36\site-packages\gym\envs\registration.py", line 59, in make
cls = load(self.entry_point)
File "C:\Users\Amine\AppData\Roaming\Python\Python36\site-packages\gym\envs\registration.py", line 18, in load
mod = importlib.import_module(mod_name)
File "C:\Program Files\Python36\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File …Run Code Online (Sandbox Code Playgroud) openai-gym ×5
python ×3
tensorflow ×2
c++ ×1
mujoco ×1
openblas ×1
python-3.x ×1
pytorch ×1
q-learning ×1
ray ×1
robotics ×1
serve ×1