pytorch
傲笑风
让机器看懂世界
展开
-
基于人脸5个关键点的人脸对齐(人脸纠正)
人脸检测模型输出人脸目标框坐标和5个人脸关键点,在进行人脸比对前,需要对检测得到的人脸框进行对齐(纠正),本文将通过5个人脸关键点信息对人脸就行对齐(纠正)。原创 2023-09-24 22:57:51 · 2064 阅读 · 0 评论 -
指定程序在哪个GPU上运行
当本地(或服务器)有个多个GPU时,需要指定程序在指定GPU上运行,需要做以下设置。原创 2023-09-24 16:56:41 · 4111 阅读 · 0 评论 -
shape和resize对应的高(height)和宽(weight)的顺序
无论是pytorch还是oepncv,都有对应的成员变量shape以及函数resize,其对应的高(height)和宽(weight)的顺序是不一样的。从中可以发现,shape返回图片的尺寸顺序是:高、宽。而resize()函数输入参数顺序是:宽、高。同理,pytorch也是如此。原创 2023-04-09 22:07:16 · 1378 阅读 · 1 评论 -
pytorch: 转onnx模型
onnx(Open Neural Network Exchange)主要用于部署,训练一般使用pytorch和tensorflow,等训练完成,我们需要模型转成onnx,用于部署在云或者边缘计算上。而为什么要要转成onnx模型呢,主要是因为onnx没有训练,只有推理,速度很快,而且目前大多数芯片都适配onnx模型,相当于一个通用莫模型,易部署,而且速度快。原创 2023-01-09 16:28:50 · 2975 阅读 · 0 评论 -
pytorch:参数pin_memory=True和non_blocking=True的作用
参数pin_memory=True和non_blocking=True的作用原创 2022-10-12 15:59:11 · 9462 阅读 · 0 评论 -
pytorch:本地可视化服务器的tensorboard
由于服务器上的系统是无界面系统,无法使用tensorboard进行可视化,但是可以在本地可视化服务器上的tensorboard。原创 2022-10-10 17:37:38 · 917 阅读 · 0 评论 -
pytorch:本地使用tensorboard可视化
tensorboard是tensorflow用来可视化训练和测试过程的模块,而pytorch并没有可视化模块,但是pytoch=1.2.0版本以上开始支持tensorboard。原创 2022-10-10 17:10:41 · 1982 阅读 · 1 评论 -
【解决】pytorch单机多卡问题:ERROR: torch.distributed.elastic.multiprocessing.api:failed
最近在使用单机多卡进行分布式(DDP)训练时遇到一个错误:ERROR: torch.distributed.elastic.multiprocessing.api:failed。而实际报错的内容是:ValueError: sampler option is mutually exclusive with shuffle.原创 2022-09-16 16:45:40 · 66515 阅读 · 12 评论 -
【解决】RuntimeError:Trying to backward throughthe graph a second time
RuntimeError:Trying to backward throughthe graph a second time (or directly access saved tensors after they have already been freed). Saved intermediate values of the graph are freed when you call.backward() or autograd.grad().原创 2022-09-09 15:28:03 · 9481 阅读 · 0 评论 -
pytorch:单机多卡(GPU)训练
pytorch实现单机多卡的分布式训练原创 2022-09-09 11:24:08 · 6779 阅读 · 0 评论 -
pytorch: 获取 tensor 维度的方法:shape 和 size()
pycharm 获取 tensor 的方法有两种:shape 和 size()tensor 是类 Temsor() 的实例, 其中shape是其属性,而 size() 是其继承的方法,两者均可以获得 tensor 的维度。import torcha = torch.tensor([[1, 2, 3], [4, 5, 6]])print(a.shape)print(a.size())输出为:torch.Size([2, 3])torch.Size([2, 3])另外,还可以获取其中的某一原创 2022-01-14 16:34:11 · 73579 阅读 · 3 评论 -
pytorch:nn.ReLU(inplace=True) 中的参数 inplane 的作用
pytorch 的激活函数nn.Relu() 有一个参数:inplane,其作用是:该nn.Relu() 函数计算得到的输出是否更新传入的输出。正常情况下,一个卷积操作,首先经过卷积层,接着是正则化(Normalize),最后经过激活函数,而输入激活函数的是正则化后的的 tensor(为了方便描叙,称为A),经过激活函数得到新的tensor(为了方便描叙,称为B),而参数 inplane 的作用是B是否覆盖A。默认情况下,inplane=False,即保留B又保留A。如果把 inplane=True,原创 2021-12-15 21:32:13 · 5278 阅读 · 2 评论 -
pytorch: Pool 和 AdaptivePool 的区别和使用方法
在 pytorch 中,池化层(Pooling)有两种操作方式,一种是手动设计,另一种是自适应池化。一、手动设计池化层操作,一般有最大值(max)池化和均值(avg)池化,而根据尺寸又有一维,二维,三维。所以,手动设计的池化层有6种函数:AvgPool1dAvgPool2dAvgPool3dMaxPool1dMaxPool2dMaxPool3d以 AvgPool2d 为例,求一个张量的平均二维池化层:import torchimport torch.nn as nninput =原创 2021-12-13 20:21:30 · 2989 阅读 · 0 评论 -
pytorch: torch.max() 使用与理解
在使用 pytorch 进行训练时,会使用使用到改行代码:predict = torch.max(outputs.data, 1)[1]其中 output 为模型的输出,该函数主要用来求 tensor 的最大值。每次看到都不太理解 torch.max() 的使用,为了下次看到或者写道时不会忘记,特意详细了解其用法。torch.max(input:tensor, dim:index)该函数有两个输入:inputs: tensor,第一个参数为一个张量dim: index,第二个参数为一个整数[-原创 2021-12-13 15:37:03 · 16587 阅读 · 4 评论 -
pytorch:计算网络模型在gpu上的推理时间
计算网络模型的推理时间,网络模型的推理过程是在gpu上进行的。方法一:import torchimport timenet = net().to('cuda') # 网络模型input = input.to('cuda') # 输入time_start = time.time()predict = net(input)time_end = time.time()time_sum = time_end - time_startprint(time_sum)方法二:import t原创 2021-06-15 15:57:52 · 10129 阅读 · 5 评论 -
pytorch: 保存和读取参数和模型
一、保存和读取参数1、当训练完后,把当前的参数保存下来import torchtorch.save(net.state_dict(), path)保存参数只需用到torch.save(),其中net为自定义的模型名称,其子参数state_dict()为模型的参数,path为保存的路径加名称,其后缀为 pt 或 pth ,如: ‘pth/net_parameters.pth’。2、加载参数import torchnet.load_state_dict(torch.load(path))二、原创 2020-12-27 22:14:06 · 3345 阅读 · 0 评论 -
pytorch: 网络权重初始化
构建完网络后, 往往需要初始化权重;其实也可以不需手动初始化,在声明网络时,pytorch有默认的初始化方式,如:import torchx = torch.Tensor(2,2)print(x)输出为:tensor([[-2.0363e+09, 4.5914e-41],[-2.8577e+17, 5.6612e-43]])上面定义了一个tensor,但没初始化,而pytorch会自动对其进行初始化,只是初始化的参数无规律且相差甚远。如果对于一个没有预训练的网络,有可能难以使网路收敛。原创 2020-11-21 20:45:40 · 11792 阅读 · 1 评论 -
pytorch: 计算网络模型的计算量(FLOPs)和参数量(Params)
计算量:FLOPs,FLOP时指浮点运算次数,s是指秒,即每秒浮点运算次数的意思,考量一个网络模型的计算量的标准。参数量:Params,是指网络模型中需要训练的参数总数。第一步:安装模块(thop)pip install thop第二步:计算import torchfrom thop import profilenet = Model() # 定义好的网络模型input = torch.randn(1, 3, 112, 112)flops, params = profile(net原创 2020-11-20 11:12:14 · 26283 阅读 · 35 评论 -
pytorch:交换tensor的维度
在pytorch中, tensor有两个成员函数可以实现维度交换,分别时transpose()和permute()transpose():该函数可以交换tensor的任意两个维度,但是该函数一次只有两个参数,即一次只能交换两个维度。import torchx = torch.randn(8, 3, 5, 4)y = x.transpose(1,2) # 交换第二与第三维度print(y.shape)输出:torch.Size([8, 5, 3, 4])permute():该函数可以随原创 2020-11-19 20:31:19 · 32875 阅读 · 0 评论 -
pytorch: 给tensor删除或者添加维度为1的维度(squeeze和unsqueeze)
删除tensor中维度为1的维度在pytorch中,用torch.squeeze()函数或者tensor的自身成员函数squeeze()去除维度为1的维度。import torchx = torch.randn(3,1,4,1,2)a = x.squeeze(dim=1) # 成员函数删除第二维度print(a.shape)b = torch.squeeze(x, dim=1) # torch自带函数删除第二维度print(b.shape)c = torch.squeeze(x, dim原创 2020-11-19 19:43:17 · 50211 阅读 · 2 评论 -
pytorch: tensor的拆分和拼接(split, chunk, cat, stack)
tensor的拆分和拼接(split, chunk, cat, stack)原创 2020-11-19 19:20:48 · 7231 阅读 · 2 评论 -
pytorch: tensor与numpy之间的转换
训练时,输入一般为tensor,但在计算误差时一般用numpy;tensor和numpy的转换采用numpy()和from_numpy这两个函数机型转换。值得注意的是,这两个函数所产生的tensor和numpy是共享相同内存的,而且两者之间转换很快。import torchimport numpy as np# Convert tensor to numpya = torch.ones(3)b = a.numpy()print(a, b)a += 1print(a, b)# Conve原创 2020-11-13 15:49:53 · 49599 阅读 · 0 评论 -
pytorch:数据增广批量化(Batch Augmentation)
数据增强通常是随机批量生产的,一般使用组合形式,即同时随机裁剪、翻转、旋转等。import torchvision.transforms as transformsfrom PIL import Imageimport matplotlib.pyplot as pltimg = Image.open('cat.jpg')img.show()augment = transforms.Compose( [ transforms.Resize((150)),原创 2020-11-12 09:18:03 · 1715 阅读 · 0 评论 -
pytorch: 数据增广(Data Augmentation)
常用的数据增广方法:比例缩放位置截取翻转旋转亮度、对比度和色调的变化读取原图:import torchvision.transforms as transformsfrom PIL import Imageimg = Image.open('cat.jpg')img.show()print('img:',img.size)输出为:img: (500, 313)1、比例缩放img1 = transforms.Resize(112)(img) # 短边缩放成112,长边原创 2020-11-09 20:47:20 · 3634 阅读 · 0 评论 -
pytorch:把图片数据转化成tensor
摘要: 在图像识别当中,一般步骤是先读取图片,然后把图片数据转化成tensor格式,再输送到网络中去。本文将介绍如何把图片转换成tensor。一、数据转换把图片转成成torch的tensor数据,一般采用函数:torchvision.transforms。通过一个例子说明,先用opencv读取一张图片,然后在转换;注意一点是:opencv储存图片的格式和torch的储存方式不一样,opencv储存图片格式是(H,W,C),而torch储存的格式是(C,H,W)。import torchvision.t原创 2020-08-19 12:25:47 · 44850 阅读 · 4 评论 -
pytorch:F.relu() 与 nn.ReLU() 的区别
在pytorch中,激活函数的使用方法有两种,分别是:第一种:import torch.functional as F'''out = F.ReLU(input)第二种:import torch.nn as nn'''nn.RuLU()其实这两种方法都是使用relu激活,只是使用的场景不一样,F.ReLU()是函数调用,一般使用在foreward函数里。而nn.ReLU()是模块调用,一般在定义网络层的时候使用。当用print(net)输出时,会有nn.ReLU()层,而F.ReLU原创 2020-08-16 13:24:12 · 36652 阅读 · 13 评论 -
pytorch:cnn(卷积神经网络)
用pytorch-python通过cnn实现mnist手写字体的识别。程序:import torchimport torch.nn as nnimport torch.utils.data as dataimport torchvisionimport matplotlib.pyplot as plt# Hyper ParameterEPOCH = 1 # 训练整批数据的次数BATCH_SIZE = 50 # 批训练的数据数量LR = 0.001 # 学习率DOWNLOAD_M原创 2020-08-02 19:54:33 · 576 阅读 · 0 评论 -
pytorch:批训练(batch_training)
一、什么是批训练?批训练: 意思是把整套训练数据分成数个批次进行训练,每个批次从数据中选取 n_num(总数据)/n_batch(批次) 个数据,直到把整套数据训练完成。举个例子,有10个输入训练数据,每个批次训练3个数据,这训练完成需要4个批次,第一次从[1,2,3,4,5,6,7,8,9,0]随机选取3个数据,batch_1=[2,5,9],第二次再从剩余的7个数据中选取,得到batch_2=[1,4,8],第三次又从剩余的4个数据中选取3个,得到batch_3=[4,6,0],数据中只剩余1个数据原创 2020-08-01 21:37:59 · 14026 阅读 · 5 评论 -
pytorch:分类(Classification)
使用pytorch+python实现分类。程序:import torchimport torch.nn.functional as Ffrom matplotlib import pyplot as plt# 创造数据n_data = torch.ones(100, 2) # 数据的的基本形态x0 = torch.normal(2*n_data, 1) # class0 x shape=(100,2) 创建一个服从均值为2*n_data的张量,标准差为均为1的tensory0 = t原创 2020-08-01 19:19:58 · 2201 阅读 · 0 评论 -
pytorch:线性回归(Regression)
使用pytorch+python实现回归。程序:import torchimport torch.nn.functional as Ffrom matplotlib import pyplot as plt# 创建数据x = torch.unsqueeze(torch.linspace(-1, 1, 100), dim=1) # x shape=(100,1)y = x.pow(2)+0.2*torch.rand(x.size()) # y shape=(100,1)# Drawin原创 2020-08-01 19:12:32 · 386 阅读 · 0 评论 -
import torch出现 ctypes.CDLL(dll) self._handle=_dlopen(self._name,mode) OSError:[WinError 126]找不到指定的模块
**问题:**我明明已经把 pytorch 和 torchvision 安装了,但在写程序时老是出现下图错误,显示import torch这一行就出问题了。**解决:**经过查阅网上各种说法,发现原来自己安装了 gpu 版本的,由于我笔记本的显卡不是英伟达的,所以才出现以上错误。后来,我把 pytorch 和 torchvision 卸载掉,重新安装 cpu 版本的,问题就解决了。希望帮到别人!...原创 2020-07-28 20:46:26 · 4860 阅读 · 7 评论 -
解决pip下载pytorch因网速慢而失败的问题
一、一般下载pytorch方法1、首先打开浏览器,输入:pytorch,然后进行搜索,点击pytorch的官网就进入了。2、进入到pytorch的官网后,划叶到下面,找到下面的选择框,根据自己的配置,选择正确的版本号;选择完后,把红色框内的连接复制好。3、进入命令运行框(快捷键为win+R,输入cmd,确定),把链接粘贴,按下回车键。4、等待下载并安装完成。但要安装pytorch成功,需要下载pytorch.wheel和torchvision.wheel这两个文件,第一个大小为800M左右,第原创 2020-07-23 21:32:21 · 2955 阅读 · 2 评论