卷积神经网络学习笔记
全连接神经网络的结构
-
全连接神经网络的整体结构
可以简化为智能函数
输入和输出层一般为数据矩阵 -
全连接网络的单元结构
神经网络的思路:从单元到整体
一个单元的结构:
是很多矩阵,然后这些矩阵分别乘上对应的权重矩阵,再加上偏置矩阵b,输入给激活函数,就会输出结果用数学形式表达就是:
( 为激活函数)所以如果想输出优质结果,就要调整各个输入的权重W
下一层的神经网络以这一层的输出为输入,进行同样的运算:
激活函数
-
为什么激活函数一般不用线性函数?
若
,则下一层的运算结果 ,仍为 形式,也就是说没有体现出层数增加带来的效果 -
sigmoid函数
特点:值域为(0,1),在x接近0处梯度较好
优点:- 简单,适合分类任务
缺点
- 在远离0的地方梯度过小,反向传播算法会出问题
- 值域不关于0对称
-
tanh激活函数(双曲正切函数)
特点:
- 与sigmoid函数很像
- 值域为(-1,1),关于0对称
优点:
- 比sigmoid收敛快
- 值域关于0对称
缺点
- 可能出现梯度消失问题
-
ReLU函数
特点:
- 分段函数
优点:
- 解决了梯度消失问题
- 没有指数运算,运算更为简便
缺点:
- 可能会出现神经元死亡的问题(也就是当x<0的时候,梯度为0,参数不再更新)
-
leaky ReLU函数
特点:
- 分段函数
优点:
- 不会出现神经元死亡的问题
缺点:
- 对正、负的输入,对应的函数不同,无法进行一致的关系预测
损失函数
这里用1/2m而不是1/m是为了方便求导
神经网络的训练流程:
- 前向传播
- 计算误差
- 反向传播
反向传播
梯度下降算法
关于梯度下降算法的原理:
对一个函数, 是函数的梯度
移项得
令,则左边衡量的是下降前后函数值的变化量,这个变化量为负,且我们希望它尽可能小
现在研究右边,设,这是一个向量, 也是个向量,也就是让这两个向量的内积尽量小,所以他们俩应该共线反向
所以
因此
移项得
设学习率,则得到梯度下降公式
计算机对图像的存储
每个像素点记录为一个数,灰度图为一个矩阵,彩色图为RGB三通道矩阵
全连接层的缺点
参数量过大,难以计算,容易过拟合
卷积神经网络
- 卷积运算
卷积核在输入矩阵上滑动,运算方式是将卷积核与原矩阵对应的元素相乘再求和,再加上偏置,形成输出的一个元素。
卷积核的各个元素就相当于全连接的参数W
卷积有两个特殊的值:步长(Stride)和填充(Padding)
- 填充就是在图像的周围补0,补几圈P就等于几
- 步长就是卷积核每次移动的距离
如何计算输出矩阵的高宽?
设原矩阵高为H,宽为W,输出的矩阵高宽为OH、OW,卷积核高宽为FH、FW,则
如果多通道的图片进行卷积,卷积核也是多通道的,但输出的图会把对应的元素进行相加,成为一个单通道图片
卷积核可以有多个,如果多个卷积核,就会输出多个特征图
- 池化运算
也有类似卷积的核和步长,是一个核滑动的形式,但是没有参数(这个核称作“感受野”)
池化有两种常见类型
- 最大池化:取池化范围的最大值作为输出的元素
- 平均池化:取池化范围的平均值作为输出的元素
- 卷积神经网络的整体构造
深度神经网络的模型搭建
程序结构
model.py:模型
train.py
- 数据处理
- 模型训练
- 记录loss值、accuracy值
test.py:对数据测试
如果修改模型,可以只改model.py,train和test不用怎么改
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix