![](https://img-blog.csdnimg.cn/e669264a6b3545c6bf9d18b4ed80b225.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
PyTorch
文章平均质量分 81
以Pytorch为框架,介绍深度学习相关的知识以及Pytorch的相关应用
卖报的大地主
书山有路勤为径,学海无涯苦作舟
展开
-
【细说fine-tuning】LoRA:低秩自适应策略(附官方代码与教程)
目前诸如GPT、Llama等大型AI模型通常具有非常大的参数量,要想将其迁移到具体的下游场景任务中,利用重头训练的全局微调变得十分昂贵,对于普通研究者明显不现实,为此Microsoft提出了一种低消耗的大模型微调方法—LoRA(Low-Rank Adaptation)。$LoRA$基于适配器的思想,通过调整学习外部模块来对下游特定任务进行知识泛化,并通过可学习的秩分解矩阵设计降低模型微调与存储的开销问题。原创 2024-04-27 16:37:08 · 2668 阅读 · 1 评论 -
MMSegmentation CAM可视化脚本
最近在用MMSegmentation,想做个cam可视化,发现项目没有,就根据pytorch_grad_cam例子自己写一下,同时支持VIT系列的模型。原创 2023-08-23 12:58:17 · 562 阅读 · 2 评论 -
生成式AI系列 —— DCGAN生成手写数字
【代码】生成式AI系列 —— DCGAN生成手写数字。原创 2023-08-20 02:15:59 · 613 阅读 · 0 评论 -
【深度学习注意力机制系列】—— CBAM注意力机制(附pytorch实现)
CBAM旨在克服传统卷积神经网络在处理不同尺度、形状和方向信息时的局限性。通道注意力和空间注意力。通道注意力有助于增强不同通道的特征表示,而空间注意力有助于提取空间中不同位置的关键信息。总之,CBAM模块通过自适应地学习通道和空间注意力权重,以提高卷积神经网络的特征表达能力。通过将通道注意力和空间注意力结合起来,CBAM模块能够在不同维度上捕获特征之间的相关性,从而提升图像识别任务的性能。原创 2023-08-09 14:44:53 · 35768 阅读 · 8 评论 -
【深度学习注意力机制系列】—— SCSE注意力机制(附pytorch实现)
SCSE注意力模块(来自论文[1803.02579] Concurrent Spatial and Channel Squeeze & Excitation in Fully Convolutional Networks (arxiv.org))。其对SE注意力模块进行了改进,提出了cSE、sSE、scSE三个模块变体,这些模块可以增强有意义的特征,抑制无用特征。今天我们就分别讲解一下这三个注意力模块。cSE模块引入了通道注意力机制,可有效的对通道维度的特征信息进行整合增强,这一点与SE等传统通道注意力机制原创 2023-08-09 13:56:48 · 4898 阅读 · 0 评论 -
【深度学习注意力机制系列】—— SKNet注意力机制(附pytorch实现)
SKNet是一种创新的深度神经网络架构,通过引入选择性的多尺度卷积核和注意力机制,提升了特征提取的能力。其核心结构包括选择模块和SK卷积层,能够有效地融合多尺度信息、自适应地调整卷积核的尺度,并减少计算成本。这使得SKNet在图像分类和目标检测等任务中取得了优越的性能。原创 2023-08-09 12:55:32 · 7119 阅读 · 6 评论 -
【深度学习注意力机制系列】—— ECANet注意力机制(附pytorch实现)
ECANet是一种高效的神经网络架构,通过引入通道注意力机制,能够有效地捕捉图像中的通道关系,提升特征表示的能力。它的结构包括通道注意力模块和嵌入式通道注意力模块,具有高效性、提升特征表示和减少过拟合等优势。通过这种设计,ECANet在图像处理任务中取得了优越的性能。原创 2023-08-08 17:41:24 · 12683 阅读 · 0 评论 -
【深度学习注意力机制系列】—— SENet注意力机制(附pytorch实现)
SENet(Squeeze-and-Excitation Networks)注意力机制在通道维度上引入注意力机制,其核心思想在于通过网络根据loss去学习特征权重,使得有效的feature map权重大,无效或效果小的feature map权重小的方式训练模型达到更好的结果。SE block嵌在原有的一些分类网络中不可避免地增加了一些参数和计算量,但是在效果面前还是可以接受的 。Sequeeze-and-Excitation(SE) block并不是一个完整的网络结构,而是一个子结构,可以嵌到其他分类或检测原创 2023-08-08 16:56:51 · 2572 阅读 · 0 评论 -
【深度学习可视化系列】—— CAM可视化(以语义分割网络为例,支持Vit系列主干网络的分割模型,支持GradCAM, GradCAMPlusPlus, LayerCAM等cam可视化方法)
【深度学习可视化系列]】—— CAM可视化(以语义分割网络为例,支持Vit系列主干网络的分割模型,支持GradCAM, GradCAMPlusPlus, LayerCAM等cam可视化方法)原创 2023-08-08 16:05:18 · 1996 阅读 · 7 评论 -
【模型加速部署】—— Pytorch自动混合精度训练
torch. amp为混合精度提供了方便的方法,其中一些操作使用torch.float32(浮点)数据类型,而其他操作使用精度较低的浮点数据类型(lower_precision_fp):torch.float16(half)或torch.bfloat16。一些操作,如线性层和卷积,在lower_precision_fp中要快得多。其他操作,如缩减,通常需要float32的动态范围。混合精度试图将每个操作与其适当的数据类型相匹配。原创 2023-08-08 15:33:01 · 2492 阅读 · 0 评论 -
【深度学习】损失函数系列 (一) 平方损失函数、交叉熵损失函数 (含label_smoothing、ignore_index等内容)
在训练分类器时,通常将标签视为单热向量,即只有正确的类别概率为1,其余为0。在标签平滑技术中,将正确标签的概率从 1 降低到 1-ε,同时将错误标签的概率从 0 提高到 ε/(C-1),其中 C 是类别数量。参数用于指定正样本的权重,其作用是在处理类别不平衡问题时对于正样本给予更高的权重,以此来平衡类别的数量。默认情况下,所有的类别都被视为同等重要,即每个类别的权重都为1。是一个长度为类别数的向量,每个元素表示对应类别的权重,当一个类别的权重被设置为大于1的值时,该类别对损失函数的贡献将会变得更加重要。原创 2023-05-01 22:43:52 · 1899 阅读 · 2 评论 -
【模型部署】入门教程(八):如何添加 TensorRT 自定义算子
本篇教程我们主要讲述如何在 MMDeploy 代码库中添加一个自定义的 TensorRT 插件,整个过程不涉及太多更复杂的 CUDA 编程,相信小伙伴们学完可以自己实现想要的插件。至此,我们的模型部署入门系列教程已经更新了八期,那到这里可能就先暂时告一段落啦!所有跟模型部署相关的内容,都整理在这个专栏啦,欢迎大家关注~模型部署那些事www.zhihu.com/column/c_1497987564452114432正在上传…重新上传取消。转载 2023-04-20 13:22:42 · 835 阅读 · 1 评论 -
【模型部署】入门教程(七):TensorRT 模型构建与推理
TensorRT 是由 NVIDIA 发布的深度学习框架,用于在其硬件上运行深度学习推理。TensorRT 提供量化感知训练和离线量化功能,用户可以选择 INT8 和 FP16 两种优化模式,将深度学习模型应用到不同任务的生产部署,如视频流、语音识别、推荐、欺诈检测、文本生成和自然语言处理。TensorRT 经过高度优化,可在 NVIDIA GPU 上运行, 并且可能是目前在 NVIDIA GPU 运行模型最快的推理引擎。关于 TensorRT 更具体的信息可以访问TensorRT官网了解。转载 2023-04-20 13:20:14 · 1461 阅读 · 0 评论 -
【模型部署】入门教程(六):实现 PyTorch-ONNX 精度对齐工具
基于前几篇教程中的知识,本文我们介绍了一个与 PyTorch 转 ONNX 相关的实战项目。相信通过这个项目,大家既巩固了之前学过的 ONNX 相关知识,又获得了一个在模型部署中十分实用的工具,可谓是收获颇丰。教程(三):PyTorch 转 ONNX 详解在 ONNX 文档里查找Identity算子的定义。的调用方法。默认使用跟踪法生成 ONNX 文件。教程(四):在 PyTorch 中支持更多 ONNX 算子使用实现自定义 ONNX 算子my::Debug。转载 2023-04-19 23:43:54 · 362 阅读 · 0 评论 -
【模型部署】入门教程(五):ONNX 模型的修改与调试
在用 API 对 ONNX 模型进行操作之前,我们还需要先了解一下 ONNX 的结构定义规则,学习一下 ONNX 在 Protobuf 定义文件里是怎样描述一个神经网络的。回想一下,神经网络本质上是一个计算图。计算图的节点是算子,边是参与运算的张量。而通过可视化 ONNX 模型,我们知道 ONNX 记录了所有算子节点的属性信息,并把参与运算的张量信息存储在算子节点的输入输出信息中。事实上,ONNX 模型的结构可以用类图大致表示如下:如图所示,一个 ONNX 模型可以用ModelProto类表示。转载 2023-04-19 23:41:22 · 3082 阅读 · 0 评论 -
【模型部署】入门教程(四):在 PyTorch 中支持更多 ONNX 算子
模型部署入门系列教程持续更新啦,在上一篇教程中,我们系统地学习了 PyTorch 转 ONNX 的方法,可以发现 PyTorch 对 ONNX 的支持还不错。但在实际的部署过程中,难免碰到模型无法用原生 PyTorch 算子表示的情况。这个时候,我们就得考虑扩充 PyTorch,即在 PyTorch 中支持更多 ONNX 算子。转载 2023-04-19 23:33:40 · 312 阅读 · 0 评论 -
【模型部署】入门教程(三):PyTorch 转 ONNX 详解
在这篇教程中,我们系统地介绍了 PyTorch 转 ONNX 的原理。我们先是着重讲解了使用最频繁的 torch.onnx.export函数,又给出了查询 PyTorch 对 ONNX 算子支持情况的方法。通过本文,我们希望大家能够成功转换出大部分不需要添加新算子的 ONNX 模型,并在碰到算子问题时能够有效定位问题原因。跟踪法和记录法在导出带控制语句的计算图时有什么区别。中该如何设置。使用来使模型在转换到 ONNX 时有不同的行为。如何查询 ONNX 算子文档(转载 2023-04-19 22:15:54 · 1317 阅读 · 1 评论 -
【模型部署】入门教程(一):模型部署简介
OpenMMLab 的算法如何部署?是很多社区用户的困惑。而模型部署工具箱 MMDeploy的开源,强势打通了从算法模型到应用程序这 "最后一公里"!中间表示 ONNX 的定义标准PyTorch 模型转换到 ONNX 模型的方法推理引擎 ONNX Runtime、TensorRT 的使用方法部署流水线 PyTorch - ONNX - ONNX Runtime/TensorRT 的示例及常见部署问题的解决方法MMDeploy C/C++ 推理 SDK。转载 2023-04-19 16:41:39 · 2036 阅读 · 0 评论 -
【模型部署】TorchScript 解读(四):Torch jit 中的别名分析
Torch jit 中内置了非常多的 pass 以帮助我们完成各式各样的优化,用户也可以定义自己的 pass 来实现特定的目的。这种灵活性给我们优化模型带来了便利,但是它也不是没有限制的。x = x + 1x.add_(x)神经网络会构成一个计算图 Graph,原则上一个 Graph 中的 Node 如果不能通过任何路径到达输出节点,那么这就是一个无用的节点,可以被优化(删除)掉。比如上图中的add_节点。这种优化通常被称为死代码消除(DeadCodeElimination)。通过代码可知,add_转载 2023-04-19 16:16:40 · 211 阅读 · 0 评论 -
【模型部署】TorchScript 解读(三):jit 中的 subgraph rewriter
小伙伴们好呀,TorchScript 解读系列教程又来啦~在,我们带领大家初步了解了TorchScript;在中,我们介绍 TorchScript 通过 trace 来记录数据流的生成方式,同时分享使用该机制实现的 ONNX 导出过程。接下来,就让我们进入今天的正题吧~现代的深度学习推理框架通常遵循编译器的范式,将模型的中间表示(IR)会分为两部分:包括与硬件、环境等无关的前端(frontend)以及针对特定环境的后端(backend),比如 TVM 的 Relay 和 tir 就是一个典型的例子。转载 2023-04-19 16:14:49 · 268 阅读 · 0 评论 -
【模型部署】TorchScript 解读(二):Torch jit tracer 实现解析
TorchScript 解读(二):Torch jit tracer 实现解析 - 知乎 (zhihu.com)转载 2023-04-19 14:57:02 · 982 阅读 · 0 评论 -
【Pytorch基础学习】(4)模型训练与验证
本节总结本系列的前面几节,以`LeNet`神经网络为例,实现一套模型训练与验证的完整流程,代码如下,每一步详情请见代码注释:原创 2023-04-12 22:52:24 · 390 阅读 · 2 评论 -
【Pytorch基础学习】(3)建立神经网络
神经网络由对数据执行操作的层/模块组成。`torch. nn`**命名空间提供了构建自己的神经网络所需的所有构建块。**`PyTorch`**中的每个模块都子类化了**`nn.Module`**。**神经网络是由其他模块(层)组成的模块本身。这种嵌套结构允许轻松构建和管理复杂的架构。原创 2023-04-12 22:08:48 · 78 阅读 · 0 评论 -
【Pytorch基础学习】(2)图像增强(Transforms)
图像数据对神经网络训练影像较大,样本空间不够大或者数量不足是会严重影响训练结果,也容易导致模型过拟合,泛化能力差。并且数据往往总不是模型所需的最终处理输入形式。我们可以使用transforms对数据进行一些操作,使其适合训练。原创 2023-04-10 23:10:56 · 758 阅读 · 0 评论 -
【Pytorch基础学习】(1)加载pytorch自带数据集 与 自定义本地数据集
加载pytorch预数据集与自定义本地数据集。我们以墙体裂缝语义分割数据集为例,我们假设每个图像以及对应标签图像的绝对路径已分别储存在列表和masks_list中了(图像和标签的储存列表可利用python自带的os库处理获得)。原创 2023-04-08 14:37:20 · 488 阅读 · 2 评论