随笔分类 - Pytorch
摘要:最近遇到了一个问题,模型是用DistributedDataParallel一机多卡分布式训练的,然后作为一个jupyter notebook重度用户,我想用它来加载这个模型,搞点预测的例子可视化看看。 但是这会碰到一个问题,我们都知道通常加载预训练模型的方法是: pretrained_dict =
阅读全文
摘要:Pytorch使用这个方法,就可以在已有模型的基础上重新加一些结构,比如已经加载了某个预训练模型,但仍需要增加一些模块,此时已经不能在一开始构建模型的时候init进去模块,于是可以在load完模型后,用model.add_module,把所需要的模块增添进去,使用方法是model.add_modul
阅读全文
摘要:最近因为vision transformer里的pytorch代码,看到了torch.einsum(np.einsum同理)这个操作,简直是神了; 比如 t = torch.randn(2,4,3) q, k, v = tuple(rearrange(t, 'b t (d k) -> k b t d
阅读全文
摘要:最近要用OCR来识别图像中的文字,于是用了easyocr这个库,但是到了下载模型的阶段一直不成功 reader = easyocr.Reader(['en']) 查了一下说是代理的限制,可能公司服务器也装代理了,按照网上说的使用了以下两行代码: import ssl ssl._create_defa
阅读全文
摘要:最近发现一个在torch中容易混淆的问题: import numpy as np import torch x1 = torch.tensor([[1,2,3],[0,1,2]]) x2 = torch.tensor([[2,3,4],[2,4,1]]) x11 = np.array([[1,2,3
阅读全文
摘要:首先,这两者是不能混淆也很容易混淆的,而混淆后代码其实是能跑通的,但结果肯定有差异,这就很恶心。 rpn_locs = rpn_locs.permute(0, 2, 3, 1).contiguous().view(n, -1, 4) 上面代码,在Faster-RCNN里,需要把rpn网络的一个输出,
阅读全文
摘要:最近要跑一个faster-rcnn的代码,用到了visdom,因此记录一下使用方法 1、在服务器上运行 python -m visdom.server 发现一直是Downloading scripts, this may take a little while,在网上找了一些方法, 找到visdom
阅读全文
摘要:因为需要跑一些别人的GCN的任务,所以就要安装相关的包; 首先要注意cuda版本和pytorch中的对应关系,必须严格对应,比如我的机器上,cuda版本是10.1; pytorch的cuda版本也是10.1,之前其实是10.2,又重装了一遍; pytorch版本是1.4; python版本是3.6;
阅读全文
摘要:之前安装dali这个库的时候,都是按照官网的方法安装,但这几天想在新机器上安装时,一直报错 Looking in indexes: https://pypi.org/simple, https://developer.download.nvidia.com/compute/redist/ WARNI
阅读全文
摘要:1、关于detach和data和clone https://zhuanlan.zhihu.com/p/148061684 https://blog.csdn.net/dss_dssssd/article/details/89526623 2.关于叶子节点和非叶子节点 https://blog.csd
阅读全文
摘要:之前用的adam优化器一直是这样的: alpha_optim = torch.optim.Adam(model.alphas(), config.alpha_lr, betas=(0.5, 0.999), weight_decay=config.alpha_weight_decay) 没有细想内部参
阅读全文
摘要:在代码书写没有bug的情况下,Pytorch竟然报了这个错: RuntimeError: cuDNN error: CUDNN_STATUS_NOT_SUPPORTED. This error may appear if you passed in a non-contiguous input. 起
阅读全文
摘要:保存模型: def save(model, model_path): torch.save(model.state_dict(), model_path) 加载模型: def load(model, model_path): model.load_state_dict(torch.load(mode
阅读全文
摘要:之前一直不清楚怎么查看模型的参数和结构,现在学习了一下。 首先搞个resnet20出来 import torch import torch.nn as nn import torch.nn.functional as F from torch.nn import init from models.r
阅读全文
摘要:Pytorch中根据索引取张量有很多方法,比如index_select和masked_select,和gt,ge等配合食用,但如果需要取出最小几个或最大几个张量的索引,则需要动手写一下 a = torch.tensor([2,3,1,5]) y,_ = torch.sort(a) mask = a.
阅读全文
摘要:1、主要作用:变换tensor维度 example: import torch x = torch.randn(2, 3, 5) print(x.size()) print(x.permute(2, 0, 1).size()) >>>torch.Size([2, 3, 5]) >>>torch.Si
阅读全文
摘要:在Pytorch0.4版本的DARTS代码里,有一行代码是 在1.2及以上版本里,查看源码可知,CIFAR10这个类已经没有train_data这个属性了,取而代之的是data,因此要把第二行改成 datasets.CIFAR10源码如下:
阅读全文
摘要:之前在用预训练的ResNet的模型进行迁移训练时,是固定除最后一层的前面层权重,然后把全连接层输出改为自己需要的数目,进行最后一层的训练,那么现在假如想要只是把 最后一层的输出改一下,不需要加载前面层的权重,方法如下: 首先模型结构是必须要传入的,然后把最后一层的输出改为自己所需的数目
阅读全文
摘要:首先注明,参考了这篇博客https://www.jianshu.com/p/4905bf8e06e5 方法1、 先序列化,格式可以是mdl,pt等 然后反序列化,再加载 方法2、 保存整个模型,格式可以是pth.tar 然后加载 还有一些在GPU和CPU之间的传输方法,具体见博客或者官方文档
阅读全文
摘要:这几天关于accuracy和loss的计算有一些疑惑,原来是自己还没有弄清楚。 给出实例 首先这样一次训练称为一个epoch,样本总数/batchsize是走完一个epoch所需的“步数”,相对应的,len(train_loader.dataset)也就是样本总数,len(train_loader)
阅读全文