我试图在PyTorch中使用RNN网络进行回归任务。在训练阶段,学习模型。我想在测试阶段使用经过训练的模型。为此,我通过以下方式保存了学习的模型:
torch.save(learned_model, "model_path")
然后我可以通过以下方式再次加载模型:
loaded_model = torch.load("model_path")
在测试阶段,我必须使用此加载的模型,但我想知道该模型的第一个隐藏状态的值是什么?我可以将第一个隐藏状态初始化为零,但我认为这可能是不正确的。除了torch.save之外,是否还有其他功能可以返回学习模式中的最后一个隐藏状态?然后,我可以还原该隐藏状态,并将其用作已加载模型中的第一个隐藏状态以进行测试。
谢谢。
答案 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']