自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 科研中的python细节(一)

3.如果调用函数的过程中,我们传入了一个字典cfg={"name":"111", "module":"222"}(字典中是键值对的映射关系),假设我们调用的函数是func(name, module),如果我们这样调用:func(**cfg),那么字典cfg会被解包,也就是字典中的键值对会变成关键字参数(name="111",module="222"),传递给函数,该用法也十分的方便。最近在看PTQ4ViT的代码,也学到了很多做量化过程中的python细节,这里做一个总结,防止自己遗忘,加强一下记忆。

2024-03-21 10:48:57 182 1

原创 聊一聊梯度计算中很重要的Dynamic Gragh

最近越看代码越觉得自己要补的东西很多很多,我觉得了解pytorch框架中的梯度计算过程其实还是很重要的,于是打算码一篇关于动态计算图的文章。首先明确一点:pytorch使用的是动态计算图,也就是计算图的创建过程是随着张量的运算式子而创建的,并且不断更新,直到张量的运算结束。这和tensorflow框架所使用的静态图产生了对比,静态图的创建过程是在张量的运算全部走完,然后直接创建的一张图。

2024-03-20 23:58:09 284 1

原创 对Transformer的深入理解和思考(Train and inference process)

输入是加入了一个shifted right,也就是<start>标记,进入掩码自注意力层,生成一个全新的向量,该向量作为Q查询矩阵和encoder中的编码K、V做一个cross-attention计算,最后经过一个MLP头和softmax归一化处理,变成一个vocal维的向量,从而teacher forcing(每次预测下一个词不需要)地并行预测下一个词的概率,然后交给损失函数,从而进行梯度的反向传递。思想是卷着的绣毯,语言是铺开的绣毯。自回归方式,串行输出(在此不多赘述)

2024-02-26 23:45:26 440 1

原创 注意力机制(Attention Mechanism)

注意力(Attention)是一种人类可以在关注一些信息的同时忽略另一些信息的选择能力。注意力机制(Attention Mechanism)作为一种资源分配方案,注意力机制的计算一般分为两步:第一步是在所有输入信息上计算注意力分布,第二步是根据注意力分布来计算输入信息的加权平均。和全连接模型不一样,自注意力模型的权重是动态生成的,而全连接模型的权重是学习得到的。但是,自注意力模型计算的权重只依赖于qi和kj的相关性,而忽略了输入信息的位置信息,因此在单独使用时,我们需要加入位置信息来修正。

2024-02-23 00:46:46 449

原创 循环神经网络(Recurrent Neural Network)

FNN(FCNN、MLP)的弊端:在FNN中,信息的传递是单向的,虽然使网络更容易学习,但在一定程度上减弱了神经网络模型的能力。FNN可以看成是一个复杂的函数,网络的输出只依赖于当前的输入,但是在现实的任务当中,网络的输出不仅和当前时刻的输入有关,还和过去时刻的输出有关,FNN很难处理这样的时序数据(比如视频、文本、语音等),时序数据的长度是不固定的,而FNN要求输入和输出的维度是固定的,所以当处理和时序数据有关的问题时,就需要一种能力更强的模型:循环神经网络。一个完全连接的循环神经网络,其输入为。

2024-02-22 14:12:25 516 1

原创 前馈神经网络(FeedForward Neural Network)

因为我们知道误差项反向传播的时候每一层都会乘以该层激活函数的导数,如果激活函数是Logistic函数,它的导函数的值域是[0,0.25],误差项经过每一层都会衰减,当网络层数很深的时候,梯度就会不停地衰减,甚至消失,从而使得整个网络训练起来很困难。2.激活函数和它的导函数尽可能的简单,有利于网络计算的效率。我们称损失函数对某一层神经元的偏导数为误差项,反映了最终损失对第l层神经元的敏感程度,BP算法的含义是:第l层一个神经元的误差项是第l+1层所有神经元误差项的加权和,然后再乘上该神经元激活函数的梯度。

2024-02-21 18:45:19 515

原创 深度学习基础:关于Tensor张量的操作总结

Pytorch框架为深度学习提供了一个很好的平台,使用Pytorch框架完成深度学习任务时,对于数据类型,一般情况下都是对tensor类型进行操作,我们可以把tensor类型的数据叫做张量,其实,掌握对tensor的操作是十分重要的,这牵涉到我们对于代码中数据变换的理解,如果对tensor操作熟练的话,我们会很快地通过代码看出数据是如何变化的。

2023-12-19 14:55:04 1819 1

原创 手撕Vision Transformer的过程及感悟

本人按照他的代码及思路一点一点搭建ViT模型,本篇博文就来认真解读一下该大神搭建ViT模型的代码风格和代码架构,看一看他是如何用400多行的代码(其实仅200多行)实现ViT的。在他的代码中,我也是学到了很多实战技巧和代码框架技巧,不过还有一些没有看得特别懂,不过整个架构是看明白了,在此和各位分享。

2023-12-07 21:31:35 1990 1

原创 对于深度学习模型训练和模型验证的总结

当把训练集的数据全走一遍之后,一轮训练就结束了,我们可以使用测试集来看一看效果,步骤就是让测试集的imgs跑一遍推理,最后得到一个得分矩阵output,然后使用output.argmax(1)(这个函数的作用是取第一维的最大值索引,也就是每一行的最大值的索引)和targets中的数值比较,统计相同的个数(也就是分类正确的个数)。在我们最后一轮训练过后,我们需要保存我们的模型,使用torch.save(模型,“路径”),这样,我们经过十轮的训练,就得到了一个训练好的模型。

2023-12-03 23:53:21 1749 1

原创 《Attention Is All You Need》之Transformer模型

序列转录模型,一般需要依赖于复杂的循环或者卷积神经网络,架构一般为encoder(编码器)和decoder(解码器),这篇论文提出了一个具有简单架构的模型:Transformer(中文译为“变形金刚”),是第一个仅仅使用自注意力机制(self-attention)做序列转录的模型,而没有用到之前的循环或者卷积。作者使用该模型做了两个机器翻译的小实验,并行度更好且可以用更少的时间来训练。而且作者认为transformer还可以扩展到大型的输入输出模式上面,比如图片、语音和视频处理等等。

2023-09-18 02:28:09 96 1

原创 Deep Learning鱼书神经网络(Neural Network)学习笔记

首先,使用get_data()函数获得测试数据x和对应每一个x的标签t,这里,x、t均是Numpy数组,x是二维的,由于t中不是one_hot形式,所以t中的数据是一维的,然后使用init_network()函数获得权重参数,之后对每一个测试数据进行推理,得出概率最大的分类的索引p,如果p等于当前测试数据所对应标签的值,那么该分类正确。我们可以看到,有了init_network函数和forward函数之后,神经网络的架构就清晰了很多,前者初始化参数,后者通过前者的参数以及输入x经过层层计算得到输出y。

2023-08-10 21:06:37 152 1

原创 Deep Learning鱼书感知机(perceptron)学习笔记

笼统来说,感知机就是接收多个输入信号,输出一个信号,输入信号可以表示为x1,x2,输出信号用y来表示,运行原理为:y=0(w1x1+w2x2+b<=0)或y=1(w1x1+w2x2+b>0),输出1时表示神经元被激活,其中w1和w2表示权重,它代表了输入信号的重要性,即权重越大,输入信号的重要性就越高。我们根据上图四个点可以发现,我们无法通过一条直线来实现异或门解空间的划分,我们可以通过一条曲线来划分异或门的解空间,而感知机的局限性就在于只能用一条直线来分割解空间。

2023-08-07 21:16:33 63

原创 《Learning to Detect Every Thing in an Open World》 论文阅读

前瞻性:LDET是用于开放世界实例分割的挑战性任务。LDET在开放世界实例分割的基准数据集上表现出强大的性能,在自动驾驶数据集上表现出良好的效果。希望LDET成为一个基准点,并加速这一领域的进一步研究。局限性:从一些可视化的例子中可以看出,LDET仍然不能检测到一些新的物体,尽管它的性能比基线好得多。如果新物体的外观与已知物体不同,LDET和大多数基线可能会错过它们。克服这一限制的方法之一是为训练数据注释广泛的类别。(以上是笔者对于这篇论文的拙见,如有新的看法和见解中错误的地方,欢迎留言!

2023-08-02 16:11:31 118

原创 数据结构第七次实验

7-1 序列调度 (100 分)有一个N个数的序列A:1,2,……,N。有一个后进先出容器D,容器的容量为C。如果给出一个由1到N组成的序列,那么可否由A使用容器D的插入和删除操作得到。输入格式:第1行,2个整数T和C,空格分隔,分别表示询问的组数和容器的容量,1≤T≤10,1≤C≤N。第2到T+1行,每行的第1个整数N,表示序列的元素数,1≤N≤10000。接下来N个整数,表示询问的序列。输出格式:T行。若第i组的序列能得到,第i行输出Yes;否则,第i行输出No,1≤i≤T。

2021-06-19 21:02:23 177

原创 数据结构第六次上机实验

我的思路:这道题是一个高精度加法的问题(幸亏样例里面没有负数,有负数的话jiu'y),方法其实和我们c++第一次实验时求1000!的方法类似,甚至还比1000!的要简单,

2021-06-10 22:11:08 233 1

原创 数据结构第五次上机实验

我的思路:这个题是DFS的典型题,用递归算法,需要注意的是时间戳的加入位置和每条边的起始点和终点的加入位置。最后按v的大小输出的时候,我开始用map中的value来比较的,

2021-06-05 20:09:30 206

原创 2021-05-27

我的思路:这个题dfs和bfs都可以用,不难,只要合理利用visit数组,做一个循环,就可以很快解决(当然用并查集也行)。我的思路:这个题属于Dijkstra的典型题,直接用老师在ppt上的代码就很ok!!唯一需要注意的是,题目第二问是让求在最短路径下经历顶点数最多,所以我的处理方法是写一个函数专门求从初始点到当前结点的路径长度,当dist[uu]+p->cost=dist[k]时,我们需要比较k前一个点和uu的路径长度。我的思路:这题前期对我最大的感触就是动不动就内存超限。。。后来我才知道需

2021-05-27 19:39:27 134

原创 2021-05-22

7-1 二叉树最长路径 (100 分)给定一棵二叉树T,求T中的最长路径的长度,并输出此路径上各结点的值。若有多条最长路径,输出最右侧的那条。输入格式:第1行,1个整数n,表示二叉树有n个结点, 1≤n≤100000.第2行,2n+1个整数,用空格分隔,表示T的扩展先根序列, -1表示空指针,结点用编号1到n表示。输出格式:第1行,1个整数length,length表示T中的最长路径的长度。第2行,length+1个整数,用空格分隔,表示最右侧的最长路径。输入样例:在这里

2021-05-22 16:40:13 105

原创 2021-05-17

7-1 数列查询 (100 分)已知数列的通项公式为: f(n) = f(n-1)*11/10,f[1]=10. 通项从左向右计算,*和/分别表示整数乘法和除法。 现在,要多次查询数列项的值。输入格式:第1行,1个整数q,表示查询的次数, 1≤q≤10000. 第2至q+1行,每行1个整数i,表示要查询f(i)的值。输出格式:q行,每行1个整数,表示f(i)的值。查询的值都在32位整数范围内。输入样例:在这里给出一组输入。例如:3123输出样例

2021-05-17 18:30:11 189

原创 2021-05-16

2020-2021 荣誉课 上机实验1返回7-1 重复计数 (100 分) 在一个有限的正整数序列中,有些数会多次重复出现。请你统计每个数的出现次数,然后按数字在序列中第一次出现的位置顺序输出数及其次数。输入格式:第1行,1个整数N,表示整数的个数,(1≤N≤50000)。第2行,N个正整数,每个整数x 都满足 1 ≤ x ≤2000000000。输出格式:若干行,每行两个用一个空格隔开的数,第一个是数列中出现的数,第二个是该数在序列中出现的次数。输入样例:在.

2021-05-16 00:40:23 177 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除