莫凡 pytorch
1 什么是神经网络(机器学习)
-
输入层、隐藏层、输出层
-
首先由大量得带有标签的图片进行训练,当预测出错误的结果时,由正确结果和错误结果之间的误差进行反馈,不断进行调整,以获得更好的结果
-
通过激活函数对不同神经元的重要性进行调整,使得网络得到想要的结果
2 神经网络:梯度下降(Gradient Descent)
-
梯度下降算是网络优化(Optimization)的一个方法
-
目标:让真实值和实际值的误差尽可能小
-
方法:不断调整梯度
梯度躺平的点一般不止一个,但是即便是一个局部最优,也可以出色地完成任务
3. 神经网络的黑盒处理
- 相当于将输入一次次转换成代表特征
4. Numpy和pytorch对比
- numpy array 和 torch tensor
5. 激励函数
-
解决不能用线性方程(Linear)表示的问题
-
方法:将线性函数变为非线性,加一个AF()
-
AF就是非线性激活函数
-
可以自己创建非线性激活函数,但是函数必须是可以微分的,因为反向传播的过程中需要用到,把误差传递回去
-
在隐藏层比较少的时候,可以随意选择隐藏层,在隐藏层比较多的时候,需要选择慎重选择(卷积选relu,循环可以relu或tanh)
6.激励函数(Activation)
使得结果进行转化
7. Rrgression回归
预测一个值
- 创建网络--搭建网络
- 优化网络--计算误差
学习率不能太大,学习越快越不好
- 训练网络
预测结果-计算loss-优化
可以用mayplotlib可视化
8. Classification 分类
- 模型创建--网络调用
-
优化-计算损失
-
训练模型
9. 快速搭建神经网络
- 利用Sequential
10. 保存提取
- 只保存网络
- 保存网络的参数
11. 批数据训练
batch_size:就是每批多少个
epoch: 对数据整体训练几次
step:总数量/batch_size
shuffle:决定是否打乱每次epoch取得数据
batch_size=5的案例:
12. 优化器Optimizer加速神经网络训练(深度学习)
- 将数据拆分,并进行处理
- 几种加速训练的方法
13. Optimizer优化器
目的: 降低loss
- 不同的优化函数
-
计算loss--保存
-
训练
- 效果:
14. 卷积神经网络
- 对图片中每一小块的信息进行处理
- 对重要的信息进行整理
-
压缩长宽,增加高度
-
卷积层会无意丢失一些信息,因此采用池化层进行处理(尽量不压缩长宽,交给池化)
- 常见搭建结构
输入图像-卷积层-最大池化-卷积层-最大池化-全连接-分类
14.1 CNN卷积神经网络
- 创建CNN
in_channels:输入的层的高度
out_channels:输出的层的高度
kernel_size:扫描区域的大小
stride:每次移多少距离
padding:扫面区域不够大时,需要填充什么
15. 循环神经网络RNN
-
由前一状态的s(t),共同决定当前状态s(t)+s(t+1),前后状态相关。
-
应用:作曲、写文章、写代码
15.1 LSTM RNN (长短期记忆)
普通RNN的问题:
- 梯度弥散
由后向前乘以权重(小于1),最终loss结果为0,梯度消失
- 梯度爆炸
由后向前乘以权重(大于1),最终loss结果为无穷大,梯度爆炸
15.2 RNN 分类
TIME_STEP:扫描多少步
INPUT_SIZE:每步多少个像素
num_layers:细胞里面的层数,越大计算耗时越多
batch_first: True->(batch,time_step,input) False->(time_step,batch,input)
15.3 RNN 回归
- 由前面时间点的信息和当前时间点的信息,对下一时间点的信息进行预测
16. 自编码/非监督学习(Autoencoder)
- 给特征属性进行降维
- 压缩encoder 解压decoder
- 定义
17. DQN(Reinforcement Learning 强化学习)
18. GAN生成对抗网络(深度学习)
由无意义的数字->生成对应有意义的东西
新手画家用随机灵感画画->鉴赏家会收到新手画家和专业画家的画作,他来判断哪副是谁画的->鉴赏家一般判断,一边告诉新手画家如何画的更像著名画家
->这样新手画家就知道如何画出更好的画作了。
19. 为什么torch是动态的
- 可以处理多个不确定维度的参数,而tensorflow只能处理一个不断变化的参数
20. 过拟合(over-fitting)
学的太好了
解决方法:
-
增加数据量
-
利用正则化(L1\L2 regularization)
-
神经网络:Dropout ->随机忽略一些神经元
案例:
各网络层之间加一个Dropout,0.5表示每次传递一半
21. 批标准化(Batch Normalization)
将数据统一化
前向传递中调整:
网络结构:
效果:
原理:
在每一层有效地传递下去,就是Batch Normalization:
论文:Batch Normalization:Accelerating Deep Network Training by Reducing Internal Corvariate Shift
代码:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律