计算 Caffe 解决方案中的神经元数量和权重

Count number of neurons and weights in a Caffe solution

我有一个 Caffe 项目,其中包含 prototxt 模型描述和 caffemodel 调整参数文件(大小约为 16 Mb)。有没有一种简单的方法可以通过静态分析或在运行时找出模型中有多少神经元和权重?

我可以在 Netscope, but there's 24 convolution layers and seven pooling layers, so I don't really know where to start counting from. I also saw this Google Groups question 中可视化 prototxt 文件,但我不确定如何将其应用到我的问题中。

是的,您可以从 prototxt 文件中计算权重参数,甚至无需查看 caffemodel。对于一个卷积层,你可以看看有多少个过滤器,过滤器的大小是多少。例如,如果卷积大小为 3x3,滤波器数量为 64,则该层的参数数量为 576。对于全连接层,权重参数数量等于前一层的大小乘以当前层,例如200x100,如果前一层的输出大小为 200,当前层有 100 个隐藏单元。如果前一层是卷积层,则前一层的大小也取决于输入图像的大小。具有全连接层的网络采用固定大小的输入,因此可以根据输入大小和其他层参数计算最后一个卷积层的输出大小 http://cs231n.github.io/convolutional-networks/.

如果有偏差参数,你需要加上过滤器的数量和全连接层的数量。池化层没有权重参数,因此可以忽略。最后可以将size乘以4,也就是float的大小。