Torch7,如何计算convNet中的参数个数

时间:2016-06-14 08:19:54

标签: parameters torch conv-neural-network

我正在寻找一种计算卷积神经网络中参数数量的方法。特别是,我在https://github.com/facebook/fb.resnet.torch中使用了Resnet模型。 你知道是否有任何函数可以计算参数总数?这样做你有其他建议吗? 提前致谢。

3 个答案:

答案 0 :(得分:3)

如果要在torch中训练网络,则必须首先提取其参数的矢量和渐变矢量w.r.t.这些参数(都是一维张量):

params, gradParams = net:getParameters()

完成后,很容易获得可学习参数的数量:

n_params = params:size(1)

答案 1 :(得分:0)

您基本上必须遍历网络的每一层并计算该层中的参数数量。以下是一个示例函数:

-- example model to be fed to the function
model = nn.Sequential()
model:add(nn.SpatialConvolution(3,12,1,1))
model:add(nn.Linear(2,3))
model:add(nn.ReLU())

function countParameters(model)
local n_parameters = 0
for i=1, model:size() do
   local params = model:get(i):parameters()
   if params then
     local weights = params[1]
     local biases  = params[2]
     n_parameters  = n_parameters + weights:nElement() + biases:nElement()
   end
end
return n_parameters
end

答案 2 :(得分:0)

添加到已回答的内容,如果您只想在层级计算网络参数的数量,最好使用

params, gradParams = net:parameters()
print(#params)

而不是getParameters()(返回扁平的长张量)。

当您想要逐层设置不同的学习率时,函数parameters()非常有用。