自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 全网最强ViT (Vision Transformer)原理及代码解析

今天我们来详细了解一下Vision Transformer。基于timm的代码。1. Patch EmbeddingTransformer原本是用来做NLP的工作的,所以ViT的首要任务是将图转换成词的结构,这里采取的方法是如上图左下角所示,将图片分割成小块,每个小块就相当于句子里的一个词。这里把每个小块称作Patch,而Patch Embedding就是把每个Patch再经过一个全连接网络压缩成一定维度的向量。这里是VisionTransformer源代码中关于Patch Em...

2021-10-30 02:16:05 22259 10

原创 一篇文章看懂Softmax

Softmax,这个概念参考[1]解释的非常仔细,这里只做简述,先上公式:这公式是啥子意思呢?先看一个应用:假如我们现在有一个分类任务,如果模型足够理想,输入一张猫图,输出[1, 0],输入一张狗图,输出[0, 1]。通常这种任务,前面会是一个深度卷积神经网络,最后会有一个全连接层,经过这个全连接层会得到图的特征向量(embedding),我自己喜欢管embedding叫特征向量。上图中最后得到的特征向量是[1.2, 0.3],再经过softmax:得到了[0....

2020-11-11 20:05:30 701

转载 MBMS+EMBMS

http://www.google.com/patents/CN101854591B?cl=zh

2014-11-01 21:28:46 2027

转载 Linux下链接相互依赖的.a文件遇到undefined reference问题总结

最近,在Linux下静态链接多个相互依赖的.a文件时,遇到各种诡异的undefined reference问题,最后发现,是.a文件的链接顺序竟然非常重要!转载自:http://ticktick.blog.51cto.com/823160/431329最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误:1

2013-10-14 02:07:34 1740

原创 linux命令ORshell脚本语言OR Makefile文档里一些命令解析

1.将1(标准输出)2(标准出错)的信息不显示出来.    1>/dev/null                 表示将命令的标准输出重定向到 /dev/null          2>/dev/null                   表示将命令的错误输出重定向到 /dev/null    2>/dev/null &                 &表示后

2013-10-07 16:24:04 1790

原创 CUDA函数库调用问题解决

问题:装好CUDA5.5, samples也安装成功,编译也成功了,但是在运行程序的时候出问题了。譬如进入NVIDIA_CUDA-5.5_Samples/7_CUDALibraries/ 目录中,执行 ./conjugateGradientPrecond 结果报错了,居然报错了:./conjugateGradientPrecond: error while loading shar

2013-09-26 13:59:22 6031

原创 跟我一起写Makefile 博客索引

最近在看这个系列的博客,但是看得挺凌乱的,就写个索引,到时候有什么不会,回头找起来也方便。参考链接:http://blog.csdn.net/haoel/article/details/2895跟我一起写Makefile (十)           四、foreach 函数      这个函数是用来做循环用的http://write.blog.csdn.net/post

2013-09-25 19:49:50 995

翻译 CUDA samples 第三章 sample reference 概况

示例代码分为下列几类:1.   Simple Reference      基础CUDA示例,适用于初学者, 反应了运用CUDA和CUDA runtime APIs的一些基本概念.2.   Utilities Reference     演示如何查询设备能力和衡量GPU/CPU 带宽的实例程序。      3.  Graphics Reference     图

2013-09-16 18:23:22 3582

翻译 CUDA samples 2.3节 用CUDA示例来创建CUDA项目

2.3.1. Creating CUDA Projects for Windows略2.3.2默认的samples的安装路径 是 NVIDIA_CUDA_5.5_Samples 并且示例程式的分为六类 : 0_Simple,1_Utilities, 2_Graphics, 3_Imaging, 4_Finance, 5_Simulations,6_Advanced, 7_CUDALi

2013-09-16 17:18:35 3233

原创 Ubuntu12.04 cuda5.5安装

预处理步骤: 首先确认你的电脑装了一个可以运行CUDA程序的GPU。lspci | grep -i nvidia另外要确认linux版本和gcc版本具体参考链接:http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-linux/index.html下载Nvdia Toolkit 下载链接:http://

2013-09-16 14:12:18 6167 2

翻译 系数线性系统地加速处理

(部分翻译)Nvidia 数值库团队, 利用CUSPARSE和CUBLAS两个函数库针对 incomplete-LU和Cholesky-preconditioned interative methods 取得了两倍左右的加速。文章集中在介绍 Bi-Conjugate Gradient 和 stabilized Conjugate Gradient iterative methods 两

2013-09-15 12:29:47 1046

翻译 CUSPARSE 第三章 CUSPARAE索引和数据格式

(纯属自学笔记,部分翻译,不会翻译的不翻译)3.1 索引基本格式      该函数库支持 zero- and one-based 索引. The index base 是通过 cusparseIndexBase_t 选择, 且是一个独立参数,或者是矩阵形容器 cusparseMatDescr_t type的一部分3.2 向量格式     略3.3 矩阵格式     略

2013-09-13 11:45:20 1557

翻译 CUSparse 第二章 使用CUSPARSE API

2.1  2.1 线程安全      这个库是线程安全的,并且函数可以被多个主机线程调用。2.2 标量参数     标量参数可以在主机和设备之间传递。     极少数函数的返回值是标量,譬如doti()和nnz().和其他返回数据类型一样,标量参数返回时要等到GPU上运作完成才能确定。所以当主机读取数据时应当要做适当的同步。     这个特点允许CUSPARAE函数

2013-09-12 02:38:20 2366

翻译 CuSparse 第一章

(部分翻译)第一章 介绍    1. 命名惯例       CUSPARSE 包含了一系列处理稀疏矩阵的基本的线性代数子程式。是cuda函数库的一部分,从C,C++中调用。       该库例程可以分为四类:             第一层:在稠密向量格式和稀疏矩阵向量格式之间的操作             第二层:在稀疏矩阵格式和稠密向量格式之间的操作       

2013-09-11 23:36:39 3928

原创 cuda 细节提要

double类型若使用double的数据类型,自己编译一下程序,你会发现warning : Double is not supported. Demoting to float。但是如果你在编译时候自己加上-arch sm_13,有些gpu是支持double的。

2013-08-06 10:02:14 972

转载 linux主机之间远程复制目录

linux主机之间远程复制文件或目录命令: 复制文件: (1)将本地文件拷贝到远程 scp 文件名 --用户名@计算机IP或者计算机名称:远程路径 (2)从远程将文件拷回本地 scp --用户名@计算机IP或者计算机名称:文件名 本地路径 复制目录: (1)将本地目录拷贝到远程 scp -r 目录名 用户名@计算机IP或者计算机名称:远程路径 (2)从远程将目录

2013-08-02 13:44:38 981

转载 linux命令创建和修改用户及密码

linux下创建用户1、添加ftp用户useradd ftpname -d /home/ftppasswd ftppwd以下操作都以root权限进行:service vsftpd start 启动Linux自带的FTP服务2. 添加普通用户 useradd nagios –d /usr/local/nagioschown nagios.nagios /usr/loc

2013-07-15 16:43:10 812

转载 Linux下C编程undefined reference to'exp'问题的解决

我在Linux下编了一个程序,使用数学函数,可是始终通过不了.后来,我用exp函数,好像gcc都编译不过去.程序很简单:#include ;#include ;main(){printf("%f", exp(3));} 出错消息是:undefined reference to'exp'这不是标准库函数吗?怎么用不了?解决答案是:gcc -lm fil

2013-07-15 15:30:43 3603

原创 《Programming Massively Parallel Processors》Chapter5 习题解答

<!--@page {margin:0.79in}p {margin-bottom:0.08in}-->自己做的部分习题解答,因为时间关系,有些马虎,也不全面,欢迎探讨或指出错误5.1 Consider the matrixaddition in Exercise 3.1. Can one use shared memory to reduce

2013-07-04 11:02:08 2770

翻译 __device__ __global__ __host__

__device__ 标记的函数从一个在器件中执行的函数呼叫,在器件中执行  __global__ 表示该函数从一个在主机中执行的函数呼叫,在器件中执行__host__表示在主机中呼叫,在主机中执行的函数

2013-07-04 10:58:27 3786

原创 thread block grid

grid里面包含block,block里面包含threadgrid里面所有的block都是同样大小的,  每个block最多可以有1024个thread。blockDim表示一个block里面thread的数量。block里面每个thread都有一个独一无二的编号,threadIdx参考文献:《programming massively parallel pro

2013-07-04 10:43:11 1152

翻译 CUDA Memories--CUDA记忆体(翻译+整理+测试)

一边学习一边记录(本文中英结合,专业名词统统不翻译)     在CUDA里,host和devices有不同的记忆体空间。     首先呢,CUDA的memory有很多种类啦     1. Global memory     2. Constant memory     这两种memory可以由CPU上运行的函数呼叫读写。     Global memory 这个,学过一

2013-07-01 15:35:20 1466

原创 将内存扩大缩小的函数 realloc(){}

realloc 用过很多次了。无非就是将已经存在的一块内存扩大。char* p = malloc(1024);char* q = realloc(p,2048);现在的问题是我们应该如何处理指针 p。 刚开始按照我最直观的理解,如果就是直接将 p = NULL;。 到最后只需要释放 q的空间就可以了。因为最近在做个封装。结果在做单元测试的时候发现。有时候我在 free(q); 的时

2013-05-27 21:27:35 2951

转载 Makefile 写法整理

一般来说,无论是C, C++ ,还是pas, 首先要把源文件编译成中间代码文件,在Windows下也就是.obj文件,UNIX是.o文件,即Object File,这个动作叫做编译(compile)。然后再把大量的Object File合成执行文件,这个动作叫做链接(link)。           编译时,编译器需要的是语法的正确,函数与变量的声明的正确,对于后者,通常是你需要告诉编译器头文

2013-05-13 15:01:22 791

转载 Householder relections

豪斯霍尔德变换(Householder transformation)又称初等反射(Elementary reflection),最初由A.C Aitken在1932年提出[1]。Alston Scott Householder在1958年指出了这一变换在数值线性代数上的意义[2]。这一变换将一个向量变换为由一个超平面反射的镜像,是一种线性变换。其变换矩阵被称作豪斯霍尔德矩阵,在一般内积空间中

2013-04-30 21:15:34 2029

转载 关于size_t, ptrdiff_t, size_type, difference_type

size_t是unsigned类型,用于指明数组长度或下标,它必须是一个正数,std::size_tptrdiff_t是signed类型,用于存放同一数组中两个指针之间的差距,它可以使负数,std::ptrdiff_t.size_type是unsigned类型,表示容器中元素长度或者下标,vector::size_type i = 0;difference_type是signed类型,

2013-04-29 10:53:16 883

转载 GCC编译多个C文件

下午做了一个小的程序,定义了三个文件:getop.h,getop.c,calcDemo.c显然getop.h是针对getop.c的,而在calcDemo.c中要调用到getop.c中的东西。首先给出每个文件的结构图,为了更简单的说明,函数都空实现。getop.h:#ifndef _H_GETOP#define _H_GETOP int getch(void)

2013-04-21 22:43:56 2567

转载 解决xshell与vim显示中文乱码的问题

一般而言,乱码多是由于编码问题引起 的,在windows系统中,大多数情况下中文编码采用的是big5或utf-8两种,但是默认情况下确是big5,如果这样的话,请首先用locale命令查看你linux系统当前语系,执行LANG=zh_CN.big5修改语系。这里以utf8编码为例。打开一个用utf8编码的中文文件,在vim中,执行:set encoding=utf-8 termencodi

2013-04-07 16:35:51 1334

翻译 CUDA by Example 第三章 部分翻译实践 GPU器件参数提取

由于这本书内容实在是多,很多内容和其他讲解cuda的书又重复了,所以我只翻译一些重点,时间就是金钱嘛,一起来学cuda吧。如有错误,欢迎纠正由于第一章第二章暂时没时间仔细看,我们从第三章开始不喜欢受制于人,所以不用它的头文件,所有程序我都会改写,有些程序实在是太无聊,就算了。//hello.cu#include#includeint main( void )

2013-04-05 19:41:13 2770

转载 Vim命令

本章提供足够的信息使你用够使用 Vim 来做基本的编辑。这里提供的方法不一定是高效 快捷的。但起码是有效的。花些时间去练习这些命令,这是后面的知识的基础。 |02.1|  第一次运行 Vim |02.2|  插入文本 |02.3|  移动光标 |02.4|  删除字符 |02.5|  撤销与重做 |02.6|  其它编辑命令 |02.7|  退出 |02.8|

2013-03-21 18:20:23 695

原创 cuda4.0编程指南 读书摘要

本篇实际为方便自己写程序的时候索引。不需要的请绕过。      1. threadIdx -----P7       2. threadsPerBlock -----P8       3. blockIdx , blockDim   -----P9       4. syncthreads      同步   ----P10       5.cuda

2013-03-11 20:01:36 1152

转载 Windows下VirtualBox 共享文件夹设置

原文地址:VirtualBox 共享文件    原文作者:边城浪子环境:主机(host):windowsXP虚拟机:VirtualBox客户机 (guest):slackware/ubuntu/...    看过我上一篇写的为VirtualBox 安装additions的朋友应该很清楚,设置VirtualBox共享文件夹之前需要安装VirtualBox Guest Addi

2013-01-23 17:32:06 622

原创 vim学习

:w   保存文章:e a.txt     打开a.txt文件:tabnew d:\a\b.txt   打开b.txt文件

2013-01-21 14:36:21 481

转载 strcmp

原型:extern int strcmp(const char *s1,const char * s2);  用法:#include string.h>  功能:比较字符串s1和s2。  一般形式:strcmp(字符串1,字符串2)  说明:            当s1          当s1==s2时,返回值=0            当s1>s2时,返回值>0

2012-12-28 23:34:03 506

转载 strncmp 串比较

函数名: strncmp   功 能: 串比较   用 法: int strncmp(char *str1, char *str2, int maxlen);   说明:此函数功能即比较字符串str1和str2的前maxlen个字符。如果前maxlen字节完全相等,返回值就=0;在前maxlen字节比较过程中,如果出现str1[n]与str2[n]不等,则返回(str1

2012-12-28 23:12:09 573

转载 tolower 把字符转换成小写字母,非字母字符不做出处理

头文件:在VC6.0可以是ctype.h或者stdlib.h,常用ctype.h用 法: int tolower(int c);说明:和函数int _tolower( int c );功能一样,但是_tolower在VC6.0中头文件要用ctype.hC程序例:  #include  #include  #include  #include  int

2012-12-28 22:53:57 898

转载 sscanf 读,分配和修改字符串的函数

名称:  sscanf() - 从一个字符串中读进与指定格式相符的数据.  函数原型:   int sscanf( const char *, const char *, ...);  int sscanf(const char *buffer,const char *format,[argument ]...);  buffer 存储的数据      format 格式控

2012-12-28 22:42:43 757

翻译 fopen vs fopen64

fopen64是linux特有 的,fopen64()函数和fopen()函数相同的,只是底层的文件描述符创建是带有O_LARGEFILE标志。fopen64()函数为了加载大型文件所做的扩展。fopen returns FILE*, stream.fopen64 returns int, file descriptor      通常情况下,我们用fopen()函数来读问

2012-12-28 20:35:41 11297 1

转载 C语言:为什么用fprintf(stderr,"Error");比printf("Error");更好?

一般情况下,你这两个语句运行的结果是相同的,没有区别,只有一下情况才有区别:运行你的程序的时候,命令行上把输出结果进行的转向,比如使用下面的命令把你的程序a.c运行的结果转向到记事本文件a.txt:a.exe > a.txt在这样的情况,如果使用printf输出错误信息,会保存到a.txt文件里面,如果使用fprintf输出错误,会显示在屏幕上。

2012-12-28 19:40:44 1418

转载 带参数的main函数

运行方法: (假设你的程序为Untitled1.exe) 打开命令提示符: 转到你的Untitled1.exe的目录, 输入下列命令: Untitled1.exe a basdfsa 1314324 -k -f 回车就可以运行了。 这时,在Main函数里定义的 int main(int argc, char *args[]) 里的argc = 6,就是表示有

2012-12-27 22:52:25 635

空空如也

空空如也

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

TA关注的人

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