动手学深度学习
文章平均质量分 84
手撕核心算法与笔记
SaltyFish_Go
未来某优质的算法工程师
展开
-
Transformer结构解析和其中的块的原理
多头注意力transformer的架构逐位前馈网络层归一化Transformer是一个使用encoder-decoder架构,纯使用attention注意力机制,编码器和解码器中都有很多的transformer块,每个块里都使用了多头注意力,并且用逐位前馈网络,和layer-norm层归一化(batchnorm不适合nlp,因为句子不一样长,维度和特征不一样)。多头注意力通过不同的注意力机制的方法集合concat,也就是用同一对key,val...原创 2022-02-14 14:32:41 · 1631 阅读 · 0 评论 -
Attention注意力机制原理及在seq2seq中的应用(Bahadanau Attention)
心理学定义:在复杂的情况下关注值得注意的点“是否包含自主性提示”将注意力机制与全连接层或汇聚层区别开来:卷积、全连接、pooling都是只考虑非意志线索;注意力机制则考虑意志线索:意志线索(自主性提示)称为查询(query)。给定任何查询,注意力机制通过注意力汇聚(attention pooling) 将选择引导至感官输入(sensory inputs,例如中间特征表示)。 在注意力机制中,这些感官输入被称为值(value)。 更通俗的解释,每个值都与一个键(key)配对, 这可以想象为感官输.原创 2022-02-13 18:16:31 · 2689 阅读 · 0 评论 -
用encoder和decoder实现seq2seq过程
encoder与decoder的介绍第一个组件是一个编码器(encoder): 它接受一个长度可变的序列作为输入, 并将其转换为具有固定形状的编码状态。 第二个组件是解码器(decoder): 它将固定形状的编码状态映射到长度可变的序列。 这被称为编码器-解码器(encoder-decoder)架构给定一个英文的输入序列:“They”、“are”、“watching”、“.”。 首先,这种“编码器-解码器”架构将长度可变的输入序列编码成一个“状态”, 然后对该状态进行解码, 一个词元接着一个词元原创 2022-02-11 15:47:47 · 1119 阅读 · 0 评论 -
RNN循环神经网络进阶——GRU门控循环和LSTM长短期记忆网络
RNN不能处理太长的序列,因为序列信息都放在隐藏状态里面,就类似一个带时间序列的MLP, 当时间很长的时候,隐藏状态里累计了太多东西,前面很久的信息就不那么有参考价值了。因此,观察一个序列时,不是每个观察值同样重要。门控循环单元通过一些额外的控制单元,选取比较重要的内容。可学习的权重参数多了三倍,R,Z,...原创 2022-02-07 23:44:06 · 1456 阅读 · 0 评论 -
RNN循环神经网络图解概念及从零开始实现
目录RNN相关概念解析图解RNN衡量标准梯度剪裁(常用于RNN)RNNS的应用循环神经网络从零开始实现独热编码初始化模型可学习的参数初始化隐藏状态定义循环神经网络模型(train 一个batch)定义RNN类封装参数预测字符并输出梯度剪裁定义训练模型(train 一个epoch)RNN相关概念解析图解RNNRNN要做的就是把前一个时刻的信息传到下一个时刻。循环神经网络的输出取决于当前的输入和上一时刻的隐变量。隐变量中包含历史信息...原创 2022-02-05 23:40:29 · 3061 阅读 · 1 评论 -
NLP文本预处理的三大流程
文本预处理的流程先去除文本中的无关元素将文本行拆分为单词或字符词元※※制作字典,给每个token加上indices整个nlp其实就是把文本中的字词符号等看作是带有时序的变量,而文本预处理就是把这些变量做成可以进行训练的东西。先去除文本中的无关元素#@saved2l.DATA_HUB['time_machine'] = (d2l.DATA_URL + 'timemachine.txt', '090b5e7e70c295原创 2022-02-03 23:13:41 · 2350 阅读 · 0 评论 -
自回归模型的两种策略——马尔科夫假设与隐变量自回归模型
基础知识序列模型的基础由概率论中的贝叶斯公式可知得到全概率公式也就是每一个xt时刻的值,是与它之前所有时刻的值都有关系,因此如果可以通过前面的值推算出分布或者函数(不一定完全按照这个分布),那么就可以有准确的预测。序列模型自回归模型的两种策略1、(马尔科夫假设)假设在现实情况下相当长的序列xt−1,…,x1可能是不必要的, 因此我们只需要满足某个长度为ττ的时间跨度, 即使用观测序列xt−1,…,xt−τ。 当下获得的最直接的好处就是参数的数量总是不变的, 至少在t&g.原创 2022-02-03 22:23:19 · 3158 阅读 · 0 评论 -
残差网络ResNet原理及为何有效避免梯度消失
ResNet原创 2022-01-30 22:50:11 · 6227 阅读 · 4 评论 -
BatchNorm的最详细解释和手撕实现与应用代码
目录概述作用过程:源起及作用原理:手写BN代码及作用示例1、手撕BatchNorm代码2、应用实例概述批量归一化的本质目的:学习底部层的时候避免顶部层变化所以只有在使用深层的网络结构的时候才会使用BN,浅层的如mlp效果不明显优点:不会改变模型的精度,但是可以加速模型收敛首先我们先明确引起变化的原因,是每一层的方差和均值的分布不同。所以我们要固定所有层的分布,尽量符合同一个分布。批量归一化的作用原理:固定小批量里的均值和方差1、首先求出均值和方差2、.原创 2022-01-27 12:12:05 · 4796 阅读 · 0 评论 -
GoogLeNet的全面解析与手撕实现过程
目录GoogLeNet之心——Inception Block的概念GoogLeNet的实现Inception的各种后续版本GoogLeNet之心——Inception Block的概念在GoogLeNet中,基本的卷积块被称为Inception块(Inception block)。这很可能得名于电影《盗梦空间》(Inception),因为电影中的一句话“我们需要走得更深”(“We need to go deeper”)。Inception block不改变高和宽,只改变通道数。p原创 2022-01-20 21:51:57 · 3083 阅读 · 0 评论 -
多通道输入与多通道输出的理解与实现
多输入通道(互相关)例如彩色图像具有标准的RGB通道来代表红、绿和蓝。当我们添加通道时,我们的输入和隐藏的表示都变成了三维张量。例如,每个RGB输入图像具有3×h×w3×h×w的形状。将这些张量ci连结在一起可以得到形状为ci×kh×kw的卷积核。由于输入和卷积核都有ci个通道,我们可以对每个通道输入的二维张量和卷积核的二维张量进行互相关运算,再对通道求和(将ci的结果相加)得到二维张量。这是多通道输入和多输入通道卷积核之间进行二维互相关运算的结果。def corr2d_multi_in(原创 2022-01-19 18:51:58 · 3198 阅读 · 0 评论 -
卷积神经网络LeNet和深度卷积神经网络AlexNet的区别与实现
LeNet总体来看,LeNet(LeNet-5)由两个部分组成: 卷积编码器:由两个卷积层组成; 全连接层密集块:由三个全连接层组成。 每个卷积层使用5×55×5卷积核和一个sigmoid激活函数。这些层将输入映射到多个二维特征输出,通常同时增加通道的数量。第一卷积层有6个输出通道,而第二个卷积层有16个输出通道。每个2×22×2池操作(步骤2)通过空间下采样将维数减少4倍。LeNet的稠密块有三个全连接层,分别有120、84和10个输出。因为我们在执行分类任务,所以输出层原创 2022-01-20 18:34:55 · 2082 阅读 · 1 评论 -
笔记(四)——文件及模型的存储与读取(pytorch)
模型参数的保存与读取方法,可用于长时间程序定期保存模型参数,避免反复跑浪费时间原创 2021-12-20 20:21:41 · 604 阅读 · 0 评论 -
笔记(三)——网络中参数访问和初始化
在定义好我们的层和类后,参数如何访问呢在训练过程中,我们将需要使用这些参数来做出未来的预测。 此外,有时我们希望提取参数,以便在其他环境中复用它们, 将模型保存下来,以便它可以在其他软件中执行, 或者为了获得科学的理解而进行检查目录参数访问1、目标参数2、一次性访问所有函数二、参数初始化内置的初始化器。参数访问import torchfrom torch import nnnet = nn.Sequential(nn.Linear(4, 8), nn.ReL...原创 2021-12-20 18:58:28 · 862 阅读 · 0 评论 -
动手学深度学习笔记(一)——权重衰退
权重衰减的作用机理和实现原创 2021-12-12 12:53:47 · 3111 阅读 · 0 评论 -
笔记(五)——卷积从零开始实现,最直观卷积意义
卷积核的理解,手撕卷积算法的实现,特征提取与感受野的定义原创 2021-12-22 20:06:13 · 3663 阅读 · 0 评论 -
笔记(二)——深度学习基本框架(层和块)
目录一、层和块的定义和初始化1、pytorch 中定义Module的方法——nn.Sequential()2、层和快的初始化方法与栗子二、在ISTA-Net中层和块的定义与应用一、层和块的定义和初始化1、pytorch 中定义Module的方法——nn.Sequential()我们通过实例化nn.Sequential来构建我们的模型, 层的执行顺序是作为参数传递的。 简而言之,nn.Sequential定义了一种特殊的Module, 即在PyTorch中表示一个块的类, 它维原创 2021-12-20 17:29:46 · 1778 阅读 · 1 评论