
pytorch
文章平均质量分 88
胖胖大海
这个作者很懒,什么都没留下…
展开
-
pytorch单精度、半精度、混合精度、单卡、多卡(DP / DDP)、FSDP、DeepSpeed模型训练
pytorch单精度、半精度、混合精度、单卡、多卡(DP / DDP)、FSDP、DeepSpeed(环境没搞起来)模型训练代码,并对比不同方法的训练速度以及GPU内存的使用原创 2023-11-17 22:19:56 · 5715 阅读 · 2 评论 -
pytorch中Dataset、Dataloader、Sampler、collate_fn相互关系和使用说明
在PyTorch中,可以通过继承类来自定义数据集(Dataset)类。自定义的数据集类可以包含自己的数据加载和预处理方法,以及一些额外的元数据。"""加载磁盘上的图像文件,并进行transform变换,返回变换后的图片和与之对应的标签编号"""# 所有图像的路径列表# 所有图片对应的label标签编号,从0开始# 图像预处理以上代码自定义了一个Dataset类用于加载训练数据,训练数据中cat和dog目录下分别存储的是猫和狗的图片。原创 2023-06-02 09:21:56 · 1778 阅读 · 0 评论 -
《Attention is all you need》Pytorch源码各模块输入输出详解
关于Transformer架构和原理解析的优秀文章有好多,这里列出一些供大家参考学习。本篇也就不对Transformer的结构和原理进行解读了(肯定没他们解读的好)。上述参考文献足以让一个初学者完全了解transformer的架构及原理了。本文从代码实现的角度来看一下transformer的核心架构中的每个模块的具体实现方式,希望以此能对transformer架构有更深入的了解。本文参考的实现代码来自于。原创 2023-04-23 17:00:58 · 1574 阅读 · 0 评论 -
RepVGG(Re-parameterization VGG): Making VGG-style ConvNets Great Again
鉴于多分支模型训练性能好,推理性能差,单分支扁平化模型训练性能差,推理性能好的情况,将二者综合,试图构建一种网络模型,在模型训练阶段使用多分支训练获得更好的训练性能,在模型推理阶段将训练好的多分支模型恒等转换为单分支的扁平化模型,推理阶段的网络模型中只有3x3的卷积和ReLU激活这两种操作。这其中的核心问题就是如何把多分支的模型转换为一个单分支的模型?RepVGG里面把这个过程叫做结构重参数化技术。原创 2023-02-06 20:02:14 · 1147 阅读 · 0 评论 -
YOLOX训练自有数据集
开源代码:https://github.com/Megvii-BaseDetection/YOLOX参考:深入浅出Yolox之自有数据集训练超详细教程 - 知乎训练数据标注YOLOX采用VOC数据标注格式,VOC数据格式如下:其中图片训练的图片数据存放在JPEGImages目录中,每张图片对应的同名xml文件存放在Annotations目录下,ImageSets/Main目录下存放划分号的训练集train.txt和验证集文件val.txt,其中trai...原创 2022-05-12 19:55:05 · 2116 阅读 · 3 评论 -
分类模型训练完之后,测试效果极差可能原因分析
在知乎上有这样一个问题:acc很高,但预测正确的样本占比又很低,怎么回事? - 知乎关于这个问题,在这个问题的回答中,有许多大佬从数据的分布、模型的结构、数据集的划分,以及验证指标等层面进行了解答。在这里按照我的理解,简单描述一下这个问题:模型训练正常,模型测试效果很差,甚至在训练集上的测试效果都很差。简单分析一下大概有以下几个方面的原因可以排查:1、检查模型训练和模型测试的数据处理pipeline是否一致,比如训练时做了Normalize...原创 2022-04-13 12:23:42 · 10644 阅读 · 1 评论 -
pytorch版本RetinaFace人脸检测模型推理加速
本文介绍的方法是提升pytorch版本RetinaFace代码在数据预处理阶段的速度,使用纯pytorch框架进行模型推理,并不涉及模型的onnx、tensorrt部署等方法。本文介绍的方法适用于从磁盘加载分辨率相同的一批图像使用RetinaFace进行人脸检测,能够带来30%的性能提升。关于pytorch_retinaface使用tensorrt部署请参考https://github.com/wang-xinyu/tensorrtx/tree/master/retinaface。先上优化前后...原创 2022-02-18 21:47:25 · 4864 阅读 · 2 评论 -
pytorch.onnx.export方法参数详解,以及onnxruntime-gpu推理性能测试
Torch.onnx.export执行流程:1、如果输入到torch.onnx.export的模型是nn.Module类型,则默认会将模型使用torch.jit.trace转换为ScriptModule2、使用args参数和torch.jit.trace将模型转换为ScriptModule,torch.jit.trace不能处理模型中的循环和if语句3、如果模型中存在循环或者if语句,在执行torch.onnx.export之前先使用torch.jit.script将nn.Module转换为Sc原创 2022-02-18 21:32:21 · 39711 阅读 · 13 评论 -
torchvision.transforms GPU加速,提升预测阶段数据预处理速度
参考:Tensor transforms and JIT — Torchvision 0.11.0 documentationTorchvision v0.8.0之前版本:Torchvision v0.8.0之前版本的transforms主要分为两类:1、一类处理的输入数据类型为Tensor2、另一类处理的数据类型为PILImage所以torchvision里面提供了两个转换函数ToTensor和ToPILImage...原创 2022-01-20 21:31:34 · 7926 阅读 · 9 评论 -
使用U版pytorch yolov5代码训练自己的目标检测模型
待完成原创 2021-06-26 21:24:02 · 1495 阅读 · 0 评论 -
使用pytorch训练你自己的图像分类模型(包括模型训练、推理预测、误差分析)
待完成原创 2021-06-26 21:22:30 · 9452 阅读 · 5 评论 -
使用TensorBoard可视化pytorch模型、数据以及模型训练过程
tensorboard常用函数列表如下: torch.utils.tensorboard.writer.SummaryWriter tensorboard的入口,创建event files add_scalar(tag,scalar_value,global_step=None,walltime=None) 添加标量到event file add_scalars(main_tag,tag_scalar_dic...原创 2021-04-23 20:32:27 · 7498 阅读 · 0 评论 -
(三)、从零开始搭建人脸识别服务之大规模人脸识别
人脸识别服务需要包括以下几个功能模块:1、人脸检测和人脸校正模块2、人脸特征提取模块3、人脸特征匹配模块4、人脸识别结果计算模块前两篇文章中分别介绍了人脸检测和人脸特征提取,这篇文章简要介绍一下人脸特征匹配,也就是人脸特征识别部分。人脸识别1:1识别,人脸验证(门禁、机场、车站刷脸进站)1:N识别,人脸识别,在标准人脸库中进行人脸匹配检索N:N识别,人脸检索,N个1:N识别人脸识别:人脸识别就是识别人脸,就是要识别图像或者视频中出现的人物身份,人脸识别要涉及人脸检测、原创 2021-01-03 17:48:54 · 997 阅读 · 0 评论 -
pytorch数据集加载之DataSet和DataLoader
在学习深度学习初期,被各种算法、各种名词吸引,学习了一些相关知识、框架和方法,也跑过Mnist分类以及iris回归。但是当真正拿到一个陌生的数据集时,需要重头开始搭建一个完整的模型时,常常会感觉到无从下手,之前跑的模型都是用人家整理好的数据,一行代码就能把数据加载进行直接使用,自己完全不关心数据的加载、处理过程,只关心模型能不能训练,训练结果怎么样。这篇文章简单记录一下pytorch中自定义数据集的使用方法。在pytorch中涉及到数据集加载的模块有两个,一个是DataSet,另一个是DataLoade原创 2021-01-03 11:53:38 · 3220 阅读 · 1 评论 -
pytorch中MobileNetV2分类模型的源码注解
上一篇《pytorch卷积操作nn.Conv中的groups参数用法解释》中简单介绍了MobileNet中使用的深度可分离卷积,以及pytorch中在实现深度可分离卷积时使用的nn.Conv模块的groups参数。本篇通过代码注释的方式解释一下pytorch中MobileNetV2网络的具体实现过程。from torch import nnfrom .utils import load_state_dict_from_url__all__ = ['MobileNetV2', 'mobilene原创 2020-11-17 08:55:21 · 3970 阅读 · 2 评论 -
pytorch卷积操作nn.Conv中的groups参数用法解释
最近在项目中使用到了MobileNet分类网络,MobileNet网络中使用到了深度可分离卷积操作,深度可分离卷积将传统卷积操作分成两步来处理。假设输入的特征图feature_map大小为[H, W, C],深度可分离卷积第一步使用C组NxNx1的卷积核对每个输入通道in_channel进行卷积,卷积输出结果特征图feature_map大小为[H, W, C],然后使用M和1x1xC的卷积核进行卷积操作,输出的特征图大小为[H, W, M]。深度可分离卷积的目的是减少卷积操作的参数量和计算量,从而提升运算速原创 2020-11-13 20:03:07 · 12235 阅读 · 8 评论