在PyTorch中保存和加载RNN隐藏状态

时间:2019-07-28 07:34:49

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

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

torch.save(learned_model, "model_path")

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

loaded_model = torch.load("model_path")

在测试阶段,我必须使用此加载的模型,但我想知道该模型的第一个隐藏状态的值是什么?我可以将第一个隐藏状态初始化为零,但我认为这可能是不正确的。除了torch.save之外,是否还有其他功能可以返回学习模式中的最后一个隐藏状态?然后,我可以还原该隐藏状态,并将其用作已加载模型中的第一个隐藏状态以进行测试。

谢谢。

1 个答案:

答案 0 :(得分: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']
相关问题