- 博客(31)
- 收藏
- 关注
原创 分布式机器学习概述
由于每种算法都有独特的通信模式,因此设计一个能够有效分布常规机器学习的通用系统是一项挑战。尽管目前分布式机器学习有各种不同的概念和实现,但我们将介绍一个覆盖整个设计空间的公共架构。一般来说,机器学习问题可以分为训练阶段和预测阶段(见图1-5)。▲图1-5 机器学习结构。在训练阶段,使用训练数据和调整超参数对ML模型进行优化。然后,将训练好的模型部署到系统中,为输入的新数据提供预测。
2023-02-13 20:08:00
1155
原创 八大排序算法及其区别
1、插入排序是从第一个(不是第0个)元素开始向前比较,当找到每一个比它大的元素就插入到它前面的位置,并保证插入后它前面的元素比它小(如果前面的还比它大就继续往前插),然后从第二个开始继续第二轮。2、选择排序(以最小选择排序为例)是在开始选择第一个作为最小值,在与后面的元素逐个比较,如果有元素比arr[min]小,就替换两者,在每一轮中选出最小的放到最前面。3、冒泡排序是从底部开始两两相邻比较,较大的一个放在上面,然后继续与第三个比较,最终过程中最大的那个升到最上面。逐个两两比较,选出最大的放最上面。...
2022-07-22 00:30:54
504
原创 冒泡排序Bubble Sort
wecomparetwoadjacent相邻的elements,putthebiggeroneupper,notchooseamaximumtocomparewitheachone.从最下面的元素开始,向上比较,每次选取较大的元素放上面的位置,最终最大的元素放在最上面。每次选取两者中较大的值,而不是选定一个最大值与其他元素比较。因为每次从最下面开始向上比较,所以限制length长度,不是i=0开始循环。...
2022-07-22 00:14:20
415
原创 选择排序及其实现selection sort
selecttheminimumormaximuminthearray(dependingonpositiveorderorreverseorder),andinsertitinthetailofthesequence序列.however,iftheelementhasbeensortedonce,itwillnotparticipateinthenextroundofsorting.
2022-07-21 22:44:15
480
原创 插入排序原理及程序实现
插入排序是从第1个数(不是第0个,因为第0个算是已经排好顺序了),逐个与前面的一个数比较,如果第i小,则与第i-1个熟进行交换,直到前面的那个数比它小,然后将前面那个数的位置i-1再+1,得到正确的位置。......
2022-07-19 21:18:14
362
原创 BERT源码解读,详细写记录从零实现BERT模型
BERT代码(源码)从零解读【Pytorch-手把手教你从零实现一个BERT源码模型】_哔哩哔哩_bilibili讲解视频如上,记录是为自己更好的学习的笔记和方便后面复习。1、参数设置max-pred一个句子中最大可以预测多少个tokenn-layer由多少个encoder进行堆叠,一般base有12个,large有24个n_head多少个头d_ff 前馈神经网络的维度d_k,d_v 是Q,K维度的大小,两个必须维度一致n_segment 是二分类任务中,区分多少不同句子.
2022-04-28 19:52:28
4386
原创 nn.Modulelist和nn.sequential的区别
nn.Modulelist是个list容器,存储不同的mudule,并自动把每个不同的Module的参数parameter添加到网络之中,所有模块没有顺序可言,只是把不同的模块存储到一起。nn.Sequential已经实现了forward函数,这里面的模块是按照顺序进行排列的,所以必须保证里面前一个模块的输出大小和后一个模块的输入大小是一样的...
2022-04-28 12:28:31
428
原创 Bert从入门到放弃——Bert文章精读(每部分的内容简介)及核心问题
BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding谷歌的小哥写出来的,据说是master,我辈楷模文章逐段简介每段摘要,读的时候带有目的去读1.摘要(Abstract):与别的文章的区别是什么?效果有多好?gpt是用左侧的信息去预测未来,bert是用左右两边的上下文的双向的信息(带掩码所以允许看左右的信息,相当于完形填空);ELMO是基于RNN的架构的双向系统,bert是tra
2022-04-27 15:32:05
2580
原创 自监督词表示学习CBoW和skip-gram的原理与区别-词向量如何生成及如何决定窗口中每个词的概率
目录one-hot与embedding的区别词向量模型Word2Vec(自监督学习)1、skip-gram(给定中间词→上下文)2、CBoW(Continuous Bag-of-Words,给定上下文→中间词)CBoW和skip-gram的应用上的区别:one-hot与embedding的区别one-hot 独热编码:特征稀疏词之间相互独立,没有顺序关系不能表征词与词之间的关系,one-hot 之间是正交的Embedding :对每一个单词用一个..
2022-04-26 17:18:29
689
原创 nlp中基于统计语言模型对贝叶斯公式的理解
大学期间概率论学过贝叶斯公式,当时感觉它的作用就是用先验概率和似然概率求后验概率,并没有任何直观的感受,仅用于求解不同条件下的概率值。今天读了一本新书,其中的一段基于自然语言处理上的理解给了我很大的启发,豁然开朗,因此发博客分享一下,同时也记录一下自己思考的过程,以供后续对nlp的思考和深入。贝叶斯法则是现在很多模型的基础,现代社会的很多新技术都需要它的支撑,例如:贝叶斯模型估计,机器翻译,Query纠错,搜索引擎等等。该公式由托马斯·贝叶斯生前提出,由好友替他发表论文,定义如下:...
2022-04-08 15:19:59
526
1
原创 Transformer结构解析和其中的块的原理
多头注意力transformer的架构逐位前馈网络层归一化Transformer是一个使用encoder-decoder架构,纯使用attention注意力机制,编码器和解码器中都有很多的transformer块,每个块里都使用了多头注意力,并且用逐位前馈网络,和layer-norm层归一化(batchnorm不适合nlp,因为句子不一样长,维度和特征不一样)。多头注意力通过不同的注意力机制的方法集合concat,也就是用同一对key,val...
2022-02-14 14:32:41
1701
原创 Attention注意力机制原理及在seq2seq中的应用(Bahadanau Attention)
心理学定义:在复杂的情况下关注值得注意的点“是否包含自主性提示”将注意力机制与全连接层或汇聚层区别开来:卷积、全连接、pooling都是只考虑非意志线索;注意力机制则考虑意志线索:意志线索(自主性提示)称为查询(query)。给定任何查询,注意力机制通过注意力汇聚(attention pooling) 将选择引导至感官输入(sensory inputs,例如中间特征表示)。 在注意力机制中,这些感官输入被称为值(value)。 更通俗的解释,每个值都与一个键(key)配对, 这可以想象为感官输.
2022-02-13 18:16:31
2780
原创 用encoder和decoder实现seq2seq过程
encoder与decoder的介绍第一个组件是一个编码器(encoder): 它接受一个长度可变的序列作为输入, 并将其转换为具有固定形状的编码状态。 第二个组件是解码器(decoder): 它将固定形状的编码状态映射到长度可变的序列。 这被称为编码器-解码器(encoder-decoder)架构给定一个英文的输入序列:“They”、“are”、“watching”、“.”。 首先,这种“编码器-解码器”架构将长度可变的输入序列编码成一个“状态”, 然后对该状态进行解码, 一个词元接着一个词元
2022-02-11 15:47:47
1158
原创 RNN循环神经网络进阶——GRU门控循环和LSTM长短期记忆网络
RNN不能处理太长的序列,因为序列信息都放在隐藏状态里面,就类似一个带时间序列的MLP, 当时间很长的时候,隐藏状态里累计了太多东西,前面很久的信息就不那么有参考价值了。因此,观察一个序列时,不是每个观察值同样重要。门控循环单元通过一些额外的控制单元,选取比较重要的内容。可学习的权重参数多了三倍,R,Z,...
2022-02-07 23:44:06
1520
原创 RNN循环神经网络图解概念及从零开始实现
目录RNN相关概念解析图解RNN衡量标准梯度剪裁(常用于RNN)RNNS的应用循环神经网络从零开始实现独热编码初始化模型可学习的参数初始化隐藏状态定义循环神经网络模型(train 一个batch)定义RNN类封装参数预测字符并输出梯度剪裁定义训练模型(train 一个epoch)RNN相关概念解析图解RNNRNN要做的就是把前一个时刻的信息传到下一个时刻。循环神经网络的输出取决于当前的输入和上一时刻的隐变量。隐变量中包含历史信息...
2022-02-05 23:40:29
3160
1
原创 NLP文本预处理的三大流程
文本预处理的流程先去除文本中的无关元素将文本行拆分为单词或字符词元※※制作字典,给每个token加上indices整个nlp其实就是把文本中的字词符号等看作是带有时序的变量,而文本预处理就是把这些变量做成可以进行训练的东西。先去除文本中的无关元素#@saved2l.DATA_HUB['time_machine'] = (d2l.DATA_URL + 'timemachine.txt', '090b5e7e70c295
2022-02-03 23:13:41
2402
原创 自回归模型的两种策略——马尔科夫假设与隐变量自回归模型
基础知识序列模型的基础由概率论中的贝叶斯公式可知得到全概率公式也就是每一个xt时刻的值,是与它之前所有时刻的值都有关系,因此如果可以通过前面的值推算出分布或者函数(不一定完全按照这个分布),那么就可以有准确的预测。序列模型自回归模型的两种策略1、(马尔科夫假设)假设在现实情况下相当长的序列xt−1,…,x1可能是不必要的, 因此我们只需要满足某个长度为ττ的时间跨度, 即使用观测序列xt−1,…,xt−τ。 当下获得的最直接的好处就是参数的数量总是不变的, 至少在t&g.
2022-02-03 22:23:19
3311
原创 BatchNorm的最详细解释和手撕实现与应用代码
目录概述作用过程:源起及作用原理:手写BN代码及作用示例1、手撕BatchNorm代码2、应用实例概述批量归一化的本质目的:学习底部层的时候避免顶部层变化所以只有在使用深层的网络结构的时候才会使用BN,浅层的如mlp效果不明显优点:不会改变模型的精度,但是可以加速模型收敛首先我们先明确引起变化的原因,是每一层的方差和均值的分布不同。所以我们要固定所有层的分布,尽量符合同一个分布。批量归一化的作用原理:固定小批量里的均值和方差1、首先求出均值和方差2、.
2022-01-27 12:12:05
4996
原创 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
3166
原创 卷积神经网络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
2207
1
原创 多通道输入与多通道输出的理解与实现
多输入通道(互相关)例如彩色图像具有标准的RGB通道来代表红、绿和蓝。当我们添加通道时,我们的输入和隐藏的表示都变成了三维张量。例如,每个RGB输入图像具有3×h×w3×h×w的形状。将这些张量ci连结在一起可以得到形状为ci×kh×kw的卷积核。由于输入和卷积核都有ci个通道,我们可以对每个通道输入的二维张量和卷积核的二维张量进行互相关运算,再对通道求和(将ci的结果相加)得到二维张量。这是多通道输入和多输入通道卷积核之间进行二维互相关运算的结果。def corr2d_multi_in(
2022-01-19 18:51:58
3311
原创 x.t()与x.transpose()的区别
x.t()是二维的转置,也就是把行和列互换x.transpose()是转置,可以设置高维的转置,栗子:x.transpose(1,0,2)把第一二维进行互换
2021-12-22 18:17:20
2568
原创 点积,内积,哈达玛积的区别
哈达玛积哈达玛积(Hadamard product)是矩阵的一类运算,若A=(aij)和B=(bij)是两个同阶矩阵,若cij=aij×bij,则称矩阵C=(cij)为A和B的哈达玛积,或称基本积。*乘完之后还是矩阵点积点积在数学中,又称数量积(dot product; scalar product),是指接受在实数R上的两个向量并返回一个实数值标量的二元运算。它是欧几里得空间的标准内积两个向量a= [a1,a2,…,an]和b= [b1,b2,…,bn]的点积定义为:...
2021-12-22 17:08:59
7342
原创 笔记(三)——网络中参数访问和初始化
在定义好我们的层和类后,参数如何访问呢在训练过程中,我们将需要使用这些参数来做出未来的预测。 此外,有时我们希望提取参数,以便在其他环境中复用它们, 将模型保存下来,以便它可以在其他软件中执行, 或者为了获得科学的理解而进行检查目录参数访问1、目标参数2、一次性访问所有函数二、参数初始化内置的初始化器。参数访问import torchfrom torch import nnnet = nn.Sequential(nn.Linear(4, 8), nn.ReL...
2021-12-20 18:58:28
889
原创 笔记(二)——深度学习基本框架(层和块)
目录一、层和块的定义和初始化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
1897
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人