
pytorch
NuerNuer
这个作者很懒,什么都没留下…
展开
-
记录之目标检测NMS(非极大值抑制)
NMS原创 2022-07-23 17:26:04 · 1101 阅读 · 0 评论 -
tensorflow 和 pytorch 中调整 feature map 尺寸实现上采样
原创 2022-04-19 10:49:56 · 1797 阅读 · 0 评论 -
记录之tensorflow和pytorch中的取范数归一化操作
最近在将tensorflow翻译成torch的时候遇到了一个问题,就是有一个函数 tf.nn.l2_normalize没有找到相应的替换函数,无奈自己手写了一个这样的操作,最近在阅读令一个torch源码时发现了,就及时记录tf:import tensorflow as tftf.nn.l2_normalize(x, dim, epsilon=1e-12, name=None)参数:x:输入;dim:为l2范化的维数epsilon:范化的最小值边界torch:import.原创 2022-01-16 21:24:09 · 1130 阅读 · 0 评论 -
AssertionError: Invalid device id 和RuntimeError: CUDA error: invalid device ordinal
我在使用torch多卡并行时出现了这个两个问题。##问题一:AssertionError: Invalid device id,即无效的设备id出现的原因:结合代码解释:import ...os.environ["CUDA_VISIBLE_DEVICES"] = "2,3"model = model(...)torch.cuda.set_device(2)model = torch.nn.DataParrel(model, device_ids=[2,3])错误原因:o原创 2022-01-14 17:27:40 · 13735 阅读 · 0 评论 -
pytorch选出数据中的前k个最大(最小)值及其索引
选择最大值及其索引,大家都知道使用max(),argmax()函数。那么如何返回前k个最大值呢,这在我们计算topK准确率的时候很有必要:在torch中,我们可以使用sort函数来实现:a, idx1 = torch.sort(data, descending=True)idx = idx1[:k]Return:a:排好序的数据idx1:对应排序数据的索引因此只需设置k的大小,就可以截取到前k个最大值的索引。这里若数据是tensor则用torch,若是list或ndarray,可原创 2021-12-13 16:50:30 · 11446 阅读 · 5 评论 -
einops包中的rearrange,reduce, repeat及einops.layers.torch中的Rearrange,Reduce。对高维数据的处理方式
from einops import rearrange, reduce, repeatfrom einops.layers.torch import Rearrange, Reduce一.rearrange和Rearrange,作用:从函数名称也可以看出是对张量尺度进行重排,区别:1.einops.layers.torch中的Rearrange,用于搭建网络结构时对张量进行“隐式”的处理例如:class PatchEmbedding(nn.Module): def __in.原创 2021-11-21 17:06:51 · 8952 阅读 · 3 评论 -
关于pytorch中super的一点思考,结合代码
class ResidualAdd(nn.Module): def __init__(self, fn): super().__init__()#inherit fa class's init method self.fn = fn def forward(self, x, **kwargs): res = x x = self.fn(x, **kwargs) x += res return .原创 2021-11-21 11:44:15 · 1513 阅读 · 0 评论 -
实验问题集中记录
1.torch.repeat和tf.tile两个函数都是将tensor的某一维度进行制定次数的重复:a_ = torch.repeat(a, [x,y,x]) #a是三维tensor,将其1,2,3维分别repeat x, y, z次b_ = tf.tile(b, [c,d,e,f]) #b是三维tensor,将其1,2,3,4维分别repeat a,b,c,d次2.torch.diagonal和tf.diag_part提取张量的主对角线元素#torchx = torch.randn原创 2021-11-07 21:22:32 · 162 阅读 · 0 评论 -
pytorch 1.7.x训练保存的模型在1.4低版本无法加载
pytorch1.6.x及更高版本,在保存模型和低版本有区别,因此导致高版本的保存模型在低版本下加载失败的问题:我们只需在较高版本torch下保存时,设置_use_new_zipfile_serialization=Falsedata = ... #type:OrderedDicttorch.save(data, 'new_model.pth', _use_new_zipfile_serialization=False)关于data的获取不同方式保存的模型处理方式不太一致,要搞清自己的模型是原创 2021-10-17 17:04:10 · 2179 阅读 · 0 评论 -
pytorch 之 保存不同形式的预训练模型
注意,后缀.pt和.pth似乎没什么区别保存时即可以保存整个模型也可以只保存参数,还可以构建新字典重新保存,这也就对应了在读取时需要做不同的处理,我们在加载的时候load_state_dict函数的参数就是OrderedDict类型的参数,这里给出了四种不同保存方式及其读取获得OrderedDict的方式。1.保存# coding=gbkimport torch import torch.nn as nnclass MLP_(nn.Module): def __init__(sel原创 2021-10-17 16:56:35 · 812 阅读 · 0 评论 -
记录之pytorch中文文档
链接:https://pytorch-cn.readthedocs.io/zh/latest/package_references/torch-nn/原创 2020-08-12 23:27:40 · 158 阅读 · 0 评论 -
pytorch 之 冻结某层参数,即训练时不更新
首先,我们知道,深度学习网络中的参数是通过计算梯度,在反向传播进行更新的,从而能得到一个优秀的参数,但是有的时候,我们想固定其中的某些层的参数不参与反向传播。比如说,进行微调时,我们想固定已经加载预训练模型的参数部分,指向更新最后一层的分类器,这时应该怎么做呢。首先我们的模型定义为:class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Con原创 2020-08-07 13:27:08 · 18116 阅读 · 7 评论 -
pytorch 之 torch.max() 和 torch.min() 记录
两个函数用法相同,此处就介绍max函数。1.torch.max(data),不指定维度,返回data的最大值。2.torch.max(data,dim),返回data中指定维度的最大值。3.torch.max(data1,data2),返回data1和data2相同位置两值中的最大值。...原创 2020-07-28 22:42:23 · 530 阅读 · 0 评论 -
pytorch 之 有关交叉熵函数使用的几点说明
1.函数原型:loss_func = nn.CrossEntropyLoss() loss = loss_func(pre_label, label)2.值得注意的点,这里的label不需要赋值one-hot编码类型,因为函数内部会自动将label变换为one-hot类型,如果这里赋值为one-hot编码,则会产生类似如下报错:①:RuntimeError: multi-target not supported at /opt/conda/conda-bld/...原创 2020-07-24 23:05:34 · 535 阅读 · 0 评论 -
pytorch 之 分开安装 torch 和 torchvision
本人在工作时遇到了一个比较尴尬的问题,就是虚拟环境中已有固定版本的torch,但没有安装torchvision,因此很本能的安装:pip install torchvision如果直接这样安装的话,我们发现会连带安装新版本的torch,由于不是本人的虚拟环境,不想改变别人的torch版本。因此该方法行不通。就在思考如何分开安装torch 和 torchvision,后来发现,只需下载较低版本的torchvision就可以解决我的问题。只要下载的版本大于0.3.x,就会下载更新torch。因此选择原创 2020-07-22 00:32:06 · 2968 阅读 · 0 评论 -
记录 之 遇到的 lamda 表达式和功能理解
这里只是为了记录我所遇到的两种情况,还有更多的应用场合,大家可以查看python手册1.形如,lamda x:x,lamda x:x^2,lamda x:f(x)等: 这其实等价于定义可一个函数,即: def function(x): return f(x) 这种特殊的用法,可以用于残差网络结构设计.2.例:result = [lambda x: x + i for i in range(7)] 这种用法相对来说比较难理解,但本质上还是跟1所介绍的涵义是...原创 2020-07-09 14:19:39 · 220 阅读 · 0 评论 -
pytorch 之 torch.eye()函数
这个函数主要是为了生成对角线全1,其余部分全0的二维数组函数原型:result = torch.eye(n,m=None,out=None)参数解释:n:行数m:列数out:输出类型例:c = torch.eye(3)print(c)print(type(c))输出tensor([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]])<class 'torch.Tensor'>...原创 2020-07-09 13:56:27 · 53327 阅读 · 2 评论 -
pytorch 之 torch.bmm()函数
这是一个计算两个tensor之间乘积的函数,该函数要求两个tensor必须都是三维的,且对两个tensor维度有限制,要求啊a,b两个tensor有如下格式:a:(z,x,y)b:(z,y,c)则result = torch.bmm(a,b),维度为:(z,x,c)这里大家应该对该函数有了一个更加具体的认识了,还有其他的tensor乘法操作,可以参考我之前的博客。...原创 2020-07-09 13:48:19 · 6071 阅读 · 2 评论 -
pytorch之tensor按索引赋值,三种方法!
这里,我们介绍其中一种方法,即torch.scatter_()函数import torchlabel = torch.zeros(3, 6) #首先生成一个全零的多维数组print("label:",label)a = torch.ones(3,5)b = [[0,1,2],[0,1,3],[1,2,3]]#这里需要解释的是,b的行数要小于等于label的行数,列数要小于等于a的列数print(a)label.scatter_(1,torch.LongTensor(b),a) #参数原创 2020-06-27 19:30:07 · 32753 阅读 · 1 评论 -
pytorch切片,numpy切片的总结,以及数组切片常用操作的总结
对于pytorch里的tensor来讲,以4维tensor:data为例,我们顺序的获取第2个维度,从0-N-1的切片是很容易的,只需out = data[:,:,:N,:]但是思考,我们想获取第2个维度,从3-N-5的切片该怎么做呢,接下来着重介绍的就是这种需求:index = list(np.arange(3,N-4,1))#左闭右开,首先生成需要切片的索引indexs = torch.LongTensor(index)out = torch.index_select(data,d,原创 2020-06-27 19:04:44 · 2133 阅读 · 0 评论 -
返回多维数组中某一维的最大值
这个功能,我在torch中没有找到解决办法,但是我们可以将tensor转换成np.adarray来做out = np.max(data,axis = a) #挑选数据data中第a维最大值返回索引idx = np.argmax(data, axis=b)原创 2020-06-27 17:55:10 · 1142 阅读 · 0 评论 -
pytorch 之 加载不同形式的预训练模型
我们在学习pytorch时,不可避免的要加载不同的预训练模型。而且pytorch下的预训练模型有很多种形式,我们又该如何加载呢。今天,我就为大家介绍三种常用的模型形式以及其加载方式。1.pt形式,这种形式的模型使我们较为常见的形式,保存的直接就是权重。if __name__=='__main__': with torch.no_grad(): model=InceptionI3d(num_classes=400,in_channels = 3) if not原创 2020-06-11 01:07:10 · 1332 阅读 · 0 评论 -
RuntimeError 之 : CUDA error: device-side assert triggered
我们在使用Pytorch时会遇到这种错误,这种错误往往是因为你的标签数据里出现了超出标签范围的值,比如说你要做100个动作的动作识别,那么你的标签范围应该是0,1,2.....99.一般我们采用从0开始的计数方式,但是如果你的标签数据里出现了诸如-1或100这样不再此范围中的数据时,便会报此错误。解决办法就是确认你的标签的范围,以及你产生标签的方式,是不是从1开始计数的。或者一切会导致标签出错的原因。...原创 2020-06-02 17:54:58 · 6605 阅读 · 0 评论 -
ResNeXt 之 输入数据预处理代码详解
了解深度学习的同学都知道,在写代码的时候,主要的两个部分就是网络搭建和数据预处理工作,那么这就需要我们不断地积累才能更好地使用,接下来我会给大家介绍ResNeXt的数据预处理工作是怎么进行的,我在代码部分的关键部分都做了详细的注释,大家一定要看代码。...原创 2020-05-25 00:08:37 · 858 阅读 · 1 评论 -
Pytorch 之 TSM(Time Shift Module)测试部分源码详解
本文致力于将文中的一些细节给大家解释清楚,如果有照顾不到的细节,还请见谅,欢迎留言讨论1.参数部分:parser = argparse.ArgumentParser(description="TSM testing on the full validation set")parser.add_argument('dataset', type=str)# may contain splitsparser.add_argument('--weights', type=str, default=原创 2020-05-13 16:11:38 · 2565 阅读 · 3 评论 -
pytorch中的批量归一化BatchNorm1d和BatchNorm2d的用法、原理记录
1.对2d或3d数据进行批标准化(Batch Normlization)操作:原类定义:class torch.nn.BatchNorm1d(num_features, eps=1e-05, momentum=0.1, affine=True):参数释义:num_features:特征的维度 (N,L) -> L ;(N,C,L) -> Ceps:在分母上添加一...原创 2020-04-17 14:36:13 · 9315 阅读 · 1 评论 -
解决安装pytorch慢的方法(pip安装)
关于conda安装的解决办法网上已经有很多了,这里我们重点讲解使用pip方法安装的解决办法。首先:进入pytorch官网:链接:https://pytorch.org/选择好后,我们发现会给出安装命令。1.首先,运行这个命令。我们可以得到,该命令所下载资源的具体版本名称,我的是:得到连接后,可以使用下载工具下载到本地,这样会很快。2.下载结束后,我们使用命令安...原创 2020-04-16 15:54:53 · 11005 阅读 · 8 评论