pytorch
CrystalheartLi
路漫漫其修非常远兮,吾将上下左右前后而求索。
展开
-
pytorch控制计算图产生的方法示例
由于pytorch计算图的构建需要消耗内存和计算资源,在一些情况下,计算图并不是必要的,比如神经网络的推导,在这种情况下,可以使用torch.no_grad 上下文管理器,在这个上下文管理器的作用域里进行的神经网络计算不会构建任何计算图。另外,还有一种情况是对于一个张量,我们在反向传播的时候可能不需要让梯度通过这个张量的节点,也就是新建的计算图要和原来的计算图分离。在这种情况下,可以使用张量的detach方法,通过调用这个方法,可以返回一个新的张量,该张量会成为一个新的计算图的叶子节点,新的计算图和老的计原创 2021-05-16 18:39:32 · 484 阅读 · 0 评论 -
pytorch梯度函数的使用方法
import torchtorch.cuda.set_device(0)t1 = torch.randn(3,3,requires_grad=True) # 定义一个3X3的张量print(t1)t2 = t1.pow(2).sum() # 根据t1张量计算t2张量print(t2)print(torch.autograd.grad(t2,t1)) # t2张量对t1张量求导Done!!!...原创 2021-05-16 16:55:56 · 221 阅读 · 0 评论 -
pytorch反向传播函数示例代码
方法原创 2021-05-16 16:30:09 · 573 阅读 · 0 评论 -
pytorch线性回归模型的创建、调用方法实例
写代码的思路为:首先导入torch.nn库,然后基于继承nn.Module的方法构建深度学习模块。整个模块的函数主要由两部分组成:通过__init__方法初始化整个模型,forward方法对该模型进行前向计算。其中,在使用__init__方法的时候,可以在类内部初始化子模块,然后在forward方法中调用这些初始化的子模块,最后输出结果张量。具体例子如下:import torchimport torch.nn as nnclass LinearModel(nn.Module): def原创 2021-05-11 21:45:40 · 471 阅读 · 0 评论 -
yolov4:pytorch报错“RuntimeError: CUDA error: no kernel image is available for execution on the device
具体报错信息如下:先前遇到过因为apex包的问题报过这个错,后来重新编译安装了apex后解决了问题,但现在又遇到这个问题,目前还没有解决,希望有大神给解答!原创 2021-04-30 14:18:55 · 957 阅读 · 3 评论 -
pytorch报错“RuntimeError: DataLoader worker (pid 83709) is killed by signal: Bus error. It is .......“
在docker容器里运行pytorch写的代码,报错:“RuntimeError: DataLoader worker (pid 83709) is killed by signal: Bus error. It is possible that dataloader’s workers are out of shared memory. Please try to raise your shared memory limit.”,具体如下图:一,报错原因:docker的共享内存shm不够1, 在运原创 2021-04-26 17:15:38 · 2219 阅读 · 0 评论 -
多显卡服务器下pytorch 指定某个 gpu训练与多 gpu并行训练的方法
一 . 指定一个 gpu训练的两种方法:1.代码中指定import torchtorch.cuda.set_device(id)2.终端中指定CUDA_VISIBLE_DEVICES=id python 程序名其中id是gpu编号二 . 多 gpu并行训练:bashtorch.nn.DataParallel(module, device_ids=None, output_device=None, dim=0)该函数实现了在module级别上的数据并行使用,注意batch size要大原创 2021-04-26 10:08:15 · 968 阅读 · 2 评论 -
yolov5:pytorch报错“RuntimeError: CUDA error: no kernel image is available for execution on the device“
运行用pytorch实现的yolov5s模型,出现如下报错:原创 2021-04-23 14:17:06 · 1822 阅读 · 0 评论 -
pytorch张量维度的扩增、压缩、广播
1,张量的扩增和压缩对于pytorch张量,有一个比较常用的操作就是沿着某个方向对张量做扩增和对张量进行压缩,这两种情况与张量的大小等于1的维度有关,对于一个张量来说,可以任意添加一个维度,该维度的大小为,而不改变张量的数据,因为张量的大小等于所有维度大小的乘积,那些为1的维度不改变张量的大小。具体见下面代码:import torcha = torch.rand(3, 4) # 随机生成一个3*4的张量print(a)print(a.shape)b = a.unsqueeze(-1) # 扩原创 2021-04-20 21:40:36 · 1641 阅读 · 0 评论 -
用yolov4训练自己的目标检测模型-基于pytorch实现
1,首先下载yolov4模型文件2,准备数据集在下载好的yolov4文件夹的同级目录下创建projects/YOLO文件夹,然后将自己标注好的数据放入文件夹,最后的目录结构如下图(为了方便,每个文件夹及文件中只保留了3条数据)其中imgs文件夹下为原图像文件lables文件夹是存放标签的文件夹,每个txt文件下的内容类似这样:imgs.cache先不用管train.txt和val.txt存放了训练集图像路径和验证集图像路径,二个txt文件下的内容均类似这样:3,修改配置文件修改data原创 2021-04-20 15:38:31 · 1748 阅读 · 1 评论 -
pytorch中张量的拼接和分割
直接看代码,注意要举一反三import torch# 随机产生四个张量a1 = torch.randn(3, 4)a2 = torch.randn(3, 4)a3 = torch.randn(3, 4)a4 = torch.randn(3, 2)print(a1)print(a2)print(a3)print(a4)print(torch.stack([a1, a2, a3], -1)) # 沿着最后一个维度即沿着列做堆叠,返回3*4*3的张量print(torch.stack原创 2021-04-19 22:11:35 · 1206 阅读 · 0 评论 -
pytorch矩阵的乘法
在用pytoch搭建深度学习模型时,矩阵的乘法必不可少,下面介绍四种方法来实现矩阵的乘法import torcha = torch.randn(3, 4) # 建立一个3*4的张量b = torch.randn(4, 3) # 建立一个4*3的张量print(torch.mm(a, b)) # 1,矩阵乘法,调用函数,返回3*3的矩阵乘积print(a.mm(b)) #2,矩阵乘法,内置方法,返回3*3的矩阵乘积print(a @ b) #3,矩阵乘法,@运算符,返回3*3的矩阵乘原创 2021-04-19 21:25:07 · 651 阅读 · 0 评论 -
pytoch张量的极值和排序
通过pytorch获取张量(沿着某个维度)的最大值和最小值,以及这些值所在的位置。并对张量各个维度的值进行排序import torcha = torch.randn(3, 4) # 建立一个3*4的张量print(a)print(torch.argmax(a, 0)) # 函数调用。返回的是沿着第0个维度,极大值所在位置,即每一列的最大值print(a.argmax(0)) # 内置方法调用。返回的是沿着第0个维度,极大值所在位置,即每一列的最大值print(torch.argmax(原创 2021-04-19 20:48:51 · 636 阅读 · 0 评论 -
pytorch多个张量的加减乘除运算
import torcha1 = torch.rand(2, 3)print(a1)a2 = torch.rand(2, 3)print(a2)print(a1.add(a2)) # 加法运算a1 + a2,不改变参与运算的张量的值print(a1 + a2) # 加法运算a1 + a2,不改变参与运算的张量的值print(a1.sub(a2)) # 减法运算a1 - a2,不改变参与运算的张量的值print(a1 - a2) # 减法运算a1 - a2,不改变参与运算的张量的原创 2021-04-18 13:04:42 · 4041 阅读 · 0 评论 -
pytorch单个张量的的函数运算
pytorch单个张量的的函数运算操作既可以由张量自带的方法实现,比如下面的a.sqrt(),也可以由torch包中的一些函数实现:import torcha = torch.rand(3, 4) # 产生一个3*4的张量print(a)print(a.sqrt()) # 张量的平方根,张量的内部方法,a不会随之改变print(torch.sqrt(a)) # 张量的函数形式,张量的内部方法,a不会随之改变print(a.sqrt_()) # 平方根原地操作,a会随之改变pri原创 2021-04-17 12:33:42 · 208 阅读 · 0 评论 -
pytorch张量的索引和切片操作
直接上代码import torcha = torch.randn(2, 3, 4) # 构建维度为2×3x4的张量print(a)print(a[1, 2, 3]) # 取张量在0维的第一1号、1维的第2号、2维3号的元素(注意编号是从0开始)print(a[:, 1:-1, 1:3]) # 仅仅一个冒号表示取所有的,-1表示最后一个元素a[1, 2, 3] = -5 # 直接更改索引和切片会更改原始量的值print(a)print(a > 0) # 大于0为True原创 2021-04-17 11:20:00 · 383 阅读 · 0 评论 -
pytorch和张量维度操作的一些方法
在深度学习中经常会用到一些方法来获取张量的维度数目,以及某一维度的具体大小,或者对张量的某些维度进行操作。下面介绍和张量维度相关的办法。import torcha = torch.randn(3, 4, 5) #创建一个张量aprint(a.ndimension()) # 获取维度的数目print(a.nelement()) # 获取张量的总元素数目print(a.size()) # 获取该张量每个维度的大小,调用方法print(a.shape) # 获取该张量每个维度的大小原创 2021-04-15 21:57:54 · 3058 阅读 · 0 评论 -
简单地使用yolov5s训练自己的轻量级目标检测模型-基于pytorch实现
1,首先下载模型代码2,修改dataset_directory文件夹中的内容,下图为目录结构:为了方便展示,我只保留了3条数据,annotations文件夹是标注好的xml文件原创 2021-04-15 16:31:26 · 1431 阅读 · 0 评论 -
测试tensorflow,pytorch,paddlepaddle是否可正常调用GPU
1,tensorflowimport tensorflow as tfprint(tf.test.is_gpu_available())如果输出以下结果说明调用成功:2,pytorchimport torchprint(torch.cuda.is_available())如果输出以下结果说明调用成功:3,paddlepaddleimport paddlepaddle.fluid.install_check.run_check()如果输出以下结果说明调用成功:Running原创 2021-04-14 18:39:11 · 2426 阅读 · 1 评论 -
pytorch指定张量的存储设备以及相关操作
1,在cpu上创建一个张量并获取它torch.randn(3, 3 , device = "cpu")2,在0号gpu上创建一个张量并获取它,也可将0改为1,2等其它整数,具体看你服务器上有几块显卡,可在终端执行nvidia-smi查看。torch.randn(3, 3 , device = "cuda:0" )3,获取当前张量的设备torch.randn(3, 3 , device = "cuda:0" ).device4,将张量从0号GPU转移到CPUtorch.randn(3,原创 2021-04-13 22:08:12 · 1293 阅读 · 2 评论 -
pytorch中创建Tensor张量的几种方法
以下所有例子没有打印输出,要验证结果请自行打印1,将python列表和numpy数组转换为pytorch张量import numpy as npimport torcha = torch.tensor([1, 2, 3, 4]) # 将python列表转换为torch张量b = torch.tensor([1, 2, 3, 4], dtype=torch.float32) # 将python列表转换为torch张量并指定数据类型c = torch.tensor(range(10)) # 转换原创 2021-04-13 21:39:06 · 1718 阅读 · 1 评论 -
注意!pytorch与numpy默认的整数类型一样,但默认的浮点类型不一样
在调试用pytorch和numpy写的深度学习代码时,要注意pytorch与numpy默认的浮点类型不一样:# pytorch与numpy默认的整数类型一样a = torch.tensor([1, 2, 3, 4])print(a.dtype) # 查看张量数据类型b = torch.tensor(np.array([1, 2, 3, 4]))print(b.dtype)# pytorch与numpy默认的浮点类型不一样a = torch.tensor([1., 2., 3., 4.])原创 2021-04-10 10:18:29 · 238 阅读 · 0 评论 -
pytorch学习记录,其主要的17个模块功能概述
这里先介绍下pytorch主要的一些模块分别可以实现什么功能,后续会不断更新每一个模块中具体的API以及代码示例一,torch模块import torch包含了多维张量的数据结构以及基于其上的多种数学操作。另外,它也提供了多种工具,其中一些可以更有效地对张量和任意类型进行序列化。具体包括pytorch张量的生成,以及运算、切片、连接等操作,还包括神经网络中经常使用的激活函数,比如sigmoid、relu、tanh,还提供了与numpy的交互操作二,torch.Tensorimport torch原创 2021-02-25 19:54:22 · 3506 阅读 · 0 评论