CNN全连接层

引言

前序学习进程中,已经梳理了卷积计算池化计算的基本知识。

实际上这两部都是使用卷积核对原始矩阵进行计算或,获得的新的、缩小的矩阵,如何把计算结果一步一步送到最后的输出端,也就是把它们传送、或者说连接起来,这就是全连接层的功能。

全连接层如何计算

全连接层面对的是矩阵数组,如果卷积层或者池化层计算的每一个结果,都是下一层的输入,那第一步就是把这些计算结果"展平",变成一维数组,比如一列,这就是全连接层干的事情。

全连接层展平使用了激活函数,常见的激活函数将卷积层和池化层的数据带入函数运算后,将输出结果直接传递给下一层。

实际上全连接层就是激活函数发挥功能的层,通过激活函数可以引入非线性或者仅保留线性。

代码示例

这里给出一个代码示例,代码使用豆包AI自动生成:

python 复制代码
import numpy as np

# 模拟CNN池化层输出展平后的特征(批量大小=2,单样本特征数=1568)
X = np.random.randn(2, 1568)  # 输入:[2, 1568]

# 定义全连接层参数(对应fc1: 1568→128)
# 生成1568行,128列正态分布随机数
W = np.random.randn(1568, 128)  # 权重:[1568, 128]
# 生成128列正态分布随机数
b = np.random.randn(128)        # 偏置:[128]

# 线性变换计算
output = np.dot(X, W) + b  # 矩阵乘法 + 偏置:[2, 128]

# ReLU激活函数
output_relu = np.maximum(output, 0)  # 负数置0

print("全连接层线性变换输出维度:", output.shape)
print("ReLU激活后输出维度:", output_relu.shape)
print("激活后前5个值:", output_relu[0, :5])

首先会看到生成了一些计算参数:

X:2行1568列正态分布随机数;

W:1568行128列正态分布随机数

b:128列正态分布随机数

然后调用np.dot()函数执行矩阵乘法,获得2行128列数据组成的新矩阵,这个新矩阵的每一列都加上了一个偏置量b,b本身只有128个数,但计算的时候会自动广播,复制一行出来后叠加到np.dot(X,W)上。

然后就是全连接层发生作用的时刻,激活函数np.maximum(output,0)函数只保留非负数,负数强制置0,经过激活函数作用后获得的输出是2行128列。这个结构是预期的,和输入X的结果2行1568列完全不一样。

全连接层的作用,就是把卷积层和池化层的输出再经过激活函数的运算,不仅改变了运算值,还改变了数据结构,使数据按照预设的方式一层一层传递到最后。

总结

学习了全连接层的基础知识。

相关推荐
拓端研究室几秒前
2026中国医疗健康行业趋势报告:投融资回暖、AI渗透与产业链提价|附100+份报告PDF、数据、可视化模板汇总下载
人工智能·物联网·microsoft
heimeiyingwang几秒前
【架构实战】API接口防刷与限流策略
开发语言·python·架构
机器学习之心1 分钟前
基于CNN卷积神经网络的轴承剩余寿命预测MATLAB实现
人工智能·matlab·cnn·轴承剩余寿命预测
墨染天姬2 分钟前
【AI】开源skill
人工智能
没有梦想的咸鱼185-1037-16633 分钟前
AI大模型支持下的顶刊绘图|散点图、气泡图、柱状图、热力图、柱状图、热力图、箱线图、热力图、云雨图、韦恩图、瀑布图、神经网络图、时间序列或分布展示
人工智能·神经网络·arcgis·信息可视化·数据分析·r语言·ai写作
魔乐社区3 分钟前
从0到1:魔乐社区贡献者丁一超的大模型量化实战指南
人工智能·大模型·量化
weixin_408099674 分钟前
【保姆级教程】易语言调用 OCR 文字识别 API(从0到1完整实战 + 示例源码)
图像处理·人工智能·后端·ocr·api·文字识别·易语言
七七powerful4 分钟前
AI实战--MiroFish:群体智能引擎,预测万物
人工智能·microfish
斯~内克5 分钟前
AI 推理提示工程技术
人工智能