热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

百度飞桨架构师手把手带你零基础实践深度学习——打卡计划(PaddlePaddle)第二周

百度飞桨架构师手把手带你零基础实践深度学习——打卡计划(PaddlePaddle)第二周计算机视觉卷积神经网络卷积(Convolution)池化(Pooling)ReLU**函数批

百度飞桨架构师手把手带你零基础实践深度学习——打卡计划(PaddlePaddle)第二周

  • 计算机视觉
  • 卷积神经网络
    • 卷积(Convolution)
    • 池化(Pooling)
    • ReLU**函数
    • 批归一化(Batch Normalization)
    • 丢弃法(Dropout)

本周的主要内容是卷积神经网络——目前计算机视觉中使用最普遍的模型结构。

计算机视觉

识别图片中的物体,对人类来讲是十分简单的事情,但是,对于计算机来说就没那么简单了。由于拍摄角度等其他一系列不确定因素,人想直接对计算机编程来识别图片中的物体是非常困难的。可是我们可以将识别图片这个大任务分为几个小任务。
百度飞桨架构师手把手带你零基础实践深度学习——打卡计划(PaddlePaddle)第二周

  • (a) Image Classification: 图像分类,用于识别图像中物体的类别(如:bottle、cup、cube)。
  • (b) Object Localization: 目标检测,用于检测图像中每个物体的类别,并准确标出它们的位置。
  • © Semantic Segmentation: 图像语义分割,用于标出图像中每个像素点所属的类别,属于同一类别的像素点用一个颜色标识。
  • (d) Instance Segmentation: 实例分割,值得注意的是,(b)中的目标检测任务只需要标注出物体位置,而(d)中的实例分割任务不仅要标注出物体位置,还需要标注出物体的外形轮廓。

卷积神经网络

图片不同于其他类型的数据,其位置信息是十分重要的。卷积神经网络进行特征提取,既能提取到相邻像素点之间的特征模式,又能保证参数的个数不随图片尺寸变化。
卷积神经网络基础模块

  • 卷积(Convolution)
  • 池化(Pooling)
  • ReLU**函数
  • 批归一化(Batch Normalization)
  • 丢弃法(Dropout)

百度飞桨架构师手把手带你零基础实践深度学习——打卡计划(PaddlePaddle)第二周
典型的卷积神经网络结构,多层卷积和池化层组合作用在输入图片上,在网络的最后通常会加入一系列全连接层,ReLU**函数一般加在卷积或者全连接层的输出上,网络中通常还会加入Dropout来防止过拟合。

卷积(Convolution)

飞桨卷积算子对应的API是paddle.fluid.dygraph.Conv2D,用户可以直接调用API进行计算,也可以在此基础上修改。常用的参数如下:

  • num_channels (int) - 输入图像的通道数。
  • num_fliters (int) - 卷积核的个数,和输出特征图通道数相同。
  • filter_size(int|tuple) - 卷积核大小,可以是整数,比如3,表示卷积核的高和宽均为3 ;或者是两个整数的list,例如[3,2],表示卷积核的高为3,宽为2。
  • stride(int|tuple) - 步幅,可以是整数,默认值为1,表示垂直和水平滑动步幅均为1;或者是两个整数的list,例如[3,2],表示垂直滑动步幅为3,水平滑动步幅为2。
  • padding(int|tuple) - 填充大小,可以是整数,比如1,表示竖直和水平边界填充大小均为1;或者是两个整数的list,例如[2,1],表示竖直边界填充大小为2,水平边界填充大小为1。
  • act(str)- 应用于输出上的**函数,如Tanh、Softmax、Sigmoid,Relu等,默认值为None。

池化(Pooling)

池化是使用某一位置的相邻输出的总体统计特征代替网络在该位置的输出。
好处:

  1. 当输入数据做出少量平移时,经过池化函数后的大多数输出还能保持不变。
  2. 由于池化之后特征图会变得更小,如果后面连接的是全连接层,能有效的减小神经元的个数,节省存储空间并提高计算效率。

池化通常有两种方法,平均池化和最大池化。
百度飞桨架构师手把手带你零基础实践深度学习——打卡计划(PaddlePaddle)第二周

ReLU**函数

百度飞桨架构师手把手带你零基础实践深度学习——打卡计划(PaddlePaddle)第二周
ReLU函数与Sigmoid函数相比,虽然在x<0的地方,ReLU函数的导数为0。但是在x≥0的地方,ReLU函数的导数为1,能够将y的梯度完整的传递给x,而不会引起梯度消失。

批归一化(Batch Normalization)

为了算法的稳定和收敛,我们通常会对神经网络的数据进行标准化处理,使得样本数据集满足均值为0,方差为1的统计分布。但是对于参数不断更新的深度神经网络来说,这是不够的,比较靠后的那些层,其接收到的输入仍然是剧烈变化的,通常会导致数值不稳定,模型很难收敛。BatchNorm能够使神经网络中间层的输出变得更加稳定,并有如下三个优点:

  • 使学习快速进行(能够使用较大的学习率)
  • 降低模型对初始值的敏感性
  • 从一定程度上抑制过拟合
    BatchNorm主要思路是在训练时按mini-batch为单位,对神经元的数值进行归一化,使数据的分布满足均值为0,方差为1。

丢弃法(Dropout)

百度飞桨架构师手把手带你零基础实践深度学习——打卡计划(PaddlePaddle)第二周

丢弃法就是在神经网络学习过程中,随机删除一部分神经元。训练时,随机选出一部分神经元,将其输出设置为0,这些神经元将不对外传递信号。其在一定程度上能抑制过拟合。但是训练时由于部分神经元被随机丢弃了,输出数据的总大小会变小,预测时却没有丢弃神经元,这将导致训练和预测时数据的分布不一样。
解决办法:

  • downgrade_in_infer
    训练时以比例rrr随机丢弃一部分神经元,不向后传递它们的信号;预测时向后传递所有神经元的信号,但是将每个神经元上的数值乘以 (1−r)。
  • upscale_in_train
    训练时以比例r随机丢弃一部分神经元,不向后传递它们的信号,但是将那些被保留的神经元上的数值除以 (1−r);预测时向后传递所有神经元的信号,不做任何处理。

推荐阅读
  • Python 中 filter、map 和 reduce 函数详解
    本文深入探讨了 Python 编程语言中 filter、map 和 reduce 函数的功能与用法,包括它们的基本语法、应用场景及代码示例,旨在帮助读者更好地理解和运用这些高阶函数。 ... [详细]
  • 本文探讨了Java中有效停止线程的多种方法,包括使用标志位、中断机制及处理阻塞I/O操作等,旨在帮助开发者避免使用已废弃的危险方法,确保线程安全和程序稳定性。 ... [详细]
  • 优雅地记录API调用时长
    本文旨在探讨如何高效且优雅地记录API接口的调用时长,通过实际案例和代码示例,帮助开发者理解并实施这一技术,提高系统的可观测性和调试效率。 ... [详细]
  • 构建Python自助式数据查询系统
    在现代数据密集型环境中,业务团队频繁需要从数据库中提取特定信息。为了提高效率并减少IT部门的工作负担,本文探讨了一种利用Python语言实现的自助数据查询工具的设计与实现。 ... [详细]
  • 知识图谱与图神经网络在金融科技中的应用探讨
    本文详细介绍了融慧金科AI Lab负责人张凯博士在2020爱分析·中国人工智能高峰论坛上的演讲,探讨了知识图谱与图神经网络模型如何在金融科技领域发挥重要作用。 ... [详细]
  • 本文详细介绍了Spring AOP注解的基本概念及其实现方式,并通过实例演示了如何在项目中使用这些注解进行面向切面的编程。旨在帮助开发者更好地理解和运用Spring AOP功能。 ... [详细]
  • 深入解析轻量级数据库 SQL Server Express LocalDB
    本文详细介绍了 SQL Server Express LocalDB,这是一种轻量级的本地 T-SQL 数据库解决方案,特别适合开发环境使用。文章还探讨了 LocalDB 与其他轻量级数据库的对比,并提供了安装和连接 LocalDB 的步骤。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 将XML数据迁移至Oracle Autonomous Data Warehouse (ADW)
    随着Oracle ADW的推出,数据迁移至ADW成为业界关注的焦点。特别是XML和JSON这类结构化数据的迁移需求日益增长。本文将通过一个实际案例,探讨如何高效地将XML数据迁移至ADW。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 本文详细介绍了 Node.js 中 OS 模块的 arch 方法,包括其功能、语法、参数以及返回值,并提供了具体的使用示例。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • 使用 Jupyter Notebook 实现 Markdown 编写与代码运行
    Jupyter Notebook 是一个开源的基于网页的应用程序,允许用户在同一文档中编写 Markdown 文本和运行多种编程语言的代码,并实时查看运行结果。 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
author-avatar
国民男神-权志龙
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有