我使用itorch笔记本构建了nn模型。
model = nn.Sequential()
model:add(nn.Reshape(ninputs))
model:add(nn.Linear(ninputs,noutputs))
向模型输入数据
output = model:forward(input)
然后,我打印模型并得到它。
print(model)
nn.Sequential {
[input -> (1) -> (2) -> output]
(1): nn.Reshape(3072)
(2): nn.Linear(3072 -> 10)
}
{
gradInput : DoubleTensor - empty
modules :
{
1 :
nn.Reshape(3072)
{
_input : DoubleTensor - empty
nelement : 3072
train : true
output : DoubleTensor - size: 3072
gradInput : DoubleTensor - empty
size : LongStorage - size: 1
_gradOutput : DoubleTensor - empty
batchsize : LongStorage - size: 2
}
2 :
nn.Linear(3072 -> 10)
{
gradBias : DoubleTensor - size: 10
weight : DoubleTensor - size: 10x3072
train : true
bias : DoubleTensor - size: 10
gradInput : DoubleTensor - empty
gradWeight : DoubleTensor - size: 10x3072
output : DoubleTensor - size: 10
}
}
train : true
output : DoubleTensor - size: 10
}
如何读取nn.linear中的权重?
提前致谢。
答案 0 :(得分:7)
哦,它类似于php
model.modules[2].weight
答案 1 :(得分:1)
我发现model.modules[1].weight
与model:get(1).weight
类似,但两者都无法像残留块一样从表层获取参数。这样残留块作为一层。
但是,即使在表格层中,我们也可以使用params, gradParams = model:parameters()
来获取每个图层的参数。
值得注意的是,在第二种方式中,每层网络参数分为两层并按层排列