MNIST架构中ConvNet最后一层与首个全连接层的降维过程疑问
理解卷积到全连接层的降维逻辑
首先得澄清一个可能的表述误解:你提到的“3136个神经元”其实不是这个全连接层的神经元数量——这个全连接层的神经元数量是1024个,而3136是输入特征的维度,对应的权重矩阵维度是3136x1024,这才是实现降维的核心。
下面一步步拆解这个过程:
1. 特征图的扁平化(Flatten)
在卷积层之后,我们得到64个7x7的特征图,也就是你计算的6477=3136个特征。这一步不是转成独热表示,而是把每个二维特征图“拉平”成一维向量:每个7x7的特征图变成49个连续数值,64个这样的向量拼接起来,就得到了长度为3136的一维输入向量,形状为(1, 3136)(这里的1代表单样本)。
2. 全连接层的矩阵乘法逻辑
全连接层的核心是矩阵乘法+偏置的线性变换:
- 输入向量:
X = (1, 3136) - 权重矩阵:
W = (3136, 1024)——每一列对应全连接层中一个神经元的权重参数,1024列就对应1024个神经元 - 偏置向量:
b = (1, 1024)
计算过程为:Y = X * W + b,最终输出形状是(1, 1024),这就完成了从3136维到1024维的降维。
3. 为什么不是3136个神经元?
如果真的用3136个神经元,输出维度还是3136,根本做不到降维。你看到的描述大概率是把输入特征维度和神经元数量搞混了。全连接层的神经元数量直接决定输出维度:想要降维到1024,就设置1024个神经元,每个神经元都和所有3136个输入特征做加权求和(这也是“全连接”的含义)。
举个简化例子:假设输入是3维,要降到2维,权重矩阵就是3x2,2个神经元分别计算w11*x1 + w12*x2 + w13*x3 + b1和w21*x1 + w22*x2 + w23*x3 + b2,输出就是2维向量——本质是通过线性变换把高维空间映射到低维空间。
总结
核心逻辑可以概括为:
- 卷积后的特征图先扁平化成长度为3136的一维向量
- 全连接层用1024个神经元,通过
(1x3136)*(3136x1024)的矩阵乘法完成线性降维 - 后续通常会叠加激活函数(比如ReLU)引入非线性,进一步提取有效特征
内容的提问来源于stack exchange,提问作者Diewin
相关产品推荐
相关产品推荐

