![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PyTorch
GZKPeng
深度学习有四境:调参炼丹境,理论创新陆地神仙境,张量运算剑仙境,无所不通无上剑仙境。
人若无名,便可勤奋练剑
展开
-
YOLOv5:Profile、Timeout、WorkingDirectory上下文管理器 以及torch.cuda.synchronize()
Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。Python OS模块是负责程序与操作系统的交互,提供了访问操作系统底层的接口和非常丰富的方法用来处理文件和目录。Python contextlib模块提供了一种方便的方式来管理上下文管理器(context manager),它可以帮助我们简化代码,提高可读性和可维护性。原创 2023-04-12 10:42:37 · 825 阅读 · 0 评论 -
Pytorch LR scheduler
如warmupLR + StepLR, 就是lr先从lr_min增加到lr_max, 然后再以StepLR的策略逐步变小。再比如, warmupLR +CosineAnnealingLR, 就是学习率r先从lr_min增加到lr_max, 然后再以余弦规律下降。StepLR只能均匀的变化, 也就是固定的step(或epoch)后学习率固定变化。顾名思义, 就是学习率以某种规律循环变化, 变化的规律可以有很多(如下图中就是一种线性变化)。顾名思义,就是学习率是一个分段函数, 在不同阶段采用不同的学习率。原创 2022-09-20 14:22:54 · 1257 阅读 · 0 评论 -
pytorch常见分布式训练报错(另备忘模型分布式后,named_modules,前会加module.)
1、–nproc_per_node=设置错误,比如就2块可见卡,设置3,那么代码中这行torch.cuda.set_device(args.local_rank)2、在使用“DistributedDataParallel”时,model没有先放在GPU上,而是默认的CPU。3、在优化器中添加参数时,获取参数应该用未DDP封装的model,如果有DDP封装的model就会报如下错误:......原创 2022-08-26 16:51:47 · 3985 阅读 · 0 评论 -
pytorch打印模型层参数,如卷积核尺寸
今天有个师弟问了如何打印模型参数的问题,他想在声明模型结构时做一些断言增强程序鲁棒性。实际这个问题的本质就是打印Conv3d、MaxPool3d等类的实例化对象的属性原创 2022-08-26 10:28:28 · 847 阅读 · 0 评论 -
PyTorch:view() 与 reshape() 区别详解【转】
torch的view()与reshape()方法都可以用来重塑tensor的shape,区别就是使用的条件不一样。view()方法只适用于满足连续性条件的tensor,并且该操作不会开辟新的内存空间,只是产生了对原存储空间的一个新别称和引用,返回值是视图。而reshape()方法的返回值既可以是视图,也可以是副本,当满足连续性条件时返回view,否则返回副本[ 此时等价于先调用contiguous()方法在使用view() ]。...原创 2022-08-12 11:41:36 · 556 阅读 · 0 评论 -
回顾点Pytorch基础知识
torch.Tensor有两部分数据:gradient和data当numpy和Tensor互转时,numpy->Tensor没啥问题,Tensor->numpy时有两种方法:第一种: T1.data.numpy或者T1.detach().numpy。即只转data数据,否则会报错:RuntimeError: Can’t call numpy() on Tensor that requires grad. Use tensor.detach().numpy() instead.第二种:在模型infere原创 2022-07-13 17:50:50 · 221 阅读 · 0 评论 -
torch.nn.functional.pad
参数pad需要输入一个元组,元组中元素个数小于等于input维度的2倍。如:input是2维的,则pad可以最多有4个元素;input是5维的,pad可以最多有10个元素.torch.nn.functional.pad()会依照从后往前的顺序依照pad元祖的值对input进行padding。如input.size=[3,3,4,2],pad=(1,1),则会对input第4个维度上padding,前方向和后方向各加1,结果的size为[3,3,4,4],input.size=[3,3,4,2],pad=原创 2022-06-28 11:32:20 · 311 阅读 · 0 评论 -
Docker容器中yolov5报错Segmentation fault (core dumped)
yolov5 Segmentation fault (core dumped)原创 2022-06-18 08:41:13 · 1604 阅读 · 0 评论 -
cuda runtime error (801) : operation not supported at ..\torch/csrc/generic/StorageSharing.cpp:249
因为 Pytorch 多处理在 Windows 上不起作用, 设置 DataLoaders 的 num_workers=0原创 2022-05-30 15:07:23 · 673 阅读 · 0 评论 -
YOLOV5在detect过程中绘制目标提取框为什么倒置进行绘制
今天师弟问我个问题,在YOLOV5官码detect.py文件中第104行出现如下将目标检测结果绘制在原图与记录在文件中的逻辑:师弟的问题是,这里遍历所有目标的时候,为什么要reversed进行倒置,正着取不行吗?我的答案:可以正着绘制,但是不好。之所以reversed反过来绘制结果,是因为NMS的时候会先根据置信度从高到低做运算,所以输出的时候从高到低,那么绘制的时候从低概率开始绘制,那么就算有重合,高概率覆盖低概率,看起来直观...原创 2021-07-22 15:26:45 · 627 阅读 · 0 评论 -
pytorch中tensor与numpy、cv2、pillow转换
tensor直接保存成图片文件import torchfrom torchvision import utils as vutils def save_tensor2image(input_tensor: torch.Tensor, filename): """ 将tensor保存为图片 :param input_tensor: 要保存的tensor :param filename: 保存的文件名 """ vutils.save_image(inp原创 2021-06-02 16:26:04 · 5599 阅读 · 0 评论 -
【已解决】onnx 12 中没有hardswish opt的问题
pytorch转onnx的过程中,模型的卷积层激活函数用的是hardswish,转换时报错:RuntimeError: Exporting the operator hardswish to ONNX opset version 12 is not supported. Please open a bug to request ONNX export support for the missing operator.提示我们去ONNX上反馈,显然等他们来写已经来不及了,还是自己动手吧。因为模型定义的原创 2021-05-12 16:07:40 · 2659 阅读 · 3 评论 -
RuntimeError: [enforce fail at inline_container.cc:222] . file not found: archive/constants.pkl
pytorch版本不同,对于加载压缩过的zip的权重方式也不同,老版本需要torch.jit.load()否则会出RuntimeError: ../detection/runs/train/exp2/weights/best_meter.pt is a zip archive (did you mean to use torch.jit.load()?)新版本需要torch.load()如果用jit.load会出File "/data/anaconda/envs/py37/lib/py原创 2021-03-08 16:12:39 · 8886 阅读 · 3 评论 -
pytorch加载模型报错KeyError: “filename ‘storages‘ not found“
应用pytorch加载模型报错:Traceback (most recent call last): File "/mnt/sdc/OCR/dev/ocr/recognize/crnn_recognizer.py", line 110, in __init__ self.model.load_state_dict({k.replace('module.', ''): v for k, v in torch.load(model_path).items()}) File "/home/GZK原创 2020-12-15 15:52:04 · 6913 阅读 · 4 评论 -
如何解决pytorch 编译时CUDA版本与运行时CUDA版本不对应
如何解决pytorch 编译时CUDA版本与运行时CUDA版本不对应如果pytorch的编译时CUDA版本和运行时CUDA版本不一致时,由于不同的 nvcc 编译器会生成不同的动态函数代码,由此会导致自己编写的 CUDA 函数无法正确运行。常见的错误有:undefined symbol: __cudaRegisterFatBinaryEnd (运行时为CUDA10.1,编译时CUDA版本&l...原创 2020-09-09 15:09:44 · 1386 阅读 · 1 评论 -
pytorch数据类型报错解决方案:
pytorch报错: RuntimeError: Expected object of type Variable[torch.LongTensor] but found type Variable[torch.cuda.ByteTensor] for argument #1 ‘argument1’解决方法:pytorch框架在存储labels时,采用LongTensor来存储,所以在一...原创 2018-07-20 14:54:51 · 2326 阅读 · 0 评论 -
关于Pytorch 0.3 nn.Module的子类,前向传播过程的问题
线上代码:class ft_net(nn.Module): def __init__(self, class_num ): super(ft_net, self).__init__() model_ft = models.resnet50(pretrained=True) # avg pooling to global poolin...原创 2018-08-20 10:33:02 · 879 阅读 · 0 评论 -
Pytorch画模型图
pytorch中好像没有个api让我们直观的看到模型的样子。但是有网友提供了一段代码,可以把模型画出来,对我来说简直就是如有神助啊。话不多说,上代码吧。import torchfrom torch.autograd import Variableimport torch.nn as nnfrom graphviz import Digraphclass CNN(nn.Module)...转载 2018-08-21 15:56:33 · 4163 阅读 · 0 评论 -
Pytorch报错:Assertionerror nn criterions don't compute the gradient w.r.t. targets
引发错误目前看来有两种情况: 1、应该是在损失函数中,模型输出为首个实参,ground_truth为第二个实参,写反了会出现这种情况loss = criterion(output,label) #正确loss = criterion(label,output) #错误2、第二种情况,ground_truth需要与模型的某些参数运算后得到模型需要的标签,然后引发错误:#错误写...原创 2018-08-25 15:47:09 · 1342 阅读 · 0 评论 -
Pytorch 0.3 模型与重新加载持久化后同参数模型,最终表现不一致问题
最近发现了一个问题,训练好的模型,跑测试集表现很好,于是将模型参数持久化保存下来(注意,并非全部模型)。重新加载模型参数,跑测试集,发现结果差异很大,而且重新加载的模型表现非常差。 但是输出两次的模型的参数,比对发现一模一样。 持久化代码:def save_network(network, epoch_label): save_filename = 'net_%s.pth'% ...原创 2018-09-02 20:31:42 · 2746 阅读 · 0 评论 -
Pytorch中的 AdaptivePooling
AdaptivePooling是只出现在Pytoch中的池化方法,官方给出的[运算公式]为:(https://discuss.pytorch.org/t/what-is-adaptiveavgpool2d/26897)kernel的大小为 (input_size+target_size-1) // target_size, i.e. rounded up(即四舍五入)中心点的位置为 四舍五入...原创 2019-05-07 10:15:39 · 917 阅读 · 1 评论 -
Pytorch的Dataloader报错:TypeError: batch must contain tensors, numbers, dicts or lists
具体报错: TypeError: batch must contain tensors, numbers, dicts or lists; found dataloader=torch.utils.data.DataLoader(dataset,batch_size=1,shuffle=True)表面上看这个代码没有问题,实际上问题出在了dataloader机制的要求上,dataload...原创 2018-07-17 12:05:21 · 17853 阅读 · 4 评论