我们经常听说某某大模型有多少亿参数,比如 DeepSeek R1 671B,那么这个参数如何通过神经网络图来看?
- B(billion):10 亿
- 例如:7B:就是 70 亿参数,671B 就是 6710 亿参数
- 从神经网络神经元连接图上来看,这个参数量怎么来的?
以下面这个神经网络为例:
4 个输入(实际上 3 个变量输入一个偏置),2 个输出,三层网络,2 个隐藏层。

第1个隐藏层:使用Xavier正态分布初始化权重,激活函数使用Tanh
第2个隐藏层:使用He正态分布初始化权重,激活函数使用ReLU
输出层:按默认方式初始化,激活函数使用Softmax
先看如下代码,看一下输出结果:
import torch
import torch.nn as nn
class Model(nn.Module):
# 初始化
def __init__(self):
super(Model, self).__init__() # 调用父类初始化
self.linear1 = nn.Linear(3, 4) # 第1个隐藏层,3个输入,4个输出
nn.init.xavier_normal_(self.linear1.weight) # 初始化权重参数
self.linear2 = nn.Linear(4, 4) # 第2个隐藏层,4个输入,4个输出
nn.init.kaiming_normal_(self.linear2.weight) # 初始化权重参数
self.out = nn.Linear(4, 2) # 输出层,4个输入,2个输出,默认使用He均匀分布初始化
# 前向传播
def forward(self, x):
x = self.linear1(x) # 经过第1个隐藏层
x = torch.tanh(x) # 激活函数
x = self.linear2(x) # 经过第2个隐藏层
x = torch.relu(x) # 激活函数
x = self.out(x) # 经过输出层
x = torch.softmax(x, dim=1) # 激活函数
return x
model = Model()
output = model(torch.randn(10, 3))
print("输出:\n", output)
print()
# 使用named_parameters()查看各层参数
print("模型参数:")
for name, param in model.named_parameters():
print(name, param)
print()
# 使用state_dict()查看各层参数
print("模型参数:\n", model.state_dict())
from torchsummary import summary
# input_size:特征数,batch_size:样本数
summary(model, input_size=(3,), batch_size=10, device="cpu")
为什么输出的 param 是 16,20,10?
- 第一层:3 * 4 + 4 = 16
- 第二层:4 * 4 + 4 = 20
- 第三层:4 * 2 + 2 = 10
总参数:16 + 20 + 10 = 46个参数量
* 前后的数实际上就是当前层的组合数
**+**后面的数就是偏置的数量
