Mar*_*vel 7 python stable-baselines
我刚刚开始自学具有稳定基线 3 的强化学习。我的长期目标是训练代理玩特定的回合制棋盘游戏。不过,目前我对新事物感到非常不知所措。
我已经实现了一个健身房环境,我可以用它来手动玩游戏或让它选择随机动作。
目前,我一直在尝试让一个模型根据观察结果向我提供行动。我的环境的动作空间是一个DiscreteSpace(256). 我创建的模型的环境为model = PPO('MlpPolicy', env, verbose=1)。当我稍后打电话时,model.predict(observation)我确实收到了一个看起来像是一个动作的号码。当重复运行时,我得到不同的数字,我认为这在未经训练的模型上是预期的。
不幸的是,在我的游戏中,大多数行为在大多数州都是非法的,我想过滤它们并选择最好的合法行为。或者简单地转储所有操作的输出结果,以了解正在发生的情况。
在浏览其他人的代码时,我看到了对model.action_probability(observation). 不幸的是,据我所知,该方法不是稳定基线 3 的一部分。从稳定基线 2 迁移到 v3 的指南仅提到它尚未实现 [ 1 ]。
你能给我一个关于如何继续的提示吗?
小智 5
如果将来有人看到这篇文章,请按照以下方式为 PPO 执行此操作。
import numpy as np
from stable_baselines3.common.policies import obs_as_tensor
def predict_proba(model, state):
obs = obs_as_tensor(state, model.policy.device)
dis = model.policy.get_distribution(obs)
probs = dis.distribution.probs
probs_np = probs.detach().numpy()
return probs_np
Run Code Online (Sandbox Code Playgroud)