图像卷积

图像卷积 上节我们解析了卷积层的原理,现在我们看看它的实际应用。由于卷积神经网络的设计是用于探索图像数据,本节我们将以图像为例。 互相关运算 严格来说,卷积层是个错误的叫法,因为它所表达的运算其实是互相关运算(cross-correlation),而不是卷积运算。 根据

Vincent Vincent 发布于 2024-04-07

从全连接层到卷积

从全连接层到卷积 COLAB [MXNET] Open the notebook in Colab

Vincent Vincent 发布于 2024-04-07

GPU

GPU 我们回顾了过去20年计算能力的快速增长。 简而言之,自2000年以来,GPU性能每十年增长1000倍。 本节,我们将讨论如何利用这种计算性能进行研究。 首先是如何使用单个GPU,然后是如何使用多个GPU和多个服务器(具有多个GPU)。 我们先看看如何使用单个NVIDIA GPU进行计算。 首

Vincent Vincent 发布于 2024-04-07

读写文件

读写文件 到目前为止,我们讨论了如何处理数据, 以及如何构建、训练和测试深度学习模型。 然而,有时我们希望保存训练的模型, 以备将来在各种环境中使用(比如在部署中进行预测)。 此外,当运行一个耗时较长的训练过程时, 最佳的做法是定期保存中间结果, 以确保在服务器电源被不小心断掉时,我们不会损失几天的

Vincent Vincent 发布于 2024-04-07

自定义层

自定义层 深度学习成功背后的一个因素是神经网络的灵活性: 我们可以用创造性的方式组合不同的层,从而设计出适用于各种任务的架构。 例如,研究人员发明了专门用于处理图像、文本、序列数据和执行动态规划的层。 有时我们会遇到或要自己发明一个现在在深度学习框架中还不存在的层。 在这些情况下,必须构建自定义层。

Vincent Vincent 发布于 2024-04-07

延后初始化

延后初始化 到目前为止,我们忽略了建立网络时需要做的以下这些事情: 我们定义了网络架构,但没有指定输入维度。 我们添加层时没有指定前一层的输出维度。 我们在初始化参数时,甚至没有足够的信息来确定模型应该包含多少参数。 有些读者可能会对我们的代码能运行感到惊讶。 毕竟,深度学习框架无法判断网络的输入维

Vincent Vincent 发布于 2024-04-07

参数管理

参数管理 在选择了架构并设置了超参数后,我们就进入了训练阶段。 此时,我们的目标是找到使损失函数最小化的模型参数值。 经过训练后,我们将需要使用这些参数来做出未来的预测。 此外,有时我们希望提取参数,以便在其他环境中复用它们, 将模型保存下来,以便它可以在其他软件中执行, 或者为了获得科学的理解而进

Vincent Vincent 发布于 2024-04-07

层和块

层和块 之前首次介绍神经网络时,我们关注的是具有单一输出的线性模型。 在这里,整个模型只有一个输出。 注意,单个神经网络 (1)接受一些输入; (2)生成相应的标量输出; (3)具有一组相关 参数(parameters),更新这些参数可以优化某目标函数。 然后,当考虑具有多个输出的网络时, 我们利用

Vincent Vincent 发布于 2024-04-07

实战Kaggle比赛:预测房价

实战Kaggle比赛:预测房价 COLAB [MXNET] Open the notebook in Colab

Vincent Vincent 发布于 2024-04-07

环境和分布偏移

环境和分布偏移 前面我们学习了许多机器学习的实际应用,将模型拟合各种数据集。 然而,我们从来没有想过数据最初从哪里来?以及我们计划最终如何处理模型的输出? 通常情况下,开发人员会拥有一些数据且急于开发模型,而不关注这些基本问题。 许多失败的机器学习部署(即实际应用)都可以追究到这种方式。 有时,根据

Vincent Vincent 发布于 2024-04-07

数值稳定性和模型初始化

数值稳定性和模型初始化 到目前为止,我们实现的每个模型都是根据某个预先指定的分布来初始化模型的参数。 有人会认为初始化方案是理所当然的,忽略了如何做出这些选择的细节。甚至有人可能会觉得,初始化方案的选择并不是特别重要。 相反,初始化方案的选择在神经网络学习中起着举足轻重的作用, 它对保持数值稳定性至

Vincent Vincent 发布于 2024-04-07

前向传播、反向传播和计算图

前向传播、反向传播和计算图 我们已经学习了如何用小批量随机梯度下降训练模型。 然而当实现该算法时,我们只考虑了通过前向传播(forward propagation)所涉及的计算。 在计算梯度时,我们只调用了深度学习框架提供的反向传播函数,而不知其所以然。 梯度的自动计算(自动微分)大大简化了深度学习

Vincent Vincent 发布于 2024-04-07

暂退法(Dropout)

暂退法(Dropout) 在之前, 我们介绍了通过惩罚权重的�2范数来正则化统计模型的经典方法。 在概率角度看,我们可以通过以下论证来证明这一技术的合理性: 我们已经假设了一个先验,即权重的值取自均值为0的高斯分布。 更直观的是,我们希望模型深度挖掘特征,即将其权重分散到许多特征中, 而不是过于依赖

Vincent Vincent 发布于 2024-04-07

权重衰减

权重衰减 前一节我们描述了过拟合的问题,本节我们将介绍一些正则化模型的技术。 我们总是可以通过去收集更多的训练数据来缓解过拟合。 但这可能成本很高,耗时颇多,或者完全超出我们的控制,因而在短期内不可能做到。 假设我们已经拥有尽可能多的高质量数据,我们便可以将重点放在正则化技术上。 回想一下,在多项式

Vincent Vincent 发布于 2024-04-07

模型选择、欠拟合和过拟合

模型选择、欠拟合和过拟合 作为机器学习科学家,我们的目标是发现模式(pattern)。 但是,我们如何才能确定模型是真正发现了一种泛化的模式, 而不是简单地记住了数据呢? 例如,我们想要在患者的基因数据与痴呆状态之间寻找模式, 其中标签是从集合痴呆轻度认知障碍健康{痴呆,轻度认知障碍,健康}中提取的

Vincent Vincent 发布于 2024-04-07

多层感知机的简洁实现

多层感知机的简洁实现 本节将介绍通过高级API更简洁地实现多层感知机。 from mxnet import gluon, init, npx from mxnet.gluon import nn from d2l import mxnet as d2l npx.set_np()

Vincent Vincent 发布于 2024-04-07

多层感知机的从零开始实现

多层感知机的从零开始实现 我们已经描述了多层感知机(MLP), 现在让我们尝试自己实现一个多层感知机。 为了与之前softmax回归 获得的结果进行比较, 我们将继续使用Fashion-MNIST图像分类数据集 。 MXN

Vincent Vincent 发布于 2024-04-07

多层感知机

多层感知机 我们介绍了softmax回归,训练分类器从低分辨率图像中识别10类服装。 在这个过程中,我们学习了如何处理数据,如何将输出转换为有效的概率分布, 并应用适当的损失函数,根据模型参数最小化损失。 我们已经在简单的线性模型背景下掌握了这些知识, 现在我们可以开始对深度神经网络的探索,这也是本

Vincent Vincent 发布于 2024-04-07

softmax回归的简洁实现

softmax回归的简洁实现 在 3.3节中, 我们发现通过深度学习框架的高级API能够使实现 线性回归变得更加容易。 同样,通过深度学习框架的高级API也能更方便地实现softmax回归模型。 本节如在

Vincent Vincent 发布于 2024-04-07

softmax回归的从零开始实现

softmax回归的从零开始实现 就像我们从零开始实现线性回归一样, 我们认为softmax回归也是重要的基础,因此应该知道实现softmax回归的细节。 本节我们将使用刚刚在 3.5节中引入的Fashion-MNIST数据集, 并设置数据

Vincent Vincent 发布于 2024-04-07

图像分类数据集

图像分类数据集 MNIST数据集 (LeCun et al., 1998) 是图像分类中广泛使用的数据集之一,但作为基准数据集过于简单。 我们将使用类似但更复杂的Fashion-MNIST数据集 (

Vincent Vincent 发布于 2024-04-07

softmax回归

softmax回归 在 3.1节中我们介绍了线性回归。 随后,在

Vincent Vincent 发布于 2024-04-07

线性回归的简洁实现

线性回归的简洁实现 在过去的几年里,出于对深度学习强烈的兴趣, 许多公司、学者和业余爱好者开发了各种成熟的开源框架。 这些框架可以自动化基于梯度的学习算法中重复性的工作。 在 3.2节中,我们只运用了: (1)通过张量来进行数据存储和线性代数; (2)通过自动微分来计算梯度。 实际上,由于

Vincent Vincent 发布于 2024-04-07

线性回归的从零开始实现

线性回归的从零开始实现 在了解线性回归的关键思想之后,我们可以开始通过代码来动手实现线性回归了。 在这一节中,我们将从零开始实现整个方法, 包括数据流水线、模型、损失函数和小批量随机梯度下降优化器。 虽然现代的深度学习框架几乎可以自动化地进行所有这些工作,但从零开始实现可以确保我们真正知道自己在做什

Vincent Vincent 发布于 2024-04-07

线性回归

线性回归 回归(regression)是能为一个或多个自变量与因变量之间关系建模的一类方法。 在自然科学和社会科学领域,回归经常用来表示输入和输出之间的关系。 在机器学习领域中的大多数任务通常都与预测(prediction)有关。 当我们想预测一个数值时,就会涉及到回归问题。 常见的例子包括:预测价

Vincent Vincent 发布于 2024-04-07

查阅文档

查阅文档 由于篇幅限制,本书不可能介绍每一个MXNet函数和类。 API文档、其他教程和示例提供了本书之外的大量文档。 本节提供了一些查看MXNet API的指导。 2.7.1. 查找模块中的所有函数和类 为了知道模块中可以调用哪些函数和类,可以调用dir函数。 例如,我们可以查询随机数生成模块中的

Vincent Vincent 发布于 2024-04-07

概率

概率 简单地说,机器学习就是做出预测。 根据病人的临床病史,我们可能想预测他们在下一年心脏病发作的概率。 在飞机喷气发动机的异常检测中,我们想要评估一组发动机读数为正常运行情况的概率有多大。 在强化学习中,我们希望智能体(agent)能在一个环境中智能地行动。 这意味着我们需要考虑在每种可行的行为下

Vincent Vincent 发布于 2024-04-07

自动微分

自动微分 正如 2.4节中所说,求导是几乎所有深度学习优化算法的关键步骤。 虽然求导的计算很简单,只需要一些基本的微积分。 但对于复杂的模型,手工进行更新是一件很痛苦的事情(而且经常容易出错)。 深度学习框架通过自动计算导数,即自动微分(automatic differentiation)来加快求导

Vincent Vincent 发布于 2024-04-07

微积分

微积分 在2500年前,古希腊人把一个多边形分成三角形,并把它们的面积相加,才找到计算多边形面积的方法。 为了求出曲线形状(比如圆)的面积,古希腊人在这样的形状上刻内接多边形。 如 图2.4.1所示,内接多边形的等长边越多,就越接近圆。 这个过程也被称为逼近法(method of exhaustio

Vincent Vincent 发布于 2024-04-07

线性代数

线性代数 在介绍完如何存储和操作数据后,接下来将简要地回顾一下部分基本线性代数内容。 这些内容有助于读者了解和实现本书中介绍的大多数模型。 本节将介绍线性代数中的基本数学对象、算术和运算,并用数学符号和相应的代码实现来表示它们。 2.3.1. 标量 如果你曾经在餐厅支付餐费,那么应该已经知道一些基本

Vincent Vincent 发布于 2024-04-07

数据预处理

数据预处理 为了能用深度学习来解决现实世界的问题,我们经常从预处理原始数据开始, 而不是从那些准备好的张量格式数据开始。 在Python中常用的数据分析工具中,我们通常使用pandas软件包。 像庞大的Python生态系统中的许多其他扩展包一样,pandas可以与张量兼容。 本节我们将简要介绍使用p

Vincent Vincent 发布于 2024-04-07

数据操作

数据操作 为了能够完成各种数据操作,我们需要某种方法来存储和操作数据。 通常,我们需要做两件重要的事:(1)获取数据;(2)将数据读入计算机后对其进行处理。 如果没有某种方法来存储数据,那么获取数据是没有意义的。 首先,我们介绍�维数组,也称为张量(tensor)。 使用过Python中NumPy计

Vincent Vincent 发布于 2024-04-07

知识概要

引言 时至今日,人们常用的计算机程序几乎都是软件开发人员从零编写的。 比如,现在开发人员要编写一个程序来管理网上商城。 经过思考,开发人员可能提出如下一个解决方案: 首先,用户通过Web浏览器(或移动应用程序)与应用程序进行交互; 紧接着,应用程序与数据库引擎进行交互,以保存交易历史记录并跟踪每个用

Vincent Vincent 发布于 2024-04-07