【问题标题】:saving and loading RNN hidden states in PyTorch在 PyTorch 中保存和加载 RNN 隐藏状态
【发布时间】:2019-12-05 21:48:07
【问题描述】:

我正在尝试在 PyTorch 中使用 RNN 网络进行回归任务。在训练阶段,模型被学习。我想在测试阶段使用经过训练的模型。为此,我通过以下方式保存了学习模型:

torch.save(learned_model, "model_path")

然后我可以通过以下方式再次加载模型:

loaded_model = torch.load("model_path")

对于测试阶段,我必须使用这个加载的模型,但我想知道模型的第一个隐藏状态的值是多少?我可以将第一个隐藏状态初始化为零,但我认为这可能不正确。除了 torch.save 之外,还有其他函数可以返回学习模式下的最后一个隐藏状态吗?然后我可以恢复该隐藏状态并将其用作加载模型中的第一个隐藏状态以进行测试。

提前致谢。

【问题讨论】:

    标签: python regression pytorch lstm recurrent-neural-network


    【解决方案1】:

    你的问题有点不清楚。据我了解,您想知道训练模型中最后一个隐藏层的权重,即loaded_model。在这种情况下,您可以简单地使用模型的state_dict,它基本上是一个 python 字典对象,将每一层映射到其参数张量。从here 了解更多信息。

    for param in loaded_model.state_dict():
        print(param)
    

    样本输出:

    rnn.weight_ih_l0
    rnn.weight_hh_l0
    rnn.bias_ih_l0
    rnn.bias_hh_l0
    out.weight
    out.bias
    

    之后,您可以使用以下代码获取最后一个隐藏层的权重:

    out_weights, out_bias = loaded_model.state_dict()['out.weight'], loaded_model.state_dict()['out.bias']
    

    【讨论】:

      猜你喜欢
      • 2018-09-21
      • 1970-01-01
      • 2012-12-16
      • 2019-08-01
      • 2020-11-22
      • 2011-03-20
      • 2011-10-03
      • 2021-05-29
      • 1970-01-01
      相关资源
      最近更新 更多