深度学习——torch学习笔记
文章平均质量分 91
以《动手学深度学习》 为参考,对其notebook进行翻译注释。记录学习过程,也辅助大家一同学习理解。
俱往矣`
上市公司算法团队负责人,主要工作方向:LLM、AI agent。
展开
-
长短时记忆神经网络(LSTM)——【torch学习笔记】
LSTM中引入了三个门:输入门、遗忘门和输出门。除此之外,我们还引入了记忆单元,其形状与隐藏状态相同。严格来说,这只是隐藏状态的一个花哨版本,是为记录额外信息而定制的。原创 2022-06-15 14:16:14 · 2119 阅读 · 1 评论 -
深度递归神经网络 ——【torch学习笔记】
可以在门控机制中增加额外的非线性。也就是说,我们可以不使用单一的感知器,而使用多层。这使得LSTM的机制没有改变。相反,它使其更加复杂。如果我们相信LSTM机制描述了潜伏变量自回归模型工作的某种形式的普遍真理,这将是有意义的。...原创 2022-06-14 16:22:24 · 425 阅读 · 0 评论 -
门控循环单元(GRU)——【torch学习笔记】
普通RNN和GRU之间的关键区别在于,后者支持隐藏状态的门控。这意味着我们有专门的机制来控制隐藏状态何时被更新,何时被重置。原创 2022-06-11 14:03:11 · 1525 阅读 · 0 评论 -
从零开始实现递归神经网络——【torch学习笔记】
根据RNN的定义来实现这个模型,从底层方法从零实现RNN。数据概况如下:一、独热编码独热编码向量提供了一种简单的方法,将单词表达为向量,以便在深度网络中处理它们。简而言之,我们将每个词映射到一个不同的单元向量:假设字典中不同的字符数量为𝑁(len(vocab)),每个字符与0到𝑁-1的连续整数的索引中的一个值有一一对应关系。如果一个字符的索引是整数𝑖,那么我们创建一个长度为𝑁的所有0的向量𝐞𝑖,并将位置𝑖的元素设置为1,......原创 2022-06-07 21:34:13 · 429 阅读 · 0 评论 -
构建词表与抽样——【torch学习笔记】
语言符号(又称词)的数量很大,而且分布很不均匀。因此,预测下一个符号的简单多类分类方法并不总是很有效。此外,我们需要把文本变成我们可以优化的格式,即我们需要把它映射到向量。原创 2022-06-02 14:30:16 · 769 阅读 · 0 评论 -
n-grams语言模型——【torch学习笔记】
应该如何对一个文件,甚至是一个词的序列进行建模,从应用基本的概率规则开始。为了计算语言模型,我们需要计算单词的概率和给定前几个单词的条件概率,即语言模型参数。原创 2022-06-01 14:52:53 · 795 阅读 · 0 评论 -
序列模型——【torch学习笔记】
序列模型需要专门的统计工具来进行估计。两个流行的模型是自回归模型和潜在变量自回归模型。原创 2022-05-24 20:20:17 · 411 阅读 · 0 评论 -
平行串联的网络(GoogLeNet)——【torch学习笔记】
平行串联的网络(GoogLeNet)引用翻译:《动手学深度学习》2014年,Szegedy等人在ImageNet挑战赛中获胜,提出了一个结合NiN和重复块范式的优势的结构。该论文的一个重点是解决哪些大小的卷积核是最好的问题。毕竟,以前流行的网络采用了小到1×1,大到11×11的选择。本文的一个见解是,有时采用不同大小的核的组合可能是有利的。在这一节中,我们将介绍GoogLeNet,介绍原始模型的一个略微简化的版本–我们省略了一些特设的功能,这些功能是为了稳定训练而添加的,但现在有了更好的训练算法,这些功原创 2022-05-06 22:03:44 · 446 阅读 · 0 评论 -
网络中的网络(NiN)——【torch学习笔记】
不小心使用密集层可能会完全放弃表征的空间结构,网络中的网络(NiN)块提供了一个替代方案。它们是由Lin, Chen和Yan在2013年提出的,基于一个非常简单的洞察力--在每个像素的通道上分别使用MLP。原创 2022-04-28 21:28:06 · 772 阅读 · 0 评论 -
使用区块的网络(VGG)——【torch学习笔记】
使用区块的网络(VGG-11)引用翻译:《动手学深度学习》虽然AlexNet证明了深度卷积神经网络可以取得良好的效果,但它并没有提供一个通用的模板来指导后续研究人员设计新的网络。这个领域的进展反映了芯片设计中的进展,工程师们从放置晶体管到逻辑元素再到逻辑块。同样,神经网络架构的设计也逐渐变得更加抽象,研究人员从单个神经元到整个层,再到现在的块,层的重复模式。使用块的想法首先出现在牛津大学的视觉几何小组(VGG)。在他们同名的VGG网络中,通过使用循环和子程序,很容易在任何现代深度学习框架的代码中实现原创 2022-04-27 22:00:14 · 894 阅读 · 0 评论 -
深度卷积神经网络(AlexNet)——【torch学习笔记】
AlexNet于2012年推出,以突破性的ImageNet分类论文130的第一作者Alex Krizhevsky命名。AlexNet采用了8层卷积神经网络,在2012年ImageNet大规模视觉识别挑战赛中以惊人的巨大优势获胜。这个网络首次证明了通过学习获得的特征可以超越人工设计的特征,从而打破了计算机视觉领域的原有模式。原创 2022-04-26 21:00:24 · 2827 阅读 · 1 评论 -
卷积神经网络(LeNet)——【torch学习笔记】
卷积神经网络(LeNet)引用翻译:《动手学深度学习》我们现在准备把所有的工具放在一起,部署你的第一个全功能卷积神经网络。在我们第一次接触图像数据时,我们将多层感知器应用于Fashion-MNIST数据集中的服装图片。Fashion-MNIST中的每张图片都由一个28×28的二维矩阵组成。为了使这些数据适用于多层感知器,即把输入作为一维固定长度的向量来接收,我们首先把每张图片扁平化,产生长度为784的向量,然后用一系列全连接的层来处理它们。现在我们已经引入了卷积层,我们可以将图像保持在原来的空间组织网原创 2022-04-25 21:11:45 · 2310 阅读 · 1 评论 -
池化——【torch学习笔记】
池化引用翻译:《动手学深度学习》当我们处理图像(或其他数据源)时,我们最终会想降低图像的分辨率。毕竟,我们通常希望输出一个不依赖于原始图像维度的估计值。其次,在检测低级别的特征时,比如边缘检测(我们在卷积层一节中谈到了这一点),我们通常希望对转换有一定程度的不变性。例如,如果我们把黑白分明的图像X,向右移动一个像素,即Z[i,j]=X[i,j+1],那么新图像Z的输出会有很大的不同。边缘将移位一个像素,所有的激活也随之移位。在现实中,物体几乎不可能完全出现在同一个地方。事实上,即使有一个三脚架和一个静止原创 2022-04-25 20:31:26 · 4587 阅读 · 0 评论 -
多输入、输出通道——【torch学习笔记】
多个输入和输出通道引用翻译:《动手学深度学习》虽然我们已经描述了组成每个图像的多个通道(例如,彩色图像有标准的RGB通道来表示红色、绿色和蓝色的数量),但到目前为止,我们通过只用一个输入和一个输出通道来简化所有的数字例子。这使我们能够把我们的输入、卷积核和输出都视为二维数组。当我们将通道添加到混合中时,我们的输入和隐藏表示都变成了三维数组。例如,每个RGB输入图像的形状为3×ℎ×𝑤。我们把这个大小为3的轴称为通道维。在本节中,我们将深入研究具有多个输入和多个输出通道的卷积核。一、多个输入通道当输入原创 2022-04-24 23:09:18 · 2137 阅读 · 0 评论 -
填充和跨度——【torch学习笔记】
填充和跨度引用翻译:《动手学深度学习》在上一节的例子中,我们用一个高度和宽度为3的输入和一个高度和宽度为2的卷积核来得到一个高度和宽度为2的输出。一般来说,假设输入的形状是nh × nw,卷积核的窗口形状是kh × kw,那么输出的形状将是(nh − kh + 1) × (nw − kw + 1)。因此,卷积层的输出形状是由输入的形状和卷积核窗的形状决定的。在一些情况下,我们可能想改变输出的维度。多层卷积会减少边界上的可用信息,往往比我们想要的要多得多。如果我们从一个240x240像素的图像开始,原创 2022-04-23 19:53:06 · 2314 阅读 · 0 评论 -
图像的卷积——【torch学习笔记】
图像的卷积引用翻译:《动手学深度学习》现在我们已经了解了卷积层在理论上是如何工作的,我们准备看看这在实践中是如何工作的。由于我们通过卷积神经网络对图像数据的适用性来激励它,我们将在我们的例子中坚持使用图像数据,并开始重新审视我们在上一节中介绍的卷积层。我们注意到,严格来说,卷积层是一个轻微的误称,因为操作通常表示为交叉关联。一、交叉相关运算在卷积层中,一个输入数组和一个相关核数组被结合起来,通过交叉相关操作产生一个输出数组。让我们看看这在二维空间是如何工作的。在我们的例子中,输入是一个高度为3,宽度原创 2022-04-22 08:53:13 · 2171 阅读 · 0 评论 -
torch文件保存与加载——【torch学习笔记】
模型文件保存与加载引用翻译:《动手学深度学习》到目前为止,我们讨论了如何处理数据,如何建立、训练和测试深度学习模型。然而,在某些时候,我们很可能对我们获得的结果感到满意,我们希望保存结果以便以后使用和分发。同样,当运行一个漫长的训练过程时,保存中间结果(检查点)是最好的做法,以确保我们不会在被服务器的电源线绊倒时失去几天的计算量。同时,我们可能想加载一个预训练的模型(例如,我们可能有英语的词嵌入,并将其用于我们花哨的垃圾邮件分类器)。对于所有这些情况,我们都需要加载和存储单个权重向量和整个模型。本节讨论原创 2022-04-21 09:03:10 · 3893 阅读 · 0 评论 -
torch自定义层——【torch学习笔记】
自定义层引用翻译:《动手学深度学习》深度学习成功的原因之一是可以在深度网络中使用的广泛的层中找到。这允许了巨大程度的定制和适应。例如,科学家们已经发明了图像、文本、集合、循环、动态编程,甚至计算机程序的层。你迟早会遇到一个在Torch中还不存在的层,甚至更好的是,你最终会发明一个新的层,对你手头的问题很有效。这时就需要建立一个自定义层。本节将告诉你如何做。没有参数的图层 由于这略显复杂,我们从一个没有任何固有参数的自定义图层(又称模块)开始。我们的第一步与我们之前介绍模块时非常相似。下面的Center原创 2022-04-20 22:28:24 · 1295 阅读 · 0 评论 -
延迟初始化——【torch学习笔记】
延迟初始化引用翻译:《动手学深度学习》Pytorch(或任何其他框架)没有办法预测网络的输入维度。以后,在处理卷积网络和图像时,这个问题会变得更加相关,因为输入维度(即图像的分辨率)会在很远的范围内影响后续层的维度。因此,在编写代码时不需要知道维度是多少就能设置参数,可以大大简化统计建模。在下面的内容中,我们将以初始化为例来讨论这一点。毕竟,我们不能初始化那些我们不知道存在的变量。一、实例化一个网络import torchimport torch.nn as nndef getnet(in_原创 2022-04-20 15:56:01 · 2794 阅读 · 0 评论 -
神经网络参数管理——【torch学习笔记】
参数管理引用翻译:《动手学深度学习》训练深度网络的最终目的是为一个给定的架构找到好的参数值。当一切都很标准时,torch.nn.Sequential类是一个完全好的工具。然而,很少有模型是完全标准的,大多数科学家都想建立一些新颖的东西。本节展示了如何操作参数。特别是我们将涵盖以下几个方面。1、为调试、诊断、使其可视化或保存而访问参数,是了解如何使用自定义模型的第一步。2、其次,我们要以特定的方式设置它们,例如为了初始化目的。我们讨论参数初始化器的结构。3、最后,我们展示了如何通过构建共享一些参数的原创 2022-04-20 10:19:16 · 1958 阅读 · 0 评论 -
神经网络模型的层和块——【torch学习笔记】
为了实现这些复杂的网络,我们引入了神经网络块的概念。 块(block)可以描述单个层、由多个层组成的组件或整个模型本身。 使用块进行抽象的一个好处是可以将一些块组合成更大的组件, 这一过程通常是递归的。原创 2022-04-19 21:21:15 · 4890 阅读 · 1 评论 -
在Kaggle上预测房价——【torch学习笔记】
kaggle实例学习,应用torch完成回归模型。原创 2022-04-19 09:05:45 · 2097 阅读 · 1 评论 -
底层实现dropout——【torch学习笔记】
dropout可以作为训练神经网络的一种trick选择,在每个训练批次中,以某种概率忽略一定数量的神经元.可以明显地减少过拟合现象。通过学习dropout底层实现方法,以加深理解。原创 2022-04-18 21:56:09 · 2369 阅读 · 0 评论 -
欠拟合和过拟合——【torch学习笔记】
分析过拟合与欠拟合的区别。通过模拟生成数据训练进行验证。原创 2022-04-13 21:01:29 · 771 阅读 · 0 评论 -
底层实现多层感知器——【torch学习笔记】
从底层实现多层感知机。分析每个模块的意义,便于加深对神经网络的认识。原创 2022-04-12 20:25:52 · 3050 阅读 · 0 评论 -
隐藏层及损失函数——【torch学习笔记】
一个线性函数的线性函数本身就是一个线性函数。如何通过激活函数得到非线性模型呢?原创 2022-04-12 16:42:19 · 2475 阅读 · 0 评论 -
线性回归底层实现——【torch学习笔记】
从零开始的线性回归实现引用翻译:《动手学深度学习》与另一篇添加链接描述实现线性回归——【torch学习笔记】相对应,本篇更偏向于各函数的底层实现。在这一节中,以及接下来的类似章节中,将实现线性回归的所有部分。数据管道、模型、损失函数,和梯度下降优化器,从头开始。今天的深度学习框架可以自动完成几乎所有这些工作。但是,如果你从来没有学会从头开始实现这些东西。那么你可能永远不会真正理解模型的工作原理。此外,当需要定制模型的时候。定义我们自己的层、损失函数等等。知道事情在引擎盖下是如何工作的将会很有用。原创 2022-04-11 21:50:45 · 896 阅读 · 0 评论 -
实现线性回归——【torch学习笔记】
实现线性回归引用翻译:《动手学深度学习》深度学习的热潮激发了各种成熟的软件框架的发展,这些框架将实现深度学习模型的大部分重复性工作自动化。可以仅依靠NDarray进行数据存储和线性代数,以及autograd软件包中的自动分化功能。在实践中,由于许多更抽象的操作,如数据迭代器、损失函数、模型架构和优化器,都非常普遍,深度学习库也会给我们提供这些库函数。在本节中,我们将学习如何用DataLoader更简洁地实现的线性回归模型。一、生成数据集首先,我们将生成与上一节中使用的相同的数据集。impor原创 2022-04-11 21:13:25 · 2368 阅读 · 0 评论 -
朴素贝叶斯分类——【torch学习笔记】
朴素贝叶斯分类引用翻译:《动手学深度学习》在我们担心复杂的优化算法或GPU之前,我们已经可以部署我们的第一个分类器,只依靠简单的统计估计器和我们对条件独立性的理解。学习就是要做假设。如果我们想对一个从未见过的新数据点进行分类,我们就必须对哪些数据点是相互类似的做出一些假设。y^=argmaxy p(y∣x)\hat{y} = \text{argmax}_y \> p(y | \mathbf{x})y^=argmaxyp(y∣x)不幸的是,这要求我们对𝑝(𝑦|𝐱)的每个值𝐱=𝑥1,…,𝑥𝑑进原创 2022-04-07 21:20:49 · 2097 阅读 · 0 评论