- 博客(25)
- 收藏
- 关注
原创 Tokens-to-token vit: Training vision transformers from scratch on imagenet
动机VIT在中型数据集上从头训练的效果比CNN还差原因(1)对输入图像的简单token化不能对邻近像素的重要结构进行建模(如边缘)(2)冗余的注意主干设计导致有限的功能丰富度和模型训练的困难解决问题的方法提出了T2T-Vision Transformer包括:(1)一个tokens-to-token的转换器,通过递归地聚合周边的token从而将图像逐渐得结构化成tokens(2)一个又深有窄的backboneTokens-to-Tokentoken从transformer层输出后,re
2022-04-10 21:46:20 736
原创 对《OmniNet: Omnidirectional Representations from Transformers》方法的理解
1.OMNIDIRECTIONAL REPRESENTATIONS对于一个L层的transformer网络,输入的数据维度是N×d,同理得transformer每一层的输出都是N×d。xformer(X)=X1,X2⋅⋅⋅XLxformer(X)=X_1,X_2···X_Lxformer(X)=X1,X2⋅⋅⋅XL ,Xi∈RN×dX_i ∈ R^{N×d}Xi∈RN×d对于上面的公式,得到的实际是transformer每一层的输出。然后omninet的机制其实就是下面的公式:O=A
2022-02-28 16:56:46 512
原创 对GAN的损失函数实际意义的理解
GAN训练流程如图所示,GAN的训练是在一个大循环里先训练鉴别器,再训练生成器。对于判别器的损失函数:x为输入样本,z为latent,即隐变量,通常为随机噪声。设真实样本x为1,生成样本G(z)为0,我们期望的是鉴别器可以很好的区别真实样本和生成样本。而我们想达到的效果就是D(x)=1,D(G(z))=0,由此得出理想的loss=0,这样鉴别器就可以很好的区分真实样本和生成的样本。(但是我有个疑问,为什么这个损失函数前面没有负号,由于梯度的方向是函数增加的方向,那梯度下降时函数时不是会趋向负无穷吗
2021-10-30 13:05:16 1856 2
原创 centernet的coco格式标注的json文件:合并
开头最近实习,在做centernet相关的,而数据集往往是多方或者多日分开标注的,需要整合在一起,而网上关于这方面的相关的代码少之又少,因此贡献一份json合并的代码。该代码修改自柏哥的labelme转coco的代码。import osimport os.path as ospimport jsonimport shutilfrom tqdm import tqdmroot_dir = './'jsons_dir = osp.join(root_dir, 'ssd')#需要合并的jso
2021-04-25 11:02:31 691 1
原创 注意力机制的解读
先看原始的机器翻译的模型左边的是编码器,右边的是解码器。什么意思呢?就是左边部分输入中文,然后编码器前向传播传递到尽头后,传入解码器,解码器通过编码器传入的值,先输出第一个翻译出来的英文单词,然后把输出的第一个英文单词输入第二块,输出第二个英文单词,以此类推。便可以实现机器翻译。但是这样做,会出现一个问题,就是对长句子的翻译能力不好。就像没有复习长难句的人去看英语阅读,看不懂。这时,便引入了...
2020-04-22 22:39:50 1570 1
原创 一文理解cache和主存的映射方式
CacheCache是高速缓冲存储器,一般由SRAM组成,速度比主存块,但是价格高,容量小。因此,如果能把主存中的内容传递到cache中执行,便可以解决CPU与主存速度不匹配的问题。为什么要映射CPU访问cache时,根据主存地址来访问,但是不知道cache的地址,因此要根据主存的地址映射到cache的地址,才能访问cache。直接映射cache有多行,主存多多块,主存的每一块可以装入...
2020-04-18 21:08:58 1096
原创 Attention Is All You Need 模型解读
论文相关这篇文章是由谷歌大脑,谷歌研究所以及多伦多大学的一篇论文。这篇论文提出了一种新的模型结构–Transformer。这个模型仅基于注意力机制,完全不考虑循环结构和卷积结构。并在两个机器翻译大赛中展示了优异的性能以及较好的BLEU值模型结构这个模型由编码器和译码器组成,举个简单的例子理解,输入一段中文,然后翻译成一段英文。这里,编码器将符号表示的输入序列(x1,…,xn)映射到连续表示...
2020-04-15 22:12:09 763
原创 DRAM以及刷新机制
DRAMDRAM,即我们平时所说的内存的物理组成器件,是一种易失性存储器(一断电信息就没了)。DRAM采用地址线分时复用技术,减少地址线的数量。与SRAM 不同,DRAM是用电容来存储,即使通着电,随着时间和温度的变化,信息也会丢失,因此,必须每隔一段时间刷新一次,这个时间称为刷新周期。一般为2ms,北邮教材写的是8ms。刷新操作1.按行来进行内部的读操作。2.由刷新计数器产生行地址,选...
2020-04-10 21:43:02 11143 3
原创 浮点数
一般的浮点数表示一般的浮点数是由E和M这两个定点数拼接起来的表示的,(定点数的小数点要么在最后一位数后面,要么在符号位后面)。E表示阶码,M表示尾数。当底数为2时,真值就是2E×M。其中,1/r(r是底数)<=|M|< =1规格化左规:若尾数最数值高位不是有效位,以原码为例,若最高数值位是0,则将尾数算术左移一位,阶码减一(基数为2的情况,如果基数为4,则如果最高前两位没有1...
2020-03-24 20:19:44 747
原创 用递归算法删除无头结点的单链表的数据为x的结点
代码来自王道书void del(LinkList &L,int x){ LNode *p; if(L==NULL) return; if(L->data==x) { p=L; L=L->next; free(p); cout<<p->data<<endl; del(L,x); } else del...
2020-03-20 18:49:00 393 2
原创 C语言中的类型转换
有符号数和无符号数的转换例如:int -> unsigned int由于int带有符号位,转成无符号形式后:若是正数,则值不变。若为负数,则将符号位解释成数值,真值就为32位2进制的值。例如:int a=-1;unsigned int b ;b=(unsigned int)a;cout<<a<<endl;cout<<b<<e...
2020-03-11 17:18:13 1125
原创 机器数的定点表示
原码符号位0表示正,1表示负符号扩展和移位时,无论正负,都用0填充加法直接加减法用绝对值大的减去绝对值小的,再判断符号位补码符号位一样移位时,正数一样负数:左移补0,右移补1(右移补符号位)符号扩展正数也一样负数:整数补1小数补0定点小数转补码时,操作范围是到最后一个1。例如8位机器数[-0.0110]补=[-0.011]补=1.101 0000反码符号扩展...
2020-03-10 18:04:57 1063
原创 图神经网络学习一(浅谈embedding)
前言最近在做图神经网络(GNN)有关的项目,这个图就是数据结构里面的那个图。在学习的过程中接触到了embedding。由于我以前做的比较多的都是卷积神经网络,而embedding常用于自然语言处理(NLP),因此卡在了这个地方,并花了些时间去了解什么是embedding从词说起假如我们有6个词:男人,女人,苹果,西瓜,肠粉,螺蛳粉。如果用one-hot编码来表示,就是六维向量。男人:(1...
2020-03-05 22:44:07 5053 1
原创 编译,解释与汇编及其他一些计组基础
编译,汇编及解释的区别编译:将高级语言文件转化为低级语言文件。例如c语言。编译程序属于系统软件。汇编:将汇编语言代码文件转化成机器语言代码文件。解释:逐条语句翻译成机器语句,且边翻译边执行,不会产生目标文件。如Python,JavaScript。因此,解释程序的速度将低于编译程序。存储速度寄存器 > cache >主存冯诺依曼结构指令和数据放同一个存储器。控制流...
2020-03-01 20:45:09 405
原创 数据结构复习(简单选择排序和堆排序)
选择排序选择排序分两种,一种是简单选择排序,大家在学c语言时都学过,另一种复杂一点,叫堆排序,我们重点讲一下堆排序。堆排序首先,堆是一个完全二叉树。若每一个根节点都比它的孩子节点大,则为大根堆。若每一个根节点都比它的孩子节点小,则为小根堆。过程假设有下面8个数:(3,4,5,2,1,8,6,7),首先建立完全二叉树:接着将其转换成大根堆。我们从第n/2=4个元素开始转换,即编号为...
2020-02-29 19:27:04 152
原创 数据结构复习(冒泡排序与快速排序)
冒泡排序冒泡排序c语言大家都学过,就不多说,说一下补充的部分。就是当当前的数不再发生交换时,就退出循环。这样可以减少循环的次数。以及,冒泡排序是一种稳定的排序算法#include<iostream>using namespace std;int main(){ int a[20]={1,3,2,5,3,6,7,4,5,6}; int i=0,j=0,k=0; int x...
2020-02-27 08:58:00 179
原创 数据结构复习(插入排序)
直接插入排序#include<iostream>using namespace std;#define MAXSIZE 20typedef struct{ int key; int info;}redtype;typedef struct{ redtype a[MAXSIZE]; int length;}sqlist;sqlist stright(int b[]...
2020-02-24 20:02:59 234
原创 C++取地址符&用在函数的形参的优势
&用在形参有什么好处呢?最近我在复习数据结构,在打代码时发现了一个问题。书上很多形参前面都加了一个取地址符号,这到底是什么意思呢?原来,这是C++的引用,一种语法。由于我以前没有学过C++,也就在这几天待在家里学了一下,所以在debug两个小时过程中发现它的好处!引用引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量...
2020-02-09 15:19:40 4548
原创 利用简单的全连接神经网络来预测1月28日的武汉新型冠状病毒累计确诊病例数
代码背景这几天,由于新型冠状病毒的爆发,每天的新确诊人数都让早上起床的我感到吃惊!大家为了给社会贡献一份力量,即使在春节期间,都可以待在家里少外出。各大IT企业纷纷捐钱捐物资,为抗战一线出力!而此时待在家里的我们能做些什么呢?由于我是学计算机科学与技术的大三学生,想在待在家的时间,利用专业知识,预测一下下一天的确诊人数。因此,就简单地写了一个基础代码,跑了一下,得到了一个结果,准确率不敢保证,...
2020-01-27 13:02:41 4213 4
原创 DBSCAN地图的实现
DBSCAN的python实现什么是DBSCAN原理代码实现可视化工具什么是DBSCAN最近在搞比赛,深入理解了一下DBSCAN算法,下面说说我的心得DBSCAN(Density-Based Spatial Clustering of Application with Noise,具有噪声的基于密度的空间聚类应用)是一种基于高密度连接区域的密度聚类算法。该算法将具有足够高密度的区域划分为簇...
2020-01-18 19:07:45 691
原创 简单的用于解决分类问题的神经网络
原理可以自己去看关于深度学习的网课,然后学习一下tensorflow的使用。看懂下面这段代码,你便学会了简单的深度学习import tensorflow as tfimport numpy as nplearning_rate = 0.001 #学习率BATCH_SIZE = 8seed = 23455r = np.random.RandomState(seed)#利用随机数产生32...
2019-07-20 21:37:26 1083
原创 逻辑回归
逻辑回归首先,逻辑回归并不是属于回归问题,而是属于分类问题。由于历史原因,他就叫逻辑回归而不叫逻辑分类了。逻辑回归还有梯度下降,在机器学习以及深度学习中都非常频繁地会用到。我们这里的逻辑回归用sigmoid函数,使得我们的预测值在(0,1)区间内,当其大于某个阈值时,可以有那么多的把握认为它为某一类。下面先上代码import numpy as npimport matplotlib.pyp...
2019-07-20 10:57:45 1269
原创 机器学习:用梯度下降法解决线性回归问题
线性回归线性回归通常是利用已知的数据集,来预测未来的数据的大小。例如利用往年的房价数据集来预测未来的房价。梯度下降法本次利用梯度下降法求线性回归,是属于监督学习的范畴。通过真实值与预测值的差来求代价函数。下面直接看代码:import matplotlib.pyplot as pltimport numpy as npx=np.array([1,1,1,1,2,2,2,3,3,3,3,...
2019-07-15 12:00:03 528
原创 无监督学习K-means算法的python实现
import numpy as npimport math#定义结点class node: def _init_(self,x1,x2): self.x1=x1 self.x2=x2#生成初始的K个质心def get_initial_centroids(K): x1=np.random.rand(K) x2=np.random.ra...
2019-07-12 16:26:52 287
原创 迪杰斯特拉算法的python实现
迪杰斯特拉算法python的实现参考资料:数据结构(清华大学出版社)最近放暑假,想重拾数据结构,因此写了个迪杰斯特拉的代码练练手,可能会有bug。没有经过多次测试,哈哈如何插入一段漂亮的代码片// 采用矩阵来存储有向图import numpy as npg=np.array([1000,1000,10,1000,30,100,1000,1000,5,1000,1000,1000,10...
2019-07-11 21:45:31 418
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人