简单的问题。我想看看LSTM的初始化参数。我怎么看? 我是否需要始终将lstm放入模型中才能查看参数?
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
torch.manual_seed(1)
torch.__version__
lstm = nn.LSTM(3, 3)
lstm.weight_ih_l
-------------------------------------------------- ---------------------------- AttributeError Traceback(最近一次调用 最后)在() 9 lstm = nn.LSTM(3,3) 10 ---> 11 lstm.weight_ih_l
〜/ anaconda3 / envs / pytorch0.41 / lib / python3.6 / site-packages / torch / nn / modules / module.py 在 getattr 中(自己,名字) 516个返回模块[名称] 517 throw AttributeError(“'{}'对象没有属性'{}'”。format( -> 518类型(自己)。名称,名称)) 519 520 def setattr (自身,名称,值):
AttributeError:“ LSTM”对象没有属性“ weight_ih_l”
答案 0 :(得分:1)
nn.LSTM
通过nn.RNNBase
实现,它将所有参数放入OrderedDict:_parameters中。因此,要“查看”已初始化的参数,您只需执行以下操作:
import torch
torch.manual_seed(1)
import torch.nn as nn
lstm = nn.LSTM(3, 3)
print(lstm._parameters['weight_ih_l0'])
此外,要知道该OrderedDict中的键值是什么,您可以简单地执行以下操作:
print(lstm._all_weights)
。
答案 1 :(得分:1)
基本上我没有指定层#'0'
。
lstm.weight_ih_l0
也可以胜任。
除了上面的答案,您需要指定参数的层索引。如果要查看第二层,请weight_ih_l1
。