- 博客(135)
- 资源 (1)
- 收藏
- 关注
转载 torch.fx介绍
因为Graph的mro中没有nn.Module,为了工程规范,GraphModule继承了nn.Module并对Graph做了一个简单的封装。正如其名,Proxy类是对Node类的一层包裹,它允许用户在不修改原图的情况下,用自定义的函数代理其中的节点,从而完成重载。除此之外,Graph还指定了一些用于描述上下文、所属模块的信息,这些和后续的原理关系不大,就不赘述了。由于Node中已经定义了完整管理计算图的属性和方法,因此Graph更多是对Node的管理和封装。Tracer类是对符号跟踪的一层抽象,它的。
2023-09-21 14:29:11 306
原创 Font t1-stixgeneral-i talic at 540 not found
latex中出现,Font t1-stixgeneral-i talic at 540 not found
2022-06-30 09:50:28 375
转载 图像增强(对比度、亮度)
主要涉及Brightness/Contrast/Color调用流程为创建图像增强对象之后,调用对应的enhance函数from PIL import Image, ImageEnhanceimg = Image.open("test.jpg")bright_enhancer = ImageEnhance.Brightness(img)# 传入调整系数1.2bright_img = bright_enhancer.enhance(1.2)bright_img.show()contr
2022-05-19 09:22:26 444
转载 右值引用等相关
左值引用int i = 0;int& j = i;这里的int&是对左值进行绑定(但是int&却不能绑定右值),相应的,对右值进行绑定的引用就是右值引用,他的语法是这样的 A&&,通过双引号来表示绑定类型为A的右值。通过&&我们就可以很方便的绑定右值了,比如我们可以这样绑定一个右值:int&& i = 0;这里我们绑定了一个右值0,关于右值的概念会在后面介绍。右值引用是C++11中新增加的一个很重要的特
2022-05-13 17:10:17 274
转载 CUDA与cudatoolkit
CUDA Toolkit是NVIDIA的CUDA工具包,包含了CUDA的全部工具。conda安装的cudatoolkit是CUDA的一个子包,包含了主要的二进制文件。一般conda安装的pytorch tensorflow会直接调用conda环境中的包,而如果使用pip安装的tensorflow不会自动接入conda中的cudatoolkit,进而会报ImportError: libcudart.so.8.0: cannot open shared object file: No such..
2022-05-09 22:09:06 7917
原创 COCO Stuff
0: unlabeled1: person2: bicycle3: car4: motorcycle5: airplane6: bus7: train8: truck9: boat10: traffic light11: fire hydrant12: street sign Removed from COCO.13: stop sign14: parking meter15: bench16: bird17: cat18: dog19: horse2.
2022-04-25 16:17:24 760
原创 KeyError: ((1, 1), ‘<i8‘)
mode, rawmode = _fromarray_typemap[typekey]KeyError: ((1, 1), '<i8')将:img = Image.fromarray(out)改为:img = Image.fromarray(np.uint8(out))TypeError: Cannot handle this data type: (1, 1, 384), |u1维度错误,三维tensor使用squeeze()变为二维。...
2022-04-25 15:06:12 1205
转载 python PIL 将两个图片合成一张
1.首先你需要有两张图片,可以是现有的,也可以是创建的照片2.合成图片的方法有很多,我只提供我的idea3.idea:将多个图片粘贴在一张大图上,提前预设出大图的大小和粘贴图的坐标from PIL import Image# 加载第一张图片im = Image.open("G:\\project\\新建文件夹\\92542485_p0.png")# 获取图片的长宽x, y = im.size# Image.resize()返回此图像的调整大小后的副本,按照等比例缩小为 x:1024
2022-04-22 12:38:29 4368
转载 c++中的引用
概念 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。使用方法引用的声明方法:类型标识符 &引用名=目标变量名;与指针的区别引用是C++对C语言的一个重要的扩展,与指针类似,但仍有一些不同点,主要分为以下几点:从内存上讲,系统为指针分配内存空间,而引用与绑定的对象共享内存空间,系统不为引用变量分配内容空间(内容空间不是其自身空间,在C++内部实现是一个常指针,4字节); 指针初始化以后可以更改指向对象,而引用定义的时候必须要初始化,且初始化以后不允
2022-02-20 15:42:59 150
转载 Latex中公式对齐
LATEX中公式对齐\usepackage{amsmath}示例:\begin{align}x+1 &= y+2 \&= z+3 \&= w+4\end{align}结果:每一个换行都对应着一个编号!最原始对齐操作:每一行都有一个编号改进1:如何一个编号都没有方法:直接在align*环境下即可示例:\begin{align*}同上\end{align*}结果:改进1:无编号改进2:如何在任意行加上编号方法:align环境下,每一行的\之前使
2022-01-24 17:45:28 1276
原创 介绍一款自动计算模型参数量、FLOPs、乘加数以及所需内存等数据的轮子
介绍一款自动计算模型参数量、FLOPs、乘加数以及所需内存等数据的轮子:torchstat。pip install torchstatIn [3]: import torch In [4]: from torchstat import stat In [5]: import torchvision.models as models In [6]: net = models.vgg11() In [7]: stat
2022-01-24 12:29:27 209
转载 RuntimeError: one of the variables needed for gradient computation has been modified by an inplace
将a=b改为a=b.clone()
2021-09-13 08:58:40 95
转载 获取中间某一层的特性
重写一个函数,将需要输出的层输出即可.def resnet_cifar(net,input_data): x = net.conv1(input_data) x = net.bn1(x) x = F.relu(x) x = net.layer1(x) x = net.layer2(x) x = net.layer3(x) x = net.layer4[0].conv1(x) #这样就提取了layer4第一块的第一个卷积层的输出 x=x.
2021-09-02 14:03:14 125
转载 Pytorch中实现只导入部分模型参数的方式
我们在做迁移学习,或者在分割,检测等任务想使用预训练好的模型,同时又有自己修改之后的结构,使得模型文件保存的参数,有一部分是不需要的(don't expected)。我们搭建的网络对保存文件来说,有一部分参数也是没有的(missed)。如果依旧使用torch.load(model.state_dict())的办法,就会出现 xxx expected,xxx missed类似的错误。那么在这种情况下,该如何导入模型呢?好在Pytorch中的模型参数使用字典保存的,键是参数的名称,值是参数的具体数值。我们使
2021-08-13 21:26:10 2802 3
转载 Variable、Tensor、Numpy的转换
Tensor与Numpy之间可以相互转换:代码:import torchimport numpy as npdata = np.array([[1,2,3,4,5],[6,7,8,9,10]])print(data)# numpy -> tensordata_tensor = torch.from_numpy(data)print(data_tensor)# tensor -> numpydata_numpy = data_tensor.numpy()print(da
2021-08-12 09:42:07 378
转载 pytorch 张量tensor 转为 jpg 图片
在用pytorch训练网络的时候,每一张图片都被转为了张量形式的数据,有时候我们需要将这些张量转为jpg格式的图片,应该如何转变呢?我们只要将张量tensor转为PIL格式的数据,然后再将数据保存起来就可以了,下面以一个简单的例子进行说明,这个例子中的图片是一个随机生成的图片。import torchfrom torchvision import transforms toPIL = transforms.ToPILImage() #这个函数可以将张量转为PIL图片,由小数转为0-255之间的像
2021-08-12 09:39:15 3277
转载 Yolo 训练 Error in load_data_detection() - OpenCV 解决办法之一
最近使用YoloV4对验证码模型训练,发现图片位深度为8 的图片无法进行识别,报了个Cannot Load image, Error in load_data_detection() - OpenCV本以为是图片路径问题,结果测试过后,路径没问题, 后发现图片的深度是8,将图片位深度转换为24后就可以正常训练了,记录一下,以下是转换代码:import numpy as npfrom PIL import Imageimport os path='img_8/'newpath='cha
2021-08-05 21:14:06 994
原创 darknet测试视频出现video-stream stopped
Video isn't exist or has wrong path.真的可能是路径错了,视频文件的路径错了(.MP4写成.mp4)
2021-08-05 11:05:20 1064
原创 多GPU训练,加载模型时报错不匹配
一、问题描述多个GPU训练,保存时没有加module ,导致加载模型时报错。正确写法应该如下: # save model if num_gpu == 1: torch.save(model.state_dict(), os.path.join(opt.outf, 'model.pth')) else: torch.save(model.module.state_dict(), os.path.joi...
2021-08-02 09:00:50 920 1
转载 scheduler:pytorch训练过程中自动调整learning rate
import torch.optim as optimoptimizer = optim.Adam(net.parameters(), lr=1e-3, betas=(0.9, 0.99))在使用PyTorch训练神经网络时,可能需要根据情况调整学习率(learning rate)这个在梯度下降中的重要参数。PyTorch提供了scheduler工具包帮助实现这一功能。1. 通过写明学习率关于迭代次数的表达式来指定(1)LambdaLR最原始也是最灵活的定义方式:CLASS to..
2021-07-24 10:35:57 5416
转载 Pytorch:lr_schedule的注意事项
在训练过程中我们一般会使用pytorch已有的学习率调整策略,如:import torchimport torch.optim as optimfrom torchvision.models.resnet import resnet50net = resnet50(num_classes=1000)optimizer = optim.Adam(net.parameters(), lr=1e-3)scheduler = optim.lr_scheduler.MultiStepLR(optimi
2021-07-24 10:25:18 1060
转载 pytorch中模型参数初始化
参数初始化(Weight Initialization)PyTorch 中参数的默认初始化在各个层的reset_parameters()方法中。例如:nn.Linear和nn.Conv2D,都是在 [-limit, limit] 之间的均匀分布(Uniform distribution),其中 limit 是1. / sqrt(fan_in),fan_in是指参数张量(tensor)的输入单元的数量下面是几种常见的初始化方式。Xavier InitializationXav...
2021-07-22 20:25:16 3263
转载 优化器(SGD、SGDM、Adagrad、RMSProp、Adam等)
1.1 SGDSGD全称Stochastic Gradient Descent,随机梯度下降,1847年提出。每次选择一个mini-batch,而不是全部样本,使用梯度下降来更新模型参数。它解决了随机小批量样本的问题,但仍然有自适应学习率、容易卡在梯度较小点等问题。1.2 SGDMSGDM即为SGD with momentum,它加入了动量机制,1986年提出。如上所示,当前动量V由上一次迭代动量,和当前梯度决定。第一次迭代时V0=0,由此可得到前三次迭代的动量由此可见t迭代的动量,.
2021-07-22 19:08:03 11801
转载 Pytorch中的SGDR
pytorch中既自带了学习率函数,我们也可以自定义学习率调整函数。调整函数通常随epoch的变化而变化。首先实现自定义学习率调整:自定义学习率调整以SGDR余弦学习率调整为例:论文地址:https://arxiv.org/abs/1608.03983在pytorch中的训练代码:# 第epoch值进行计算并更新学习率def adjust_lr(optimizer, epoch, T_0=10, eta_max=0.1, eta_min=0.): if T_mul == 2:
2021-07-22 17:30:22 446
转载 optimizer.step()和scheduler.step()的区别
optimizer.step()通常用在每个mini-batch之中,而scheduler.step()通常用在epoch里面,但是不绝对,可以根据具体的需求来做。只有用了optimizer.step(),模型才会更新,而scheduler.step()是对lr进行调整。通常我们有optimizer = optim.SGD(model.parameters(), lr = 0.01, momentum = 0.9)scheduler = lr_scheduler.StepLR(optimizer,
2021-07-22 16:19:51 1404
转载 如何理解Adam算法(Adaptive moment estimation)?
作者:薰风初入弦链接:https://www.zhihu.com/question/323747423/answer/790457991来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。文章和论文看不懂,通常有三个原因:对前置知识掌握不佳 没有结合理论与实践 没有对知识形象理解Adam本质上实际是RMSProp+动量。但如果你对随机梯度下降SGD的知识,以及Adam之前的几个更新方法一无所知。那么当你看到一个“复杂的”Adam看了就头大(请不要嘲笑初学者,.
2021-07-22 14:34:56 3686
转载 python按设定比例划分训练集和测试集代码
# *_*coding: utf-8 *_*# Author --LiMing--import osimport randomimport shutilimport timedef copyFile(fileDir, class_name): image_list = os.listdir(fileDir) # 获取图片的原始路径 image_number = len(image_list) train_number = int(image_number * tr.
2021-07-21 16:51:54 1750
转载 python寻找列表最大值最小值及其下标
list1 = [-2,3,-5,7,8,9]print( "最大值是%d,下标是%d" % (max(list1),list1.index(max(list1))) )print( "最小值是%d,下标是%d" % (min(list1),list1.index(min(list1))) )#output:最大值是9,下标是5最小值是-5,下标是2
2021-07-14 15:26:01 7574
转载 匈牙利算法
今天我们来看一个没有前几篇讲的那么常用,但是很有用的算法:匈牙利算法(Hungarian algorithm)。匈牙利算法主要用于解决一些与二分图匹配有关的问题,所以我们先来了解一下二分图。二分图(Bipartite graph)是一类特殊的图,它可以被划分为两个部分,每个部分内的点互不相连。下图是典型的二分图。一张二分图可以看到,在上面的二分图中,每条边的端点都分别处于点集X和Y中。匈牙利算法主要用来解决两个问题:求二分图的最大匹配数和最小点覆盖数。这么说起来过于抽象了,我们现在从实际
2021-07-12 14:02:38 239
转载 Pytorch多GPU训练
Pytorch多GPU训练临近放假, 服务器上的GPU好多空闲, 博主顺便研究了一下如何用多卡同时训练原理多卡训练的基本过程首先把模型加载到一个主设备 把模型只读复制到多个设备 把大的batch数据也等分到不同的设备 最后将所有设备计算得到的梯度合并更新主设备上的模型参数代码实现(以Minist为例)#!/usr/bin/python3# coding: utf-8import torchfrom torchvision import datasets, transfor
2021-07-10 16:58:36 271
转载 CSPDarkNet
1 YOLOv4目标检测模型自从Redmon说他不在更新YOLO系列之后,我一度以为这么好用的框架就要慢慢淡入历史了,事实是我多虑了。YOLOv4在使用YOLO Loss的基础上,使用了新的backbone,并且集成了很多新的优化方法及模型策略,如Mosaic,PANet,CmBN,SAT训练,CIoU loss,Mish激活函数,label smoothing等等。可谓集SoAT之大成,也实现了很好的检测精度和速度。这篇博客主要讨论YOLOv4中的backbone——CSP-DarkNet,以及其实.
2021-07-07 15:43:37 7916 2
转载 backbone、head、neck等深度学习中的术语解释
我们在阅读文章的时候,经常看到backbone head neck 这一类的术语,但是我们可能并不知道是什么意思,这篇文章就是对这些术语进行解释:1.backbone:翻译为主干网络的意思,既然说是主干网络,就代表其是网络的一部分,那么是哪部分呢?翻译的很好,主干部分,哈哈哈哈,文字游戏了哈。这个主干网络大多时候指的是提取特征的网络,其作用就是提取图片中的信息,共后面的网络使用。这些网络经常使用的是resnet VGG等,而不是我们自己设计的网络,因为这些网络已经证明了在分类等问题上的特征提取能力是很.
2021-07-06 09:21:04 311
转载 forward理解
我们在使用Pytorch的时候,模型训练时,不需要调用forward这个函数,只需要在实例化一个对象中传入对应的参数就可以自动调用 forward 函数。 class Module(nn.Module): def __init__(self): super().__init__() # ...... def forward(self, x): # ...... return xdata = ...... # 输入
2021-06-13 11:27:33 1941
原创 训练网络报错device-side assert triggered
出现以下:Assertion 'indexValue>=0 && indexValue < src.sizes[dim]应该是分类数和路径所指向的类别数不匹配。
2021-06-09 20:41:38 291
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人