CV
zkxhlbt
这个作者很懒,什么都没留下…
展开
-
CUDA编程 基础与实践 学习笔记(九)
原子操作atomicAdd(&addr, val)这个在SNN部分反向传播的cuda代码里面见过,原子操作也在数据库课程里面学过,是不受其他事务影响的“读-改-写”操作。线程的执行不能保证特定顺序,因此需要原子操作来保证变量读写不受影响。所有的原子操作。第一个地址既可以是全局内存,也可以是共享内存。都是device函数,只能在核函数中使用。...原创 2022-04-23 11:44:31 · 350 阅读 · 0 评论 -
torch.DistributedDataParallel复盘
用多GPU跑torch程序,DDP是最好的工具。在研究过程中基本是单机多GPU而不是多机多GPU,此处对单机多GPU的情况做一个总结。import torch.DistributedDataParallel as DDPimport torch.distributed as dist用法:由于是单机多GPU,所以rank == local_rank. 使用argparse从外部获取–local_rank后,加入dist.init_process_group(backend=‘nccl’) 这一句话原创 2021-08-02 10:30:25 · 254 阅读 · 0 评论 -
ViT-B参数量计算
ViT-B: layers=12,hidden_size=768,MLP_size=3072,heads=12,params=86M参考:https://blog.csdn.net/weixin_43922901/article/details/1026025571 Patch embeddingpatch_dim = 16163, dim = hidden_size = 768所以参数量为768*7682 Transformer block(attention+FFN)attention:原创 2021-04-06 21:37:35 · 10837 阅读 · 1 评论 -
2021-03-28
配置好了tensorboard. pytorch使用tensorboard需要pip tensorboard,tensorboardX。 tensorflow非必须,提示说不安装tensorflow功能会减少,但目前还没有用到高深的技巧。在服务器端训练好网络后,想要在本机浏览器打开,需要提前将服务器的tensorboard端口重定向到本机的端口,然后在浏览器使用本机的端口才可以打开。-p 端口号16006为本机端口,6006为服务器端的tensorboard端口。写了weekly rev..原创 2021-03-28 20:18:26 · 120 阅读 · 0 评论 -
2021-03-27
self.qkv = nn.Linear(dim, dim*3, bias) B, N, C = x.shape qkv = self.qkv(x).reshape(B, N, 3, head, head_channel).permutate(2, 0, 3, 1, 4) # 看起来比einops简单一点 q, k, v = qkv[0], qkv[1], qkv[2] attn = (q@k.transpose(-2,-1))*scale attn = attn.softmax(dim...原创 2021-03-28 11:07:08 · 385 阅读 · 0 评论 -
2021-03-24
from 包(module) import 类 , import 包 前者使用的时候直接用类名即可,后者需要用包名.类名才可以使用拼接一维的tensor:x = torch.tensor([1,2,3])y = torch.tensor([4,5,6])x = x.unsqueeze(0)y = y.unsqueeze(0)z = torch.cat([x,y],dim=0)读了《An Image is Worth 16x16 words, What is a Video Wo.原创 2021-03-27 10:43:10 · 73 阅读 · 0 评论 -
2021-03-23
https://blog.csdn.net/qyhaill/article/details/103043637 关于优化器的超详细解释。ps -ef 查看运行的命令 kill -9 pid kill -9 -l 停止用户全部进程有yield的是generator object, 当一个函数为生成器对象时,需要调用__next__()函数(python3.x以后)。生成器是一个可以迭代的对象,当yield一个数据后,会挂起,下次调用会从上次挂起的地方开始运行。例如:def gen(): yi.原创 2021-03-24 09:43:56 · 57 阅读 · 0 评论 -
2021-03-22
logdir = os.path.join(param['log'], cur_time)if not os.path.exists(logdir): os.makedirs(logdir)转载自https://blog.csdn.net/ShuqiaoS/article/details/885599773. python中的__getitem__()方法会让一个类变得可以迭代。转自https://blog.csdn.net/ZT7524/article/details/96479...原创 2021-03-23 09:15:53 · 53 阅读 · 0 评论 -
2021-3-19
看论文要注意论文未解决的问题和可能的解决方案,今天深刻体会了。top 命令可以查看系统当前的pid, user等信息,可以用来kill -9 强制停止程序.pth 和 .pth.tar都可以直接loadtorch.save() 和 torch.load()一、save()先建立一个字典,保存三个参数:state = {‘net’:model.state_dict(), ‘optimizer’:optimizer.state_dict(), ‘epoch’:epoch}2.调用t..原创 2021-03-19 22:04:52 · 41 阅读 · 0 评论 -
2021-3-18
nn.Linear(N, * , HinH_{in}Hin)*的位置可以输入多个维度,但训练时只用最后一个维度的数据。学了个锤子原创 2021-03-19 19:32:01 · 63 阅读 · 0 评论 -
2021-3-17
师兄看文章太细了,而且印象很深,向他学习。from utils.utils import AverageMeterbatch_time = AverageMeter('Time', ':.2f')data_time = AverageMeter('Data', ':.2f')losses = AverageMeter('Loss', ':.4f')top1 = AverageMeter('Prec@1', ':.4f')top5 = AverageMeter('Prec@5', ':.4f.原创 2021-03-18 10:52:46 · 245 阅读 · 0 评论 -
2021-03-16学习小记
torch.nn.Identity() 建立一个输入模块, 什么都不做m = nn.Identity(54, unused_argument1=0.1, unused_argument2=False)input = torch.randn(128, 20)output = m(input)print(output.size())#torch.size([128, 20])einops 教程基础:https://github.com/arogozhnikov/einops/blob/ma..原创 2021-03-17 09:33:41 · 71 阅读 · 0 评论 -
2021.3.10学习记录
ubuntu截屏:ctrl+shift+printscreenubuntu设置主屏幕:xrandr #查看显示器信息xrandr --output name --primary# 设置主屏幕如果想要freeze某些层或参数,用self.register_buffer(name, tensor)。这个函数在反向传播时不会更新参数。读了coordinate Attention for Efficient Mobile Network Design(https://arxiv.or..原创 2021-03-10 19:48:16 · 81 阅读 · 0 评论 -
Video Transformer Network
Video Transformer Network文章目录Video Transformer Network前言一、背景二、框架总结前言目前,将transformer结构用于行为识别的文章还比较少,比较出名的有这一篇VTN和19年的一篇文章。此处先记录VTN。一、背景近年来,基于CNN的行为识别已经刷爆了UCF101等小的数据集,但在大数据集上的准确率难有很大的突破。Transformer作为一种新的方法,有望突破这个瓶颈。由于使用了自注意力机制,Transformer的参数量极大,难原创 2021-03-09 20:24:59 · 553 阅读 · 0 评论