🏆🏆🏆教程全知识点简介:1.1 深度学习介绍 深度学习与神经网络 1.2 神经网络基础 1.3 浅层神经网络 2.1 多分类与 TensorFlow 5、得出每次训练的准确率(通过真实值和预测值进行位置比较,每个样本都比较) 2.2 梯度下降算法改进 2.3.4 其它正则化方法 2.4 BN 与神经网络调优 3.1 图像数据与边缘检测 3.2 卷积神经网络(CNN)原理 3.3 经典分类网络结构 4.1 循环神经网络 4.1.4 GRU(门控循环单元) 4.1.5 LSTM(长短记忆网络) 4.2 词嵌入与 NLP 学习目标 4.2.2 词嵌入 4.2.3 Word2Vec案例 4.3 seq2seq 与 Attention机制 4.3.2 注意力机制 4.3.3 机器翻译案例 4.3.4 集束搜索(Beam Search) 4.3.5 BLEU-机器翻译的自动评估方法 4.7.3.6 完整代码 5.1 生成对抗网络(GAN) 5.2 自动编码器


📚📚👉👉👉本站这篇博客:   https://blog.csdn.net/yinuo_432/article/details/151245300    中查看

📚📚👉👉👉本站这篇博客:   https://blog.csdn.net/yinuo_432/article/details/151583212    中查看

✨ 本教程项目亮点

🧠 知识体系完整:覆盖从基础原理、核心方法到高阶应用的全流程内容
💻 全技术链覆盖:完整前后端技术栈,涵盖开发必备技能
🚀 从零到实战:适合 0 基础入门到提升,循序渐进掌握核心能力
📚 丰富文档与代码示例:涵盖多种场景,可运行、可复用
🛠 工作与学习双参考:不仅适合系统化学习,更可作为日常开发中的查阅手册
🧩 模块化知识结构:按知识点分章节,便于快速定位和复习
📈 长期可用的技术积累:不止一次学习,而是能伴随工作与项目长期参考


🎯🎯🎯全教程总章节


🚀🚀🚀本篇主要内容

卷积神经网络

了解卷积神经网络的构成
记忆卷积的原理以及计算过程
了解池化的作用以及计算过程
知道LeNet-5网络结构
了解经典的分类网络结构
知道NIN中1x1卷积原理以及作用
知道Inception的作用
了解迁移学习以及技巧
应用卷积神经网络进行手势识别

3.3 经典分类网络结构

学习目标

  • 目标

  • 知道LeNet-5网络结构

  • 了解经典的分类网络结构
  • 知道一些常见的卷机网络结构的优化

    • 知道NIN中1x1卷积原理以及作用
    • 知道Inception的作用
  • 了解卷积神经网络学习过程内容

  • 应用

下面 主要以一些常见的网络结构去解析,并介绍大部分的网络的特点。这里看一下卷积的发展历史图。

3.3.1 LeNet-5解析

首先 从一个稍微早一些的卷积网络结构LeNet-5(这里稍微改了下名字),开始的目的是用来识别数字的。从前往后介绍完整的结构组成,并计算相关输入和输出。

Python 官方文档

3.3.1.1 网络结构

  • 激活层默认不画网络图当中,这个网络结构当时使用的是sigmoid和Tanh函数,还没有出现Relu函数
  • 将卷积、激活、池化视作一层,即使池化没有参数
3.3.1.2 参数形状总结
shapesizeparameters
Input(32,32,3)30720
Conv1(f=5,s=1)(28,28,6)4704450+6
Pool1(14,14,6)11760
Conv2(f=5,s=1)(10,10,16)16002400+16
Pool2(5,5,16)4000
FC3(120,1)12048000+120
FC4(84,1)8410080+84
Ouput:softmax(10,1)10840+10
  • 中间的特征大小变化不宜过快

事实上,在过去很多年,许多机构或者学者都发布了各种各样的网络,其实去了解设计网络最好的办法就是去研究现有的网络结构或者论文。大多数网络设计出来是为了Image Net的比赛(解决ImageNet中的1000类图像分类或定位问题),后来大家在各个业务上进行使用。

3.3.2 AlexNet

2012年,Alex Krizhevsky、Ilya Sutskever在多伦多大学Geoff Hinton的实验室设计出了一个深层的卷积神经网络AlexNet,夺得了2012年ImageNet LSVRC的冠军,且准确率远超第二名(top5错误率为15.3%,第二名为26.2%),引起了很大的轰动。AlexNet可以说是具有历史意义的一个网络结构。

  • 总参数量:60M=6000万,5层卷积+3层全连接
  • 使用了非线性激活函数:ReLU
  • 防止过拟合的方法:Dropout,数据扩充(Data augmentation)
  • 批标准化层的使用

3.3.3 卷积网络结构的优化

asyncio 文档

3.3.3.1 常见结构特点

整个过程:AlexNet—NIN—(VGG—GoogLeNet)—ResNet

  • NIN:引入1 * 1卷积
  • VGG,斩获2014年分类第二(第一是GoogLeNet),定位任务第一。

  • 参数量巨大,140M = 1.4亿

  • 19layers
  • VGG 版本

    • VGG16
    • VGG19

pytz 文档

  • GoogleNet,2014年比赛冠军的model,这个model证明了一件事:用更多的卷积,更深的层次可以得到更好的结构。(当然,它并没有证明浅的层次不能达到这样的效果)

Plotly Python

  • 500万的参数量
  • 22layers
  • 引入了Inception模块
    • Inception V1
    • Inception V2
    • Inception V3
    • Inception V4

datetime 文档

  • 下面 将针对卷积网络架构常用的一些结构进行详细分析,来探究这些结构带来的好处

3.3.4 Inception 结构

GeeksforGeeks Python

首先 要说一下在Network in Network中引入的1 x 1卷积结构的相关作用

3.3.4.1MLP卷积(1 x 1卷积)

  • 目的:提出了一种新的深度网络结构,称为“网络中的网络”(NIN),增强接受域内局部贴片的模型判别能力。
  • 做法

  • 对于传统线性卷积核:采用线性滤波器,然后采用非线性激活。

  • 提出MLP卷积取代传统线性卷积核

  • 作用或优点:

  • 1、多个1x1的卷积核级联加上配合激活函数,将feature map由多通道的线性组合变为非线性组合(信息整合),提高特征抽象能力(Multilayer Perceptron,缩写MLP,就是一个多层神经网络)

  • 2、1x1的卷积核操作还可以实现卷积核通道数的降维和升维,实现参数的减小化
3.3.4.2 1 x 1卷积介绍

从图中,看到1 x 1卷积的过程,那么这里先假设只有3个1x1Filter,那么最终结果还是56x56x3。但是每一个FIlter的三个参数的作用

  • 看作是对三个通道进行了线性组合。

甚至可以把这几个FIlter可以看成就是一个简单的神经元结构,每个神经元参数数量与前面的通道数量相等。

  • 通常在卷积之后会加入非线性激活函数,在这里之后加入激活函数,就可以理解成一个简单的MLP网络了。

Psycopg2 文档

Programiz Python

3.3.4.3 通道数变化

那么对于1x1网络对通道数的变化,其实并不是最重要的特点,因为毕竟3 x 3,5 x 5都可以带来通道数的变化,

而1x1卷积的参数并不多, 拿下面的例子来看。

  • 保持通道数不变
  • 提升通道数
  • 减少通道数
3.3.4.4 Inception层

paramiko 文档

这个结构其实还有名字叫盗梦空间结构。

  • 目的:

  • 代替人手工去确定到底使用1x1,3x3,5x5还是是否需要max_pooling层,由网络自动去寻找适合的结构。并且节省计算。

  • 特点

  • 是每一个卷积/池化最终结果的长、宽大小一致

  • 特殊的池化层,需要增加padding,步长为1来使得输出大小一致,并且选择32的通道数
  • 最终结果28 x 28 x 256

    • 使用更少的参数,达到跟AlexNet或者VGG同样类似的输出结果
3.3.4.5 Inception改进

Pillow 文档

改进目的:减少计算,如5 x 5卷积那的运算量

  • 上面的参数:5 x 5 x 32 x 192 =153600
  • 下面的参数:192 x 16 + 5 x 5 x 16 x 32 = 3072 + 12800 = 15872

所以上面的结构会需要大量的计算, 把这种改进的结构称之为网络的"瓶颈",网络缩小后扩大。

那么这样改变会影响网络的性能和效果吗?

GoogleNet就是如此,获得了非常好的效果。所以合理的设计网络当中的Inception结构能够减少计算,实现更好的效果。

3.3.4.6 GoogleNet结构(了解)

其中包含了多个Inception结构。

完整结构:

3.3.5 卷积神经网络学习特征可视化

肯定会有疑问真个深度的卷积网络到底在学习什么?可以将网络学习过程中产生的特征图可视化出来,并且对比原图来看看每一层都干了什么。

  • 可视化案例使用的网络

  • 可视化结果

loguru 文档

watchdog 文档

  • layer1,layer2学习到的特征基本是颜色、边缘等低层特征
  • layer3学习到的特征,一些纹理特征,如网格纹理
  • layer4学习到的特征会稍微复杂些,比如狗的头部形状
  • layer5学习到的是完整一些的,比如关键性的区分特征

3.3.6 总结

  • 掌握LeNet-5 结构计算
  • 了解卷积常见网络结构
  • 掌握1x1卷积结构作用
  • 掌握Inception结构作用

3.5 CNN网络实战技巧

学习目标

  • 目标

  • 了解迁移学习以及技巧

  • 应用

来看一个个问题如果 要做一个具体场景的计算机视觉任务,那么从头开始训练一个网络是合适的选择吗?怎么样才能避免浪费过多的计算时间?

3.5.1 迁移学习(Transfer Learning)

3.5.1.1 介绍
  • 定义

  • 迁移学习就是利用数据、任务或模型之间的相似性,将在旧的领域学习过或训练好的模型,应用于新的领域这样的一个过程。

  • 两个任务的输入属于同一性质:要么同是图像、要么同是语音或其他

迁移学习到底在什么情况下使用呢?有两个方面需要 考虑的

  • 1、当 有海量的数据资源时,可以不需要迁移学习,机器学习系统很容易从海量数据中学习到一个鲁棒性很强的模型。但通常情况下, 需要研究的领域可获得的数据极为有限,在少量的训练样本上精度极高,但是泛化效果极差。
  • 2、训练成本,很少去从头开始训练一整个深度卷积网络,从头开始训练一个卷积网络通常需要较长时间且依赖于强大的 GPU 计算资源。
3.5.1.2 方法
  • 最常见的称呼叫做fine tuning,即微调

  • 已训练好的模型,称之为Pre-trained model

通常 需要加载以训练好的模型,这些可以是一些机构或者公司在ImageNet等类似比赛上进行训练过的模型。TensorFlow同样也提供了相关模型地址:https://github.com/tensorflow/models/tree/master/research/slim

下图是其中包含的一些模型:

3.5.1.3 过程

这里 举一个例子,假设有两个任务A和B,任务 A 拥有海量的数据资源且已训练好,但并不是 的目标任务,任务 B 是 的目标任务。下面的网络模型假设是已训练好的1000个类别模型

而B任务假设是某个具体场景如250个类别的食物识别,那么该怎么去做

  • 1、建立自己的网络,在A的基础上,修改最后输出结构,并加载A的模型参数
  • 2、根据数据大小调整

  • 如果B任务数据量小,那么 可以选择将A模型的所有的层进行freeze(可以通过Tensorflow的trainable=False参数实现),而剩下的输出层部分可以选择调整参数训练

Scikit-learn 文档

  • 如果B任务的数据量大,那么 可以将A中一半或者大部分的层进行freeze,而剩下部分的layer可以进行新任务数据基础上的微调

总结

每日

1、使用卷积神经网络进行手势识别

  • SIGNS数据集介绍

识别图中的手势,以促进从语言障碍者到不懂手语的人的通信。

  • 训练集:1080个图像(64乘64像素)的符号表示从0到5的数字(每个数字180个图像)。
  • 测试集:120张图片(64乘64像素)的符号,表示从0到5的数字(每个数字20张图片)。

  • 使用卷积网络进行识别

  • 设定好固定的网路结构:

  • layer1:

    • conv1:padding 'SAME',8个filters:3 x 3 x 3,strides:1
    • RELU
    • pool1:1:window 2 x 2, sride 2, padding 'SAME'
  • layer2:

    • conv2:16个filters:3 x 3 x 8,strides:1,padding 'SAME'
    • RELU
    • pool1:1:window 2 x 2, sride 2, padding 'SAME'
  • API

  • Z = tf.nn.conv2d(X, W, strides=[1, 1, 1, 1], padding='SAME')

  • A = tf.nn.relu(Z)
  • P = tf.nn.max_pool(A, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')

SQLAlchemy 文档


🚀✨ (未完待续)项目系列下一章

📚下一篇 将进入更精彩的环节! 🔔 记得收藏 & 关注,第一时间获取更新! 🍅 一起见证整个系列逐步成型的全过程。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐