AlexNet的参数个数如何计算?
How to calculate the number of parameters of AlexNet?
我还没有找到 AlexNet 的参数(权重 + 偏差)的计算,所以我尝试计算它,但我不确定它是否正确:
conv1: (11*11)*3*96 + 96 = 34944
conv2: (5*5)*96*256 + 256 = 614656
conv3: (3*3)*256*384 + 384 = 885120
conv4: (3*3)*384*384 + 384 = 1327488
conv5: (3*3)*384*256 + 256 = 884992
fc1: (6*6)*256*4096 + 4096 = 37752832
fc2: 4096*4096 + 4096 = 16781312
fc3: 4096*1000 + 1000 = 4097000
这导致总共有 62378344 个参数。这样计算对吗?
本演示文稿中的幻灯片 8 指出它有 60M 个参数,因此我认为您至少在大概范围内。 http://vision.stanford.edu/teaching/cs231b_spring1415/slides/alexnet_tugce_kyunghee.pdf
根据他们论文中的图表,一些层使用了分组。因此,并非一层的所有特征都与下一层通信。这意味着例如对于 conv2,您应该只有 (5*5)*48*256 + 256 = 307,456 个特征。
我不确定是否所有较新的实现都包括分组。这是他们用来让网络在两个 GPU 上并行训练的优化,但现代 GPU 拥有更多的训练资源,无需分组即可轻松适应网络。
你的计算是正确的。我们在写 this blog post 时独立得出了完全相同的数字。我还添加了 post
中的最后一个 table
我还没有找到 AlexNet 的参数(权重 + 偏差)的计算,所以我尝试计算它,但我不确定它是否正确:
conv1: (11*11)*3*96 + 96 = 34944
conv2: (5*5)*96*256 + 256 = 614656
conv3: (3*3)*256*384 + 384 = 885120
conv4: (3*3)*384*384 + 384 = 1327488
conv5: (3*3)*384*256 + 256 = 884992
fc1: (6*6)*256*4096 + 4096 = 37752832
fc2: 4096*4096 + 4096 = 16781312
fc3: 4096*1000 + 1000 = 4097000
这导致总共有 62378344 个参数。这样计算对吗?
本演示文稿中的幻灯片 8 指出它有 60M 个参数,因此我认为您至少在大概范围内。 http://vision.stanford.edu/teaching/cs231b_spring1415/slides/alexnet_tugce_kyunghee.pdf
根据他们论文中的图表,一些层使用了分组。因此,并非一层的所有特征都与下一层通信。这意味着例如对于 conv2,您应该只有 (5*5)*48*256 + 256 = 307,456 个特征。
我不确定是否所有较新的实现都包括分组。这是他们用来让网络在两个 GPU 上并行训练的优化,但现代 GPU 拥有更多的训练资源,无需分组即可轻松适应网络。
你的计算是正确的。我们在写 this blog post 时独立得出了完全相同的数字。我还添加了 post
中的最后一个 table