PyTorch
文章平均质量分 89
Adenialzz
Keep Learning.
展开
-
GPT2模型代码学习笔记
GPT2模型代码学习笔记转载 2023-01-09 16:34:14 · 4205 阅读 · 2 评论 -
pytorch lightning最简上手
pytorch lightning最简上手原创 2022-11-12 23:23:33 · 8020 阅读 · 0 评论 -
动手实现CNN
动手实现CNN原创 2022-09-27 20:39:53 · 2092 阅读 · 0 评论 -
Pytorch autograd.grad与autograd.backward详解
Pytorch autograd.grad与autograd.backward详解原创 2022-09-07 18:16:00 · 2832 阅读 · 4 评论 -
PyTorch 的 Autograd
PyTorch 的 Autograd转载 2022-09-06 23:24:39 · 309 阅读 · 1 评论 -
浅谈 PyTorch 中的 tensor 及使用
浅谈 PyTorch 中的 tensor 及使用转载 2022-09-06 23:11:23 · 1491 阅读 · 0 评论 -
DCN可形变卷积实现1:Python实现
DCN可形变卷积实现1:Python实现原创 2022-07-11 19:55:20 · 4233 阅读 · 0 评论 -
Pytorch自定义C++/CUDA扩展
Pytorch自定义C++/CUDA扩展翻译 2022-07-04 21:35:33 · 2485 阅读 · 2 评论 -
PyTorch扩展自定义PyThonC++(CUDA)算子的若干方法总结
PyTorch扩展自定义PyThon/C++(CUDA)算子的若干方法总结转载 2022-07-03 15:11:44 · 879 阅读 · 0 评论 -
[深度][PyTorch] DDP系列第三篇:实战与技巧
[深度][PyTorch] DDP系列第三篇:实战与技巧转自:https://zhuanlan.zhihu.com/p/250471767零. 概览想要让你的PyTorch神经网络在多卡环境上跑得又快又好?那你definitely需要这一篇!No one knows DDP better than I do!– – magic_frog(手动狗头)本文是DDP系列三篇(基本原理与入门,实现原理与源代码解析,实战)中的第三篇。本系列力求深入浅出,简单易懂,猴子都能看得懂(误)。在过去的转载 2022-05-30 16:38:53 · 906 阅读 · 0 评论 -
[深度][PyTorch] DDP系列第二篇:实现原理与源代码解析
[深度][PyTorch] DDP系列第二篇:实现原理与源代码解析转自:https://zhuanlan.zhihu.com/p/187610959概览想要让你的PyTorch神经网络在多卡环境上跑得又快又好?那你definitely需要这一篇!No one knows DDP better than I do!– – MagicFrog(手动狗头)本文是DDP系列三篇(基本原理与入门,实现原理与源代码解析,实战与技巧)中的第二篇。本系列力求深入浅出,简单易懂,猴子都能看得懂(误)。本转载 2022-05-30 16:18:09 · 1834 阅读 · 0 评论 -
[深度][PyTorch] DDP系列第一篇:入门教程
https://zhuanlan.zhihu.com/p/178402798转载 2022-05-30 15:17:00 · 1871 阅读 · 0 评论 -
关于pytorch使用多个dataloader并使用zip和cycle来进行循环时出现的显存泄漏的问题
关于pytorch使用多个dataloader并使用zip和cycle来进行循环时出现的显存泄漏的问题如果我们想要在 Pytorch 中同时迭代两个 dataloader 来处理数据,会有两种情况:一是我们按照较短的 dataloader 来迭代,长的 dataloader 超过的部分就丢弃掉;二是比较常见的,我们想要按照较长的 dataloader 来迭代,短的 dataloader 在循环完一遍再循环一遍,直到长的 dataloader 循环完一遍。两个dataloader的写法及问题的出现第一种原创 2022-05-20 10:14:04 · 3491 阅读 · 5 评论 -
Pytorch Tutorial 使用torch.autograd进行自动微分
Pytorch Tutorial 使用torch.autograd进行自动微分本文翻译自 PyTorch 官网教程。原文:https://pytorch.org/tutorials/beginner/basics/autogradqs_tutorial.html#optional-reading-tensor-gradients-and-jacobian-products在训练神经网络时,最常使用到的算法就是反向传播(back propagation)。在该算法中,参数(模型权重)会根据损失函数相翻译 2022-01-20 16:04:46 · 226 阅读 · 0 评论 -
树莓派4B (aarch64) 安装PyTorch 1.8 的可行方案
树莓派4B (aarch64) 安装PyTorch 1.8 的可行方案最终可行方案试了一堆方案(源码编译、Fast.ai的安装文件等)之后,终于找到一个可行的方案。是在 PyTorch 官方讨论社区的一个帖子中找到的,在回复中一个大佬给出了自己在2021年1月为树莓派制作的一个 PyTorch 1.8 版本的安装方案。如果是想在树莓派上安装 PyTorch 的话,只需下载其中的一个 whl 文件,然后 pip install torch-1.8.0a0-cp37-cp37m-linux_aarch64.原创 2021-12-23 10:24:15 · 3811 阅读 · 6 评论 -
PyTorch导出JIT模型并用C++ API libtorch调用
PyTorch导出JIT模型并用C++ API libtorch调用本文将介绍如何将一个 PyTorch 模型导出为 JIT 模型并用 PyTorch 的 C++API libtorch运行这个模型。Step1:导出模型首先我们进行第一步,用 Python API 来导出模型,由于本文的重点是在后面的部署阶段,因此,模型的训练就不进行了,直接对 torchvision 中自带的 ResNet50 进行导出。在实际应用中,大家可以对自己训练好的模型进行导出。# export_jit_model.py原创 2021-12-21 22:28:26 · 4463 阅读 · 1 评论 -
安装 PyTorch C++ API libtorch 及一个最小例子
安装 PyTorch C++ API libtorch 及一个最小例子翻译自:https://pytorch.org/cppdocs/installing.html我们提供依赖 PyTorch 所需的所有头文件、库和 CMake 配置文件的二进制分发版。我们将此发行版称为 LibTorch,您可以在我们的网站上下载包含最新 LibTorch 发行版的 ZIP 档案。下面是编写一个依赖 LibTorch 并使用torch::TensorPyTorch C++ API 附带的类的最小应用程序的小示例。安装翻译 2021-12-21 18:06:23 · 1516 阅读 · 0 评论 -
PyTorch C++ API libtorch 简介
PyTorch C++ 简介翻译自 PyTorch 官方文档:https://pytorch.org/cppdocs/index.html#acknowledgements整体划分根据 PyTorch 官方文档 的介绍,PyTorch的C++ API可以粗略分为以下五个部分:ATen:基础的张量和数学计算库,其他的部分都以此为基础。Autograd:多 ATen 的扩展,包含自动微分功能。C++ Frontend:用于训练和验证机器学习模型的高层架构。TorchScript:TorchSci翻译 2021-12-21 15:44:49 · 1372 阅读 · 0 评论 -
PyTorch JIT与TorchScript
PyTorch JIT与TorchScript转自:https://zhuanlan.zhihu.com/p/370455320如果搜索 PyTorch JIT,找到的将会是「TorchScript」的文档,那么什么是 JIT 呢?JIT 和 TorchScript 又有什么联系?文章只会关注概念的部分,如果关注细节或实现部分,文章最后有一个完整的 Demo 可供参考。什么是 JIT?首先要知道 JIT 是一种概念,全称是 Just In Time Compilation,中文译为「即时编译转载 2021-12-20 17:48:23 · 561 阅读 · 0 评论 -
PyTorch 分布式训练DDP 单机多卡快速上手
PyTorch 单机多卡快速上手本文旨在帮助新人快速上手最有效的 PyTorch 单机多卡训练,对于 PyTorch 分布式训练的理论介绍、多方案对比,本文不做详细介绍,有兴趣的读者可参考:[分布式训练] 单机多卡的正确打开方式:理论基础当代研究生应当掌握的并行训练方法(单机多卡)DP与DDP我们知道 PyTorch 本身对于单机多卡提供了两种实现方式DataParallel(DP):Parameter Server模式,一张卡位reducer,实现也超级简单,一行代码。Distribute原创 2021-12-11 14:08:49 · 12665 阅读 · 14 评论 -
FLOPs、FLOPS、Params的含义及PyTorch中的计算方法
FLOPs、FLOPS、Params的含义及PyTorch中的计算方法含义解释FLOPS:注意全大写,是floating point operations per second的缩写(S表second秒),表示每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。FLOPs:注意s小写,是floating point operations的缩写(s表复数),表示浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。Params:没有固定的名称,大小写均可,表示模型的参数量,也是用来衡量算法原创 2021-09-04 19:41:03 · 20235 阅读 · 3 评论 -
timm 视觉库中的 create_model 函数详解
timm 视觉库中的 create_model 函数详解最近一年 Vision Transformer 及其相关改进的工作层出不穷,在他们开源的代码中,大部分都用到了这样一个库:timm。各位炼丹师应该已经想必已经对其无比熟悉了,本文将介绍其中最关键的函数之一:create_model 函数。timm简介PyTorchImageModels,简称timm,是一个巨大的PyTorch代码集合,包括了一系列:image modelslayersutilitiesoptimizersschedu原创 2021-11-16 20:37:57 · 36699 阅读 · 17 评论 -
使用Apex进行混合精度训练
使用Apex进行混合精度训练转自:https://fyubang.com/2019/08/26/fp16/你想获得双倍训练速度的快感吗?你想让你的显存空间瞬间翻倍吗?如果我告诉你只需要三行代码即可实现,你信不?在这篇博客里,瓦砾会详解一下混合精度计算(Mixed Precision),并介绍一款Nvidia开发的基于PyTorch的混合精度训练加速神器—Apex,最近Apex更新了API,可以用短短三行代码就能实现不同程度的混合精度加速,训练时间直接缩小一半。话不多说,直接先教你怎么用。PyT转载 2021-10-28 15:51:47 · 2297 阅读 · 0 评论 -
[分布式训练] 单机多卡的正确打开方式:Horovod
[分布式训练] 单机多卡的正确打开方式:Horovod转自:https://fyubang.com/2019/07/26/distributed-training4/讲完了单机多卡的分布式训练的理论、TensorFlow和PyTorch分别的实现后,今天瓦砾讲一个强大的第三方插件:Horovod。Horovod是Uber开源的跨平台的分布式训练工具,名字来自于俄国传统民间舞蹈,舞者手牵手围成一个圈跳舞,与Horovod设备之间的通信模式很像,有以下几个特点:兼容TensorFlow、Keras和P转载 2021-10-28 15:32:55 · 702 阅读 · 0 评论 -
[分布式训练] 单机多卡的正确打开方式:PyTorch
[分布式训练] 单机多卡的正确打开方式:PyTorch转自:https://fyubang.com/2019/07/23/distributed-training3/PyTorch的数据并行相对于TensorFlow而言,要简单的多,主要分成两个API:DataParallel(DP):Parameter Server模式,一张卡位reducer,实现也超级简单,一行代码。DistributedDataParallel(DDP):All-Reduce模式,本意是用来分布式训练,但是也可用于单机多卡转载 2021-10-28 15:22:37 · 378 阅读 · 0 评论 -
RuntimeError: Expected to have finished reduction in the prior iteration before starting a new one.
RuntimeError: Expected to have finished reduction in the prior iteration before starting a new one.报错信息报错信息:RuntimeError: Expected to have finished reduction in the prior iteration before starting a new one. This error indicates that your module has pa原创 2021-09-19 21:45:12 · 15279 阅读 · 6 评论 -
对比损失的PyTorch实现详解
对比损失的PyTorch实现详解本文以SiT代码中对比损失的实现为例作介绍。对比损失简介作为一种经典的自监督损失,对比损失就是对一张原图像做不同的图像扩增方法,得到来自同一原图的两张输入图像,由于图像扩增不会改变图像本身的语义,因此,认为这两张来自同一原图的输入图像的特征表示应该越相似越好(通常用余弦相似度来进行距离测度),而来自不同原图像的输入图像应该越远离越好。来自同一原图的输入图像可做正样本,同一个batch内的不同输入图像可用作负样本。如下图所示(粗箭头向上表示相似度越高越好,向下表示越低越好原创 2021-09-19 16:58:55 · 23647 阅读 · 22 评论 -
[分布式训练] 单机多卡的正确打开方式:理论基础
[分布式训练] 单机多卡的正确打开方式:理论基础转自:https://fyubang.com/2019/07/08/distributed-training/瓦砾由于最近bert-large用的比较多,踩了很多分布式训练的坑,加上在TensorFlow和PyTorch之间更换,算是熟悉了一下各类框架的分布式训练接口,由于集中在一起讲可能比较乱,笔者准备分三到四篇来讲一下深度学习的分布式训练。这一篇先讲一下“分布式训练的类型与算法”。分布式训练的需求和重要性不需要多说,随着GPT、BERT、xlnet这转载 2021-09-12 11:38:56 · 932 阅读 · 0 评论 -
strict=False 但还是size mismatch for []: copying a param with shape [] from checkpoint,the shape in cur
strict=False 但还是size mismatch for []: copying a param with shape [] from checkpoint,the shape in cur问题我们知道通过model.load_state_dict(state_dict, strict=False)可以暂且忽略掉模型和参数文件中不匹配的参数,先将正常匹配的参数从文件中载入模型。笔者在使用时遇到了这样一个报错:RuntimeError: Error(s) in loading stat原创 2021-09-03 15:42:42 · 11424 阅读 · 21 评论 -
RuntimeError: [enforce fail at inline_container.cc:145] . PytorchStreamReader failed reading zip arc
RuntimeError: [enforce fail at inline_container.cc:145] . PytorchStreamReader failed reading zip archive: failed finding central directory这个报错是出现在PyTorch在读入模型参数时:checkpoint = torch.load(args.resume, map_location='cpu')笔者之前在训练模型,突然服务器整个停掉,发现竟然是系统固态硬盘没有空原创 2021-08-11 16:22:45 · 20964 阅读 · 12 评论 -
关于PyTorch中的register_forward_hook()函数未能执行其中hook函数的问题
关于PyTorch中的register_forward_hook()函数未能执行其中hook函数的问题Hook 是 PyTorch 中一个十分有用的特性。利用它,我们可以不必改变网络输入输出的结构,方便地获取、改变网络中间层变量的值和梯度。这个功能被广泛用于可视化神经网络中间层的 feature、gradient,从而诊断神经网络中可能出现的问题,分析网络有效性。Hook函数机制:不改变主体,实现额外的功能,像一个挂件一样;Hook函数本身不是本文介绍的重点,本文主要是记录一下笔者在使用hook函数时原创 2021-08-03 16:09:02 · 2257 阅读 · 3 评论 -
Positional Encodings in ViTs 近期各视觉Transformer中的位置编码方法总结及代码解析 1
Positonal Encodings in ViTs 近期各视觉Transformer中的位置编码方法总结及代码解析最近CV领域的Vision Transformer将在NLP领域的Transormer结果借鉴过来,屠杀了各大CV榜单。对其做各种改进的顶会论文也是层出不穷,本文将聚焦于各种最新的视觉transformer的位置编码部分的设计思想及代码实现做一些总结。ViT论文:https://arxiv.org/abs/2010.11929代码:https://github.com/lucidra原创 2021-08-01 16:26:43 · 13782 阅读 · 3 评论 -
PyTorch中的topk方法以及分类Top-K准确率的实现
PyTorch中的topk方法以及分类Top-K准确率的实现Top-K 准确率在分类任务中的类别数很多时(如ImageNet中1000类),通常任务是比较困难的,有时模型虽然不能准确地将ground truth作为最高概率预测出来,但通过学习,至少groud truth的准确率能够在所有类中处于很靠前的位置,这在现实生活中也是有一定应用意义的,因此除了常规的Top-1 Acc,放宽要求的Tok-K Acc也是某些分类任务的重要指标之一。Tok-K准确率:即指在模型的预测结果中,前K个最高概率的类中有g原创 2021-07-28 14:25:38 · 7177 阅读 · 1 评论 -
[2021-CVPR] Jigsaw Clustering for Unsupervised Visual Representation Learning 论文简析及关键代码简析
[2021-CVPR] Jigsaw Clustering for Unsupervised Visual Representation Learning 论文简析及关键代码简析论文:https://arxiv.org/abs/2104.00323代码:https://github.com/dvlab-research/JigsawClustering总结本文提出了一种单批次(single-batch)的自监督任务pretext task Jigsaw Cluster,相比于双批次(dual-bat原创 2021-07-18 21:08:20 · 973 阅读 · 0 评论 -
Vision Transformer(ViT)PyTorch代码全解析(附图解)
Vision Transformer(ViT)代码全解析最近CV领域的Vision Transformer将在NLP领域的Transormer结果借鉴过来,屠杀了各大CV榜单。本文将根据最原始的Vision Transformer论文,及其PyTorch实现,将整个ViT的代码做一个全面的解析。对原Transformer还不熟悉的读者可以看一下Attention is All You Need原文,中文讲解推荐李宏毅老师的视频,个人觉得讲的很明白。话不多说,直接开始。下图是ViT的整体框架图,我们在原创 2021-07-14 17:56:46 · 58505 阅读 · 85 评论 -
PyTorch中的torch.nn.Parameter() 详解
PyTorch中的torch.nn.Parameter() 详解今天来聊一下PyTorch中的torch.nn.Parameter()这个函数,笔者第一次见的时候也是大概能理解函数的用途,但是具体实现原理细节也是云里雾里,在参考了几篇博文,做过几个实验之后算是清晰了,本文在记录的同时希望给后来人一个参考,欢迎留言讨论。分析先看其名,parameter,中文意为参数。我们知道,使用PyTorch训练神经网络时,本质上就是训练一个函数,这个函数输入一个数据(如CV中输入一张图像),输出一个预测(如输出这张原创 2021-07-14 16:21:09 · 75265 阅读 · 31 评论 -
einops和einsum:直接操作张量的利器
einops 和 einsumeinops和einsum是Vision Transformer的代码实现里出现的两个操作tensor维度和指定tensor计算的神器,在卷积神经网络里不多见,本文将介绍简单介绍一下这两样工具,方便大家更好地理解Vision Transformer的代码。einops:直接操作tensor维度的神器github地址:https://github.com/arogozhnikov/einopseinops:灵活和强大的张量操作,可读性强和可靠性好的代码。支持numpy、p原创 2021-07-12 20:25:58 · 7328 阅读 · 1 评论