TensorFlow/Keras中Flatten层接收参数的去向及作用相关疑问
Flatten层"参数丢失"相关问题解答
核心澄清
你观察到的Flatten层参数量为0,属于Keras/TensorFlow的模型参数统计规则导致的视觉错觉,不存在参数真的丢失的情况。
1. 看似"丢失"的参数实际去向
- 你提到的51264个参数,全部归属于输出形状为
(7, 7, 64)的上游层(通常是Conv2D卷积层),保存在该层的权重变量中,没有被删除、修改或者转移。 - 你可以通过
model.layers[对应上游层的索引].get_weights()直接读取到所有51264个参数的完整数值,和是否添加Flatten层完全无关。 Flatten层本身没有任何可训练参数,所以model.summary()中该层的参数统计列显示为0,只是因为它不持有参数,不是上游层的参数消失了。你可以核对模型总参数量,添加Flatten层前后总参数量完全一致,都包含这51264个参数。
2. 这些参数的作用完全不受影响
Flatten层仅执行张量形状重排操作:将输入的(7,7,64)三维张量拉直为长度为7*7*64=3136的一维张量,全程不修改张量的数值,也不会触碰上游层的参数。- 推理阶段:上游层的参数正常参与特征计算,输出的特征经过Flatten拉直后输入后续全连接层,所有参数的作用完全保留。
- 训练阶段:反向传播的梯度会经过Flatten层正常回传给上游层,更新这51264个参数,参数的训练逻辑没有任何变化。
内容的提问来源于stack exchange,提问作者Aaron_1993
相关产品推荐
相关产品推荐

