
Pytorch
龙雪zzZ
这个作者很懒,什么都没留下…
展开
-
PyTorch:如何查找模型中未使用的参数即find unused parameters
这将打印任何没有在损失计算中使用的参数,它们的梯度是None。原创 2023-02-19 14:58:19 · 2956 阅读 · 3 评论 -
MMCV: KeyError: “xxx“ is not in the models registry
MMCV常见错误: KeyError: "xxx" is not in the models registry原创 2022-12-12 20:30:41 · 3872 阅读 · 0 评论 -
PyTorch:stack + reshape与cat之间的异同
PyTorch:stack + reshape与cat之间的异同原创 2022-09-21 20:59:03 · 479 阅读 · 0 评论 -
PyTorch:nn.Embedding.weight和nn.Embedding的区别
如果非直接使用nn.Embedding而使用nn.Embedding.weight来作为变量,其随机初始化方式是自带标准正态分布,即均值0,方差1的正态分布。原创 2022-09-20 14:30:19 · 2261 阅读 · 0 评论 -
AttributeError: ‘NpzFile‘ object has no attribute ‘zip‘, Python在加载模型过程中报错
错误原因分析:这个一般是由于网络原因导致下载相关预训练模型未下载完成,导致存留了一个不完整的文件在缓存区中,再调用加载的代码,代码会优先加载已经缓存的文件,此时由于下载不完全就会报错。解决办法:找到缓存区的位置,一般是自己用户路径下:Windows: C:\Users\xxx\.cacheLinux: /home/xxxx/.cache如果是pytorch框架相关的模型,就会在torch\hub\checkpoints下,删除对应模型的文件名(比如:resnet50-19c8e3原创 2022-02-19 14:38:07 · 3095 阅读 · 4 评论 -
Pytorch:nn.Module和网络模型构建步骤
模型说到模型模块的构建步骤,再来回顾一下Pytorch五大模块的流程《Pytorch:机器学习深度学习整个模型训练的总体步骤思路》模型模块的具体框架如下:模型创建具体通过代码表述...原创 2020-10-20 00:05:53 · 771 阅读 · 0 评论 -
Pytorch:离线下载预训练模型方法,如VGGNet,ResNet,DenseNet等
以Resnet18为例,在程序中输入from __future__ import print_function, divisionfrom torchvision import modelsmodel_ft = models.resnet18(pretrained=True)然后运行,就会出现如下再将这个网址复制到浏览器中,就可以直接下载Resnet18模型。下载结束后,将下载的文件放入你建立的python项目中,再运用如下代码就可以调用Resnet18模型。 model_f原创 2020-10-18 00:18:52 · 3095 阅读 · 0 评论 -
Pytorch:关于numpy与PIL转换的问题
对数据集的处理会遇到很多的问题,相信这些问题也经常困扰各位,尤其是关于transforms的使用。不得不说这个库非常的好用,帮助我们节省了很多的时间,但是不可避免我们会遇到关于pytorch中的Tensor,numpy以及PIL之间的转化,这主要是因为transforms进行转换时接受的是PIL Image类型,要不会报错,下面就这一部分讲解一下这部分的转化。# 首先来说明一下如何使用transforms来进行定义from torchvision import datasets, transform原创 2020-10-08 16:41:45 · 6384 阅读 · 2 评论 -
Pytorch:实现查询当前可用GPU的可用空闲内存并按照内存从大到小顺序打印出来
原创 2020-09-25 00:24:59 · 1781 阅读 · 0 评论 -
Pytorch:正向传播推理(predict)出的outputs的值的每一个元素数为什么是两个或多个
两个或多个其实指的就是类别数,如果是一个二分类问题,就是两个。红框和蓝框分别代表了每个类别的推理值,(此时可能通过了激活函数或者未通过),反正最后就是将通过激活函数后的值进行比较大小,大者为识别的类别,即predict对应的label...原创 2020-07-25 16:57:10 · 1544 阅读 · 0 评论 -
Pytorch:计算图像数据集的均值和标准差
在使用torchvision.transforms进行数据处理时我们经常进行的操作是:transforms.Normalize((0.485,0.456,0.406), (0.229,0.224,0.225))前面的(0.485,0.456,0.406)表示均值,分别对应的是RGB三个通道;后面的(0.229,0.224,0.225)则表示的是标准差这上面的均值和标准差的值是ImageNet数据集计算出来的,所以很多人都使用它们但是如果你想要计算自己的数据集的均值和标准差,让其作为..原创 2020-07-25 14:36:13 · 3568 阅读 · 0 评论 -
Pytorch:反transform操作,实现从tensor转成PIL image
该代码为transforms的反函数,实现从tensor转成PIL image,用于在框架的enumerate迭代中的中间图片可视化。代码思想如下,可以根据具体情况和需要进行修改def transform_invert(img_, transform_train): """ 将data 进行反transfrom操作 :param img_: tensor :param transform_train: torchvision.transforms :retu原创 2020-07-23 17:06:05 · 2071 阅读 · 0 评论 -
Pytorch:transforms二十二种数据预处理方法及自定义transforms方法
transforms.normalize功能:逐channel地对图像进行标准化公式:output=(input - mean) / stdmean:各通道的均值std:各通道的标准差inplace:是否执行原地操作,默认False原创 2020-07-23 12:08:52 · 3596 阅读 · 0 评论 -
Pytorch:transforms
transforms上篇博文《Pytorch:Dataloader和Dataset以及搭建数据部分的步骤》提到transforms是pytorch数据模块的预处理部分。transforms来自torchvision,torchvision是pytorch的计算机视觉工具包。torchvision有以下几个主要的模块:torchvision.transforms:常用的图像预处理方法torchvision.datasets:常用数据集的datasets实现,MNIST,CIFAR-10,Image原创 2020-07-23 12:02:58 · 746 阅读 · 0 评论 -
Pytorch:Dataloader和Dataset以及搭建数据部分的步骤
接下来几篇博文开始,介绍pytorch五大模块中的数据模块,所有概念都会以第四代人民币1元和100元纸币的二分类问题为例来具体介绍,在实例中明白相关知识。数据模块的结构体系数据模块分为数据的收集、划分、读取、预处理四部分,其中收集和划分是人工可以设定,而读取部分和预处理部分,pytorch有相应的函数和运行机制来实现。读取部分中pytorch靠dataloader这个数据读取机制来读取数据。DataloaderDataloader涉及两个部分,一是sampler部分,用于生成数据的索引(原创 2020-07-21 00:03:21 · 1770 阅读 · 3 评论 -
Pytorch:机器学习深度学习整个模型训练的总体步骤思路
下面给出模型训练步骤的思路,在用pytorch(也包括其他框架)编写代码进行网络编写时,建议都按照这几个步骤来进行,形成一个清晰的思路各模块简要说明数据:涉及数据的采集、清洗、划分及预处理等模型:根据任务的复杂程度选择简单的线性模型或复杂的神经网络模型等损失函数:根据任务的不同选择不同的损失函数,比如线性回归模型采用均方差函数,分类任务采用交叉熵函数等优化器:根据损失函数求得的梯度来更新模型参数迭代训练: 确立好前四大模块后,进行反复的迭代训练...原创 2020-07-16 23:03:05 · 5393 阅读 · 0 评论 -
Pytorch:通过pytorch实现逻辑回归
逻辑回归logistic regression逻辑回归是线性的二分类模型(与线性回归的区别:线性回归是回归问题,而逻辑回归是线性回归+激活函数sigmoid=分类问题)模型表达式:f(x)称为sigmoid函数,也称为logistic函数,能将所有值映射到[0,1]区间,恰好符合概率分布,如下图所示[0,1]区间形成二分类,一般以中点值(0.5)做界标,即为什么说逻辑回归是线性的,是因为线性回归的wx+b与0的大小关系正好对应f(wx+b)中与0.5的大小关系,.原创 2020-07-16 23:11:12 · 5401 阅读 · 1 评论 -
Pytorch:autograd 自动求导
神经网络离不开大量的梯度求导,若是交给人为计算,这将是十分耗时的一件事情。在pytorch中,autograd自动求导系统能有效解决这一问题。torch.autogradtorch.autograd.backward()(标量或向量的backward()方法实则也是调用了autograd.backward()方法)功能:自动求取梯度tensors:用于求导的张量,如lossretain_graph:保存计算图(pytorch采用的是动态图机制,所以在一次反向传播结束时会释放掉计算图的原创 2020-07-16 14:23:12 · 3769 阅读 · 0 评论 -
PyTorch中梯度为什么默认自动累加,在反向传播前要手动将梯度清零?
低显存跑大batchsize的角度这种模式可以让梯度玩出更多花样,比如说梯度累加(gradient accumulation)传统的训练函数,一个batch是这么训练的:for i,(images,target) in enumerate(train_loader): # 1. input output images = images.cuda(non_blocking=True) target = torch.from_numpy(np.array(target)).原创 2020-07-16 13:53:03 · 6033 阅读 · 0 评论 -
Pytorch:计算图与动态图机制
计算图computational graph表示方法计算图是用来描述运算的有向无环图计算图有两个主要元素:结点(node)和边(edge)结点表示数据,如向量,矩阵,张量边表示运算,如加减乘除卷积等计算图不仅使计算显得简洁,更重要的是其表示梯度求导更为方便用计算图表示y=(x+w)*(w+1): 令 a=x+w b=w+1 则y=a*b梯度求导结合题例的算式和计算图表示 从上述的计算图表示中,可以看到,除...原创 2020-07-16 00:00:04 · 3856 阅读 · 0 评论 -
Pytorch:通过pytorch实现线性回归
线性回归Linear Regression线性回归是分析一个变量与另外一个(多个)变量之间关系的方法因变量:y 自变量:x 关系:线性 y=wx+b 分析:求解w,b求解步骤:1. 确定模型2. 选择损失函数3.求解梯度并更新w,b此题:1. model:y=wx+b2. MSE:3. w = w - LR*w.grad b = b - LR*w.grad下为代码实现import torchim...原创 2020-07-15 17:52:01 · 3724 阅读 · 0 评论 -
PyTorch:函数加下划线代表的意思
PyTorch中,一般函数加下划线代表直接在原来的 Tensor 上修改原创 2020-07-15 15:55:37 · 4453 阅读 · 0 评论 -
Pytorch:Tensor 张量操作
张量操作一、张量的拼接与切分1.1 torch.cat()功能:将张量按维度dim进行拼接tensors:张量序列dim:要拼接的维度1.2 torch.stack()功能:在新创建的维度的上进行拼接tensors:张量序列dim:要拼接的维度(如果dim为新的维数,则新增一个维度) ...原创 2020-07-14 23:37:48 · 4821 阅读 · 0 评论 -
Pytorch:Tensor 张量的概念及张量的各种创建
Tensor 概念张量的数学概念:张量是一个多维数组,它是标量、向量、矩阵的高位扩展张量在pytorch中的概念:tensor之前是和pytorch早期版本中的variable一起使用的。variable是torch.autograd的数据类型,主要用于封装tensor,进行自动求导data:被包装的Tensorgrad:data的梯度grad_fn:创建Tensor的function,是自动求导的关键requires_grad:指示是否需要梯度is_leaf:指原创 2020-07-13 23:20:41 · 4350 阅读 · 1 评论 -
Pytorch官网一直很卡进不去,离线下载pytorch各类版本安装包方法
进入https://download.pytorch.org/whl/torch_stable.html选择自己对应版本的pytorch或torchvision等等文件下载即可原创 2020-07-04 23:25:04 · 8829 阅读 · 2 评论 -
pytorch 计算 CrossEntropyLoss 和 softmax 激活层
pytorch 计算 CrossEntropyLoss 不需要经 softmax 层激活!用 pytorch 实现自己的网络时,如果使用CrossEntropyLoss 我总是将网路输出经 softmax激活层后再计算交叉熵损失是不对的。考虑样本空间的类集合为 {0,1,2},网络最后一层有 3 个神经元(每个神经元激活值代表对不同类的响应强度),某个样本送入网络后的输出记为 net_ou...原创 2020-04-25 00:39:03 · 1295 阅读 · 0 评论 -
UserWarning:Implicit dimension choice for softmax has been deprecated. Change the call to include..
问题:UserWarning: Implicit dimension choice for softmax has been deprecated. Change the call to include dim=X as an argument. input = module(input)这个警告的原因是softmax()函数已经被弃用了,虽然程序还是可以运行成功,但是这个做法不被py...原创 2020-04-25 00:31:50 · 3251 阅读 · 0 评论 -
TypeError: can‘t convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory ..
在pytorch结合cuda下,直接使用output.data.numpy()会报标题错误:TypeError: can't convert CUDA tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory first.解决办法:output.data.cpu().numpy()把CUD...原创 2020-04-25 00:27:20 · 3257 阅读 · 0 评论