标签: stable-baselines

如何将经过训练的 TF1 protobuf 模型加载到 TF2 中?

更新:这是 tensorflow 中的一个错误。在此处跟踪进度。

我已经使用稳定基线创建并训练了一个模型,该模型使用 Tensorflow 1。现在我需要在我只能访问 Tensorflow 2 或 PyTorch 的环境中使用这个训练模型。我想我会使用 Tensorflow 2,因为文档说我应该能够加载使用 Tensorflow 1 创建的模型。

我可以在 Tensorflow 1 中毫无问题地加载 pb 文件

global_session = tf.Session()

with global_session.as_default():
    model_loaded = tf.saved_model.load_v2('tensorflow_model')
    model_loaded = model_loaded.signatures['serving_default']

init = tf.global_variables_initializer()
global_session.run(init)
Run Code Online (Sandbox Code Playgroud)

但是在 Tensorflow 2 中,我收到以下错误

can_be_imported = tf.saved_model.contains_saved_model('tensorflow_model')
assert(can_be_imported)
model_loaded = tf.saved_model.load('tensorflow_model/')

ValueError: Node 'loss/gradients/model/batch_normalization_3/FusedBatchNormV3_1_grad/FusedBatchNormGradV3' has an _output_shapes attribute inconsistent with the GraphDef for output #3: Dimension 0 in both shapes must be equal, but are 0 …
Run Code Online (Sandbox Code Playgroud)

tensorflow tensorflow2.0 stable-baselines

9
推荐指数
1
解决办法
1948
查看次数

Stable Baselines3 RuntimeError:mat1 和 mat2 必须具有相同的 dtype

我正在尝试在 Stable Baselines3 中使用自定义环境实现 SAC,但我不断收到标题中的错误。任何非策略算法都会发生该错误,而不仅仅是 SAC。

追溯:

File "<MY PROJECT PATH>\src\main.py", line 70, in <module>
  main()
File "<MY PROJECT PATH>\src\main.py", line 66, in main
  model.learn(total_timesteps=timesteps, reset_num_timesteps=False, tb_log_name=f"sac_{num_cars}_cars")
File "<MY PROJECT PATH>\venv\lib\site-packages\stable_baselines3\sac\sac.py", line 309, in learn
  return super().learn(
File "<MY PROJECT PATH>\venv\lib\site-packages\stable_baselines3\common\off_policy_algorithm.py", line 375, in learn
  self.train(batch_size=self.batch_size, gradient_steps=gradient_steps)
File "<MY PROJECT PATH>\venv\lib\site-packages\stable_baselines3\sac\sac.py", line 256, in train
  current_q_values = self.critic(replay_data.observations, replay_data.actions)
File "<MY PROJECT PATH>\venv\lib\site-packages\torch\nn\modules\module.py", line 1190, in _call_impl
  return forward_call(*input, **kwargs)
File "<MY PROJECT PATH>\venv\lib\site-packages\stable_baselines3\common\policies.py", line 885, in forward
  return tuple(q_net(qvalue_input) …
Run Code Online (Sandbox Code Playgroud)

python openai-gym pytorch stable-baselines

9
推荐指数
1
解决办法
2万
查看次数

稳定基线3库中的“确定性= True”是什么意思?

我正在尝试将稳定基线3库https://stable-baselines3.readthedocs.io/en/master/中的 PPO 算法应用到我制作的自定义环境中。

我不明白的一件事是下面这一行:

mean_reward, std_reward = evaluate_policy(model, env, n_eval_episodes=10, deterministic=True)
Run Code Online (Sandbox Code Playgroud)

我应该始终让确定性等于 True 吗?当我保持确定性=“真”时,我的自定义环境“以某种方式”总是得到解决(即总是返回 1 +/- 0 标准的奖励)。

当我将其更改为“False”时,它开始以合理的方式表现(即有时会成功(奖励=1),有时会失败(奖励=0)。

reinforcement-learning python-3.x stable-baselines

8
推荐指数
1
解决办法
4143
查看次数

如何在稳定基线3中获得action_propability()

我刚刚开始自学具有稳定基线 3 的强化学习。我的长期目标是训练代理玩特定的回合制棋盘游戏。不过,目前我对新事物感到非常不知所措。

我已经实现了一个健身房环境,我可以用它来手动玩游戏或让它选择随机动作。

目前,我一直在尝试让一个模型根据观察结果向我提供行动。我的环境的动作空间是一个DiscreteSpace(256). 我创建的模型的环境为model = PPO('MlpPolicy', env, verbose=1)。当我稍后打电话时,model.predict(observation)我确实收到了一个看起来像是一个动作的号码。当重复运行时,我得到不同的数字,我认为这在未经训练的模型上是预期的。

不幸的是,在我的游戏中,大多数行为在大多数州都是非法的,我想过滤它们并选择最好的合法行为。或者简单地转储所有操作的输出结果,以了解正在发生的情况。

在浏览其他人的代码时,我看到了对model.action_probability(observation). 不幸的是,据我所知,该方法不是稳定基线 3 的一部分。从稳定基线 2 迁移到 v3 的指南仅提到它尚未实现 [ 1 ]。

你能给我一个关于如何继续的提示吗?

python stable-baselines

7
推荐指数
1
解决办法
2022
查看次数

稳定基线 3 参数 Logits 具有无效值

我试图在体育比赛中运行稳定的基线,但不断收到以下错误

Traceback (most recent call last):
  File "/home/dev/Desktop/Projects/AI/NBA2/stable_baselines_run.py", line 35, in <module>
    model.learn(total_timesteps=10000)
  File "/home/dev/anaconda3/envs/sb/lib/python3.9/site-packages/stable_baselines3/a2c/a2c.py", line 189, in learn
    return super(A2C, self).learn(
  File "/home/dev/anaconda3/envs/sb/lib/python3.9/site-packages/stable_baselines3/common/on_policy_algorithm.py", line 234, in learn
    continue_training = self.collect_rollouts(self.env, callback, self.rollout_buffer, n_rollout_steps=self.n_steps)
  File "/home/dev/anaconda3/envs/sb/lib/python3.9/site-packages/stable_baselines3/common/on_policy_algorithm.py", line 166, in collect_rollouts
    actions, values, log_probs = self.policy.forward(obs_tensor)
  File "/home/dev/anaconda3/envs/sb/lib/python3.9/site-packages/stable_baselines3/common/policies.py", line 566, in forward
    distribution = self._get_action_dist_from_latent(latent_pi, latent_sde=latent_sde)
  File "/home/dev/anaconda3/envs/sb/lib/python3.9/site-packages/stable_baselines3/common/policies.py", line 607, in _get_action_dist_from_latent
    return self.action_dist.proba_distribution(action_logits=mean_actions)
  File "/home/dev/anaconda3/envs/sb/lib/python3.9/site-packages/stable_baselines3/common/distributions.py", line 326, in proba_distribution
    self.distribution = [Categorical(logits=split) for split in th.split(action_logits, tuple(self.action_dims), dim=1)]
  File "/home/dev/anaconda3/envs/sb/lib/python3.9/site-packages/stable_baselines3/common/distributions.py", …
Run Code Online (Sandbox Code Playgroud)

python artificial-intelligence reinforcement-learning stable-baselines

7
推荐指数
1
解决办法
3122
查看次数

稳定基线3日志奖励

如何使用自定义环境将奖励添加到 Stable Baselines3 中的张量板日志记录中?

我有这个学习代码

model = PPO(
    "MlpPolicy", env,
    learning_rate=1e-4,
    policy_kwargs=policy_kwargs,
    verbose=1,
    tensorboard_log="./tensorboard/")
Run Code Online (Sandbox Code Playgroud)

python logging reinforcement-learning tensorboard stable-baselines

7
推荐指数
1
解决办法
5380
查看次数

为什么稳定基线 3 中的多处理速度较慢?

我以 Stable Baselines 3 的多处理示例为例,一切都很好。 https://colab.research.google.com/github/Stable-Baselines-Team/rl-colab-notebooks/blob/sb3/multiprocessing_rl.ipynb#scrollTo=pUWGZp3i9wyf

多处理训练比 num_cpu=4 的单处理训练花费的时间大约少 3.6 倍。

但是,当我尝试使用 PPO 代替 A3C,使用 BipedalWalker-v3 代替 CartPole-v1 时,我发现多处理模式下的性能更差。我的问题是:我做错了什么?为什么速度比较慢?

我的代码是:

import gym
import time

from stable_baselines3 import PPO
from stable_baselines3 import A2C
from stable_baselines3.common.env_util import make_vec_env
from stable_baselines3.common.evaluation import evaluate_policy

env_name = "BipedalWalker-v3"
num_cpu = 4
n_timesteps = 10000

env = make_vec_env(env_name, n_envs=num_cpu)

model = PPO('MlpPolicy', env, verbose=0)

start_time = time.time()
model.learn(n_timesteps)
total_time_multi = time.time() - start_time
print(f"Took {total_time_multi:.2f}s for multiprocessed version - {n_timesteps / total_time_multi:.2f} FPS")


single_process_model = PPO('MlpPolicy', …
Run Code Online (Sandbox Code Playgroud)

python multiprocessing reinforcement-learning openai-gym stable-baselines

6
推荐指数
1
解决办法
2319
查看次数

稳定基线不适用于张量流

因此,我最近重新回到机器学习领域,并决定开始“ConnectX”的 Kaggle 课程(https://www.kaggle.com/learn/intro-to-game-ai-and-reinforcement-learning)。我正在尝试做第 4 课,其中我使用稳定基线 + Tensorflow 来制作人工智能。问题是,我似乎无法正确使用稳定基线,因为当我尝试导入它时它立即给我一个错误。这是错误消息:

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-13-f5986851ce81> in <module>
      1 import os
----> 2 from stable_baselines.bench import Monitor
      3 from stable_baselines.common.vec_env import DummyVecEnv
      4 
      5 # Create directory for logging training information

~\Anaconda3\lib\site-packages\stable_baselines\__init__.py in <module>
----> 1 from stable_baselines.a2c import A2C
      2 from stable_baselines.acer import ACER
      3 from stable_baselines.acktr import ACKTR
      4 from stable_baselines.deepq import DQN
      5 from stable_baselines.her import HER

~\Anaconda3\lib\site-packages\stable_baselines\a2c\__init__.py in <module>
----> 1 from stable_baselines.a2c.a2c import …
Run Code Online (Sandbox Code Playgroud)

python tensorflow stable-baselines

5
推荐指数
1
解决办法
1万
查看次数

稳定基线的替代方案3

您能否建议一些稳定基线的替代方案,我可以用它来训练强化学习中的代理。

另外,我正在使用健身房迷你网格环境,所以请告诉我那些在这种环境中工作的人。

python tensorflow openai-gym stable-baselines

5
推荐指数
0
解决办法
523
查看次数

稳定基线3模型中基于 LSTM 的策略

我正在尝试使用 stable-baselines3 库制作 PPO 模型。我想使用一个带有 LSTM 层的策略网络。然而,我在图书馆的网站上找不到这种可能性,尽管它存在于以前版本的 stable-baselines 中:https://stable-baselines.readthedocs.io/en/master/modules/policies.html#stable_baselines。 common.policies.MlpLstmPolicy

在 stable-baselines3(不是 stable-baselines)中是否存在这种可能性?如果没有,我还有其他可能做到这一点吗?谢谢。

reinforcement-learning stable-baselines

5
推荐指数
1
解决办法
6094
查看次数