#1297·tianshou

正在从 persistence 目录加载策略

作者: AnsgarKasselmannTUM创建于 2026年4月14日更新于 2026年4月14日

嘿, 我在从持久目录中加载策略时遇到了问题。我的目前方法是

experiment = Experiment.from_directory(experiment_dir.__str__(), restore_policy=True)
world = experiment.create_experiment_world(raise_error_on_dirname_collision=False)

但是, 由于 Torch 默认模型加载的变化, 导致以下错误:

_pickle.UnpicklingError: 只加载权重失败。仍可加载此文件, 要这样做, 您有两个选项, 只有在您信任检查点的来源时才执行这些步骤。 
(1) 在 PyTorch 2.6 中, 我们将 `torch.load` 中 `weights_only` 参数的默认值从 `False` 更改为 `True`。 使用 `weights_only` 设置为 `False` 重新运行 `torch.load` 可能会成功, 但可能会导致任意代码执行。 只有在您从可信来源获得该文件时才执行此操作。 
(2) 或者, 要使用 `weights_only=True` 加载, 请查看以下错误消息中建议的步骤。 
WeightsUnpickler 错误: 未支持的全局变量: GLOBAL tianshou.algorithm.modelfree.sac.SAC 不是默认情况下允许的全局变量。 如果您信任此类/函数, 请使用 `torch.serialization.add_safe_globals([tianshou.algorithm.modelfree.sac.SAC])` 或 `torch.serialization.safe_globals([tianshou.algorithm.modelfree.sac.SAC])` 上下文管理器将此全局变量添加到允许列表中。

内容来源: thu-ml/tianshou