我对 OpenAi 健身房完全陌生,我刚刚安装了健身房,然后尝试为其创建环境,
env = gym.make('MsPacman-v0')所以我收到以下错误:
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
<ipython-input-21-e04adf623175> in <module>
----> 1 env = gym.make('MsPacman-v0')
~\Anaconda3\envs\env_project\lib\site-packages\gym\envs\registration.py in make(id, **kwargs)
~\Anaconda3\envs\env_project\lib\site-packages\gym\envs\registration.py in make(self, path, **kwargs)
~\Anaconda3\envs\env_project\lib\site-packages\gym\envs\registration.py in make(self, **kwargs)
~\Anaconda3\envs\env_project\lib\site-packages\gym\envs\atari\atari_env.py in __init__(self, game,
mode, difficulty, obs_type, frameskip, repeat_action_probability, full_action_space)
~\Anaconda3\envs\env_project\lib\site-packages\atari_py\games.py in get_game_path(game_name)
18 path = os.path.join(_games_dir, game_name) + ".bin"
19 if not os.path.exists(path):
---> 20 raise Exception('ROM is missing for %s, see https://github.com/openai/atari-py#roms
for instructions' % (game_name,))
21 return path
22
Exception: ROM is …Run Code Online (Sandbox Code Playgroud) python machine-learning reinforcement-learning jupyter-notebook openai-gym
我能找到的大多数材料(例如,David Silver 的在线课程)都提供了有关监督学习和强化学习之间关系的讨论。然而,它实际上是监督学习和在线强化学习之间的比较,在在线强化学习中,代理在环境中运行(或模拟交互),以在有关底层动态的有限知识的情况下获得反馈。
我对离线(批量)强化学习更好奇,其中数据集(收集的学习经验)是先验的。那么与监督学习相比有什么区别呢?他们有哪些相似之处?
我想在 PPO 模型的整个训练过程中逐渐减小 Clip_range(epsilon、探索与利用参数)。
\n我尝试简单地运行“model.clip_range = new_value”,但这不起作用。
\n在此处的文档中,它说“clip_range (Union[float, Callable[[float], float]]) \xe2\x80\x93 剪辑参数,它可以是当前剩余进度的函数(从1到0)。 ”
\n有谁知道如何在训练期间实际更改此参数,或者如何输入“当前剩余进度的函数”?
\n我正在使用 RL 编写自动驾驶代码。我正在使用稳定的基线3和开放的人工智能健身房环境。我在 jupyter 笔记本中运行以下代码,但出现以下错误:
# Testing our model
episodes = 5 # test the environment 5 times
for episodes in range(1,episodes+1): # looping through each episodes
bs = env.reset() # observation space
# Taking the obs and passing it through our model
# tells that which kind of the action is best for our work
done = False
score = 0
while not done:
env.render()
action, _ = model.predict(obs) # now using model here # returns model action and …Run Code Online (Sandbox Code Playgroud) 我想知道如何在不提供训练值的情况下训练神经网络.我的前提是神经网络将用于可以从传感器接收正/负反馈的机器人.IE,为了训练它自由地漫游而不碰到东西,当没有触发碰撞传感器或接近传感器时会发生正反馈.当碰撞/接近传感器被触发时发生负反馈.如何使用这种方法训练神经网络?
我是用C++写的
我正在阅读 Sutton & Barto 的Reinforcement Learning: An Introduction 的第 2 章第 7 节,其中涉及多臂老虎机问题中的梯度方法。(我意识到第 2 版是草稿,似乎各节移动了一点,但我的文件有 2.7 节标题为“梯度强盗”。)我设法使用 2.3-2.5 节中的方法没有问题,但我一直使用令人费解的梯度方法获得结果。我将遍历我的代码并展示一个示例。
只是在这里初始化一切:
import random
import math
import numpy as np, numpy.random
# number of arms (k) and step-size (alpha)
k = 10
alpha = 0.1
# initialize preference function (H), and reward distribution (R)
H = {i: 0 for i in range(k)}
R = {i: [random.uniform(-100,100), 1] for i in range(k)}
Run Code Online (Sandbox Code Playgroud)
我使用固定奖励分布,我使用字典来表示这些分布。我假设每个奖励都由高斯描述,因此我使用以下函数将操作映射到奖励:
def getReward(action, rewardDistribution):
return random.gauss(rewardDistribution[action][0], rewardDistribution[action][1])
Run Code Online (Sandbox Code Playgroud)
所谓的“偏好函数” H …
python machine-learning reinforcement-learning gradient-descent
我尝试通过自己的q学习实现来解决aigym山地车问题。
在尝试了不同的方法之后,它开始确实很好地工作,但是过了一会儿(20k集*每集1000个样本),我注意到我存储在Q表中的值变大了,因此它存储了-inf值。
在仿真过程中,我习惯于以下代码:
for t in range(SAMPLE_PER_EPISODE):
observation, reward, done, info = env.step(action)
R[state, action] = reward
history.append((state,action,reward))
max_indexes = np.argwhere(Q[state,] == np.amax(Q[state,])).flatten()
action = np.random.choice(max_indexes)
Run Code Online (Sandbox Code Playgroud)
为了学习,我在每一集之后都使用了以下代码:
#train
latest_best = 0
total_reward = 0
for entry in reversed(history):
Q[entry[0],entry[1]] = Q[entry[0],entry[1]] + lr * (entry[2] + latest_best * gamma)
latest_best = np.max(Q[entry[0],:])
total_reward += entry[2]
Run Code Online (Sandbox Code Playgroud)
使用该算法我获得了很好的结果,但是问题是-如上文所述-Q值的确很快达到了-inf
我认为我错误地实现了Q算法,但是将其更改为以下实现之后,它不再起作用(几乎和以前一样好):
#train
latest_best = 0
total_reward = 0
for entry in reversed(history):
# Here I changed the code
Q[entry[0],entry[1]] = Q[entry[0],entry[1]] + …Run Code Online (Sandbox Code Playgroud) 在强化学习中,是否有算法的名称,其中所采取的行动不会影响状态?例如武装匪徒
我目前正在阅读Sudharsan Ravichandiran撰写的Python动手强化学习,在第一个例子中,我遇到了这个AttributeError:
AttributeError 'TimeLimit' object has no attribute 'P'
由以下行引发:
for next_sr in env.P[state][action]:
Run Code Online (Sandbox Code Playgroud)
我找不到有关env.P的任何文档,但在这里找到了用python2编写的类似示例:https : //gym.openai.com/evaluations/eval_48sirBRSRAapMjotYzjb6w/
我想env.P是一个过时的库的一部分(即使这本书于2018年6月出版,并且隐含的代码在python3中),那么我该如何替换呢?
我不确定Tensorflow是否可行,我担心我可能不得不切换到PyTorch。
基本上,我有这层:
self.policy_conv1 = tf.layers.conv2d(inputs=self.policy_s, filters=16, kernel_size=(8,8),strides=(4,4), padding = 'valid',activation=tf.nn.relu, kernel_initializer=tf.glorot_uniform_initializer, bias_initializer = tf.glorot_uniform_initializer)
Run Code Online (Sandbox Code Playgroud)
我正在尝试每训练约100次迭代将其复制到另一层:
self.eval_conv1 = tf.layers.conv2d(inputs=self.s, filters=16, kernel_size=(8,8),strides=(4,4), padding = 'valid', activation=tf.nn.relu, kernel_initializer=tf.glorot_uniform_initializer, bias_initializer = tf.glorot_uniform_initializer)
Run Code Online (Sandbox Code Playgroud)
tf.assign 似乎不是正确的工具,并且以下内容似乎无效:
self.policy_conv1 = tf.stop_gradient(tf.identity(self.eval_conv1))
Run Code Online (Sandbox Code Playgroud)
本质上,我希望将其遍历eval conv层复制到policy conv层,并且不要在每次图形运行一个变量或另一个变量时将它们绑在一起(这与上面的身份代码段一起发生)。如果有人可以指出所需的代码,我将不胜感激。
python reinforcement-learning conv-neural-network tensorflow