我定制了一个体育馆环境并使用 stable_baseline3 对其进行训练。但学习过程改变了我的环境。
>>>print(env.step(2))
(510, -0.1, False, False, {})
>>>model.learn(total_timesteps=10000)
>>>print(env.step(2))
(104, -0.1, False, False, {'TimeLimit.truncated': False})
同样的动作=2,学习后的环境给了我另一个观察。 有谁知道为什么?谢谢!
这取决于很多因素,所以我不能说它是什么。但是,根据您当前的设置,如果您想从某个步骤产生相同的结果,您可能需要重置您的环境(并且可能使用相同的种子):
# Initialize your environment
env = gym.make(...) # Or via some class
# Reset your environment
state = env.reset(seed = 42)
env.step(2)
>> (510, -0.1, False, False, {})
# Learn
model.learn(total_timesteps=10000)
# Reset your environment again
state = env.reset(seed = 42)
env.step(2)
>> (510, -0.1, False, False, {})
在强化学习术语中,如果存在初始状态分布,即有多个状态可以作为起始状态,如果您想在第一步之后重现完全相同的结果,则必须使用种子。如果没有,您不必使用种子。