pytorch
文章平均质量分 51
冬日and暖阳
Github: https://github.com/pengfeidip
邮箱:pengfeidip@qq.com
展开
-
pytorch余弦退火学习率CosineAnnealingLR的使用
pytorch 余弦退火学习率原创 2022-08-02 10:08:15 · 35002 阅读 · 13 评论 -
pytorch的量化Quantization
一、相关背景pytorch 从 1.3 开始增加了量化相关的接口,目前pytorch 最新版本已经到了1.11了,猜测其量化相关工具已经完善了(易用、模型速度提升,模型质量几乎不下降),所以开始记录量化相关知识。注意本文开始写于 20220521,pytorch 版本 1.11。如果时间相差太多或者版本相差太多,后面的信息可能会不适用。相应资料均来自与pytorch官网二、Quantization量化相关知识就不介绍了,网上一大堆,pytorch也是一大堆介绍。这里就简单给出个pytorch原创 2022-05-21 15:54:46 · 2908 阅读 · 0 评论 -
pytorch的预训练模型的使用
背景pytorch中有很多在ImageNet上训练得到的预训练模型,可以拿来做迁移学习(如下图)。但是使用的时候需要注意,如果想得到最佳的效果以及最快的收敛速度,那么迁移学习的时候,预处理部分需要和这些模型在ImageNet上训练的时候保持一直。对应的预处理以上的模型在ImageNet上训练时,对图像使用的预处理是channe的顺序是 RGB(不是BGR)tensor的维度顺序是 C ✖️ H ✖️ W像素值归一化到0~1减去均值:[0.485, 0.456, 0.406]除以标准差:[原创 2022-03-30 20:12:16 · 3553 阅读 · 0 评论 -
pytorch 提取中间层的特征
一、背景需要提取网络中间层的特征,用于特征工程或者可视化二、解决方案先说好,有很多解决的方法呢,这里给出一种我认为是简单的,官方提供的功能https://pytorch.org/vision/main/generated/torchvision.models.feature_extraction.create_feature_extractor.html#torchvision.models.feature_extraction.create_feature_extractor核心代码如下fro原创 2022-03-30 11:28:46 · 3609 阅读 · 2 评论 -
PyTorch中的张量(Tensor)复制(clone)
需要注意不能是源tensor的view,必须是重新开辟内存不能还处于计算图中,需要隔离出来https://blog.csdn.net/winycg/article/details/100813519原创 2022-03-15 17:28:44 · 2318 阅读 · 0 评论 -
pytorch 修改卷积核的权重weights、偏置bias
生成卷积核以后如何去自定义修改卷积核的权重呢?kernel_data = torch.rand(1,1,3,3)print(kernel_data )conv = nn.Conv2d(in_channels=1, out_channels=1, kernel_size=(3,3),stride=1, padding=1, padding_mode='zeros', bias=False)print(conv.weight.data)conv.weight = nn.Parameter(kernel原创 2022-03-15 11:02:33 · 10121 阅读 · 4 评论 -
pytorch,通过插入None对tensor进行维度扩充
背景pytorch已经有了unsqueeze操作来增加tensor的维度,除了这个可以使用一个更显示,更直观,更简单的方法 -> 插入None来伪装一个axis具体方法import torchx = torch.randn(8)print(x.shape) # torch.Size([8])1 在所有维度之前插入一个维度x = torch.randn(8)x = x[None, :] print(x.shape) # torch.Size([1, 8])2 一次性插入多个维度原创 2022-02-28 22:12:22 · 1043 阅读 · 0 评论 -
pytorch二分类交叉熵的两种形式
一、二分类交叉熵的两种计算接口torch.nn.BCELoss和torch.nn.BCEWithLogitsLos二、二者计算接口的区别torch.nn.BCELoss就是我们通常意义理解的二分类交叉熵的计算,并且提供了权重和维度的控制。wnw_nwn表示权重控制。 reductionreductionreduction表示维度控制的方式。ℓ(x,y)=L={l1,…,lN}⊤,ln=−wn[yn⋅logxn+(1−yn)⋅log(1−xn)], \ell(x, y) = L = \{原创 2021-10-09 17:14:43 · 1193 阅读 · 0 评论 -
pytorch的register_buffer
Version pytorch 1.7Belong torch.nn.ModuleAdds a buffer to the module.This is typically used to register a buffer that should not to be considered a model parameter. For example, BatchNorm’s running_mean is not a parameter, but is part of the module’s原创 2021-07-06 15:49:39 · 1622 阅读 · 0 评论 -
PyTorch的基础知识点记录
PyTorch version 1.61 Model类的属性:m.parameters()返回的是一个生成器。生成器返回的每一个元素是tensor,是网络的实际参数原创 2021-05-23 12:26:17 · 134 阅读 · 0 评论 -
pytorch debugging PyCharm/Pycharm调试 pytorch 查看变量 显示 timimg out
问题pycharm 调试的时候,变量显示 timing out解决方案把 num_workers 设置为0reference :https://stackoverflow.com/questions/59030675/pytorch-debugging-timeout-with-pycharm原创 2020-07-06 19:21:59 · 967 阅读 · 0 评论 -
pytorch 里面的pth格式和pkl格式之前的区别
转载 2019-12-02 18:46:52 · 2038 阅读 · 0 评论 -
linxu/torch/pytorch会自动安装 cuda
如下图所示原创 2019-11-19 17:02:32 · 1369 阅读 · 5 评论 -
pytorch删除tensor中的指定行列
前言在pytorch中, 想删除tensor中的指定行列,原本以为有个函数或者直接把某一行赋值为[]就可以,结果发现没这么简单,因此用了一个曲线救国方法,希望如果有更直接的方法,请大家指出。code本质上是利用mask删除了指定行,然后重新指向。a = torch.rand(4, 2)print(a)idx = 1a = a[torch.arange(a.size(0))!=1] ......原创 2019-06-06 13:55:26 · 30636 阅读 · 7 评论 -
pytorc torch.uint8与torch.long/ torch. float
版本: pytorch1.0目的: tensor中的index与mask例子下面针对torch.long 与torch.uint8数据类型在index/mask 中的不同作用进行分析t = torch.rand(4,2)"""tensor([[0.5492, 0.2083], [0.3635, 0.5198], [0.8294, 0.9869],...原创 2019-06-06 13:37:09 · 10501 阅读 · 2 评论 -
pytorch的显存机制torch.cuda.empty_cache()
转自:https://oldpan.me/archives/pytorch-gpu-memory-usage-trackPytorch已经可以自动回收我们不用的显存,类似于python的引用机制,当某一内存内的数据不再有任何变量引用时,这部分的内存便会被释放。但有一点需要注意,当我们有一部分显存不再使用的时候,这部分释放的显存通过Nvidia-smi命令是看不到的,举个例子:device =......转载 2019-05-22 20:50:02 · 46975 阅读 · 2 评论 -
pytorch/torch中的view
类似于numpy中的reshape,且不改变原始数据。重点是,它是从最后一个维度进行reshape中的import torcha = torch.randint(0, 10, size=(3, 4))print(a)print(a.view(4, 3))print(a.view(1, 12))分别得到tensor([[7, 1, 7, 2], [9, 5, 7, ...原创 2019-05-19 19:44:02 · 189 阅读 · 0 评论 -
pytorch: Variable, tensor,numpy相互类型转换
转自:https://blog.csdn.net/pengge0433/article/details/794596791.将numpy矩阵转换为Tensor张量sub_ts = torch.from_numpy(sub_img) #sub_img为numpy类型2.将Tensor张量转化为numpy矩阵sub_np1 = sub_ts.numpy() ...转载 2018-09-15 16:57:44 · 808 阅读 · 0 评论 -
pytorch tensor division/除法
除法的时候要注意数据类型的问题a = torch.div(torch.tensor([160, 110]), 0.137)jupyter notebook就会奔溃, 因为torch.tensor([160, 110])是torch.int64数据类型, 而0.137(或者说torch.tensor(0.137))是torch.float32类型.如果改成下面这样, 就会顺利运行a = t...原创 2018-11-26 11:03:15 · 14455 阅读 · 0 评论 -
pytorch RuntimeError: An attempt has been made to start a new process before the current pr
pytorch 加载数据时报错:RuntimeError: An attempt has been made to start a new process before the current process has finished its bootstrapping phase. This probably means that you a...转载 2018-12-04 14:59:05 · 960 阅读 · 0 评论 -
pytorch的DataLoader使用细节
背景: 我一开始是对数据扩增这一块有疑问, 只看到了数据变换(torchvisiom.transforms),但是没看到数据扩增, 后来搞明白了, 数据扩增在pytorch指的是torchvisiom.transforms + torch.utils.data.DataLoader+多个epoch共同作用下完成的,数据变换共有以下内容composed = transforms.Compose(...原创 2018-11-27 10:51:56 · 2241 阅读 · 0 评论 -
pytorch 各种坑
制作dataloader时, 忘了做图像尺寸的同一调整:RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 0. Got 182 and 360 in dimension 2RuntimeError: invalid argument 0: Sizes of tensors mu...原创 2018-11-28 19:36:39 · 272 阅读 · 0 评论 -
pytorch-unsqueeze用法
tensor.unsqueeze 为tenor添加维度a = torch.rand((1, 3, 5), dtype=torch.float32)print("a shape is ", a.size())b = a.unsqueeze(-1) # 负1表示 在最后一维上添加print("b shape is ", b.size())输出结果如下a shape is torch...原创 2018-12-07 21:06:01 · 984 阅读 · 0 评论 -
pytorch 深度学习, CPU预处理时间大于GPU网络处理时间、数据增强
背景:想知道训练网络时,时间花在了哪.做了一个性能分析,关于训练网络时的时间消耗问题。1.电脑: i7-6700,1070 ti2.tiny-YOLO_v1(9层) ,3.预处理包括随机平移,缩放,Hue,Saturation等结果batch-size = 18时, 一个batch平均用时:image 加载和预处理 : 0.4849s;网络前向+损失计...原创 2018-12-04 09:20:26 · 1566 阅读 · 0 评论 -
pytorch tensor比较大小 数据类型要注意
如下a = torch.tensor([[0, 0], [0, 0]])print(a>=0.5)输出tensor([[1, 1], [1, 1]], dtype=torch.uint8)结果明显不对, 分析原因是因为, a是long类型, 而0.5是float. 0.5会被转化为 long, 变为0. 因此结果会出错, 做出如下修改就可以得到正确答案正确用法...原创 2018-12-09 20:55:12 · 7524 阅读 · 0 评论 -
pytorch的tensor除法
python 3.6 pytorch 0.4.1正常的python 3.X, 除法的结果是直接把二者转化为浮点型, 再做除法, 因此有以下结果:1/3""" 0. 3333"""但是tensor不遵循这个规则, 结果如下:torch.tensor([1])/torch.tensor([3])"""tensor([0])"""...原创 2018-12-10 09:05:15 · 19885 阅读 · 2 评论 -
pytorch根据tensor.Size 创建tensor-----torch.FloatTensor()
类型转换, 将list ,numpy转化为tensor。 以list -> tensor为例:print(torch.FloatTensor([1,2]))# 输出: tensor([1., 2.])根据torch.Size()创建一个空tensor a = torch.tensor([[1, 2], [3, 4]]) print(torch.FloatTenso...原创 2018-12-27 19:14:18 · 19070 阅读 · 6 评论 -
【pytorch】torch.utils.data.DataLoader中的pin_memory属性
doc解释:https://pytorch.org/docs/stable/_modules/torch/utils/data/dataloader.html#DataLoaderpin_memory (bool, optional): If True, the data loader will copy tensors into CUDA pinned memory before retu...转载 2019-01-12 18:53:57 · 477 阅读 · 0 评论 -
pytorch-tenor-细节
1..view的共享内存机制:a = torch.rand(3, 4)print("before a\n", a)b = a.contiguous().view(4, 3)print("before b\n", b)b[:, 1].fill_(0)print("after a\n",a)print("after原创 2019-01-08 21:17:03 · 263 阅读 · 0 评论 -
pytorch-tensor-维度
背景:tensor的维度一直令我疑惑,在此记录一下。注意: 首先,能添加的维度是有限制的,假设为tensor添加维度,其中添加的维度是有个范围限制(左闭右开)的:[−tensor.dim()−1,tensor.dim()+1)[-\text{tensor}.dim() - 1, \text{tensor}.dim() + 1)[−tensor.dim()−1,tensor.dim()+1)当...原创 2019-01-09 10:19:02 · 2857 阅读 · 0 评论 -
pytorch, 模型初始化
背景:用refineDet-resnet-101的时候,遇到问题。refineDet需要用resnet-101进行初始化,但是由于二者的结果并不完全一致(i.e部分一致),所以不能直接refineDet-resnet-101.load_state_dict()来做。需要自己自己写for循环来手动匹配。一些需要知道的知识pytorch 所提供的预训练模型 .pth的本质是一个OrderedDi...原创 2019-03-05 16:46:33 · 949 阅读 · 0 评论 -
pyTorch 错误提示
TypeError: argument 0 is not a Variable原因:在于输入data不是Variable,需转化成Variable格式。解决:from torch.autograd import Variabledata = Variable(data)原创 2018-09-15 16:30:26 · 336 阅读 · 0 评论