![](https://img-blog.csdnimg.cn/20210121145924906.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
【pytorch】
文章平均质量分 72
pytorch精通之旅
All_In_gzx_cc
这个作者很懒,什么都没留下…
展开
-
【模型压缩】模型剪枝详解
CNN在实际应用中的部署主要受以下几个方面制约。1)模型大小的限制CNN强大的表示能力来自其数百万可训练参数。这些参数以及网络结构信息需要存储在磁盘上,并在推理期间加载到内存中。例如,在ImageNet上存储一个典型的CNN会消耗超过300MB的空间,这对嵌入式设备来说是一个巨大的资源负担。2) 运行时内存在推理期间,CNN的中间激活/响应甚至可能比存储模型参数占用更多内存空间,即使批量大小为1。这对于高端GPU来说不是问题,但对于许多计算能力较低的应用程序来说,这是负担不起的。3) 计算操作数。原创 2024-01-26 15:34:36 · 1464 阅读 · 0 评论 -
【模型压缩】模型压缩的几种方式概述
如同前面提到的,我们希望将一个强大复杂的AI模型减量、压缩后,得到一个迷你、简单的模型,但仍要能维持原有的推论精度或者只有些微(0%到指定%)的下降,就像我们平常看到的JPG影像、MP4影片,虽然采大幅度破坏性压缩,但人眼是很难分辨其品质差异的。这样可以得到几项好处,包括。(FP8, e5m2, e4m3, 1 Byte)在推论时其精度下降幅度可控制在一定程度内,同时可让储存空间和内存使用量减少1/2到3/4,若加上有支持SIMD或平行运算指令集[1]还可让运算量提升1.x ~ 3.x倍,一举多得。转载 2024-01-26 14:13:46 · 1548 阅读 · 0 评论 -
pytorch快速上手(8)-----pytorch优化器简介
更新模型参数。在更新参数时一般使用梯度下降的方式去更新。梯度下降常见的基本概念导数:函数在指定坐标轴上的变化率;方向导数:指定方向上的变化率;梯度:一个向量,方向为方向导数取得最大值的方向。所以梯度是一个向量,方向是导数取得最大值的方向,也就是增长最快的方向,而梯度下降是沿着梯度的负方向去变化。一类是基于SGD及其优化,另一类是Per-parameter adaptive learning rate methods(逐参数自适应学习率方法),如AdaGrad、RMSProp、Adam等。原创 2022-11-23 16:52:02 · 1225 阅读 · 0 评论 -
【pytorch优化器】Adam优化算法详解
转载自:https://blog.csdn.net/weixin_39228381/article/details/108548413仅作学习记录。转载 2022-11-22 17:51:53 · 6826 阅读 · 0 评论 -
【pytorch优化器】Adagrad、RMSProp优化算法详解
模型每次反向传导都会给各个可学习参数p计算出一个偏导数g_t,用于更新对应的参数p。通常偏导数g_t不会直接作用到对应的可学习参数p上,而是通过优化器做一下处理,得到一个新的值,处理过程用函数F表示(不同的优化器对应的F的内容不同),即,然后和学习率lr一起用于更新可学习参数p,即。转载 2022-11-21 17:18:41 · 3121 阅读 · 1 评论 -
【pytorch训练】tensorboardX安装及使用
做为Tensorflow中强大的可视化工具,已经被普遍使用。但针对其余框架,例如Pytorch,以前一直没有这么好的可视化工具可用,PyTorch框架自己的可视化工具是Visdom,但是这个API需要设置的参数过于复杂,而且功能不太方便也不强大,所以有人写了一个库函数来让PyTorch也可以使用tensorboard。转载 2022-11-16 17:48:03 · 9802 阅读 · 1 评论 -
【python第三方库】easydict的使用
在 Python 中当我们需要访问字典中的元素的时候,我们需要使用类似的形式来进行使用。例如现在我们有如下的字典d = {'x' : 1 , 'y' : 2 } } print(d [ 'foo' ]) # 如何想要访问字典的元素需要这么写 print(d [ 'bar' ] [ 'y' ]) # 如果想要继续访问字典中字典的元素需要使用二维数组现在我们希望可以使用类似访问属性的方式,来访问字典里的变量,例如使用d.foo这种形式来访问。这个时候就可以使用easydict这个模块了。原创 2022-11-07 16:10:47 · 4680 阅读 · 1 评论 -
【pytorch基础】读取的图片扩充维度的几种方式
【代码】【pytorch基础】读取的图片扩充维度的几种方式。转载 2022-11-01 20:30:23 · 1202 阅读 · 0 评论 -
【数据增强】图像数据的几种增广方式
只做几种增广方式中的展示,有的增广方式 要注意!其他增广方式,自行百度。下面代码展示都是使用python的opencv库。原创 2022-10-20 18:05:20 · 1352 阅读 · 0 评论 -
【python第三方库】tqdm简介
Tqdm是 Python进度条库,可以在 Python长循环中添加一个进度提示信息。用户只需要封装任意的迭代器,是一个快速、扩展性强的进度条工具库。通过和。转载 2022-09-02 16:36:34 · 4728 阅读 · 0 评论 -
【pytorch】安装pytorch的步骤与问题记录
装了很多次pytorch了,但隔段时间总会遗忘或遇到些问题,此处记录一下。原创 2022-09-01 11:11:49 · 447 阅读 · 0 评论 -
【深度学习】显卡驱动, cuda, cudnn的关系与版本对应问题
转载自:https://blog.csdn.net/weixin_39673002/article/details/113053729仅作学习记录。转载 2022-08-02 17:28:17 · 15524 阅读 · 3 评论 -
pytorch快速上手(10)-----netron查看神经网络结构图
netron并不支持pytorch通过torch.save方法导出的模型文件,因此在pytorch保存模型的时候,需要将其导出为onnx格式的模型文件,可以利用torch.onnx模块实现这一目标。第一步,pytorch导出onnx格式的模型文件。第二步,netron载入模型文件,进行可视化。接下来按照这两步进行实践。...原创 2022-07-15 15:17:03 · 4228 阅读 · 0 评论 -
pytorch快速上手(9)-----多GPU数据并行训练方法
单机多GPU可以使用torch.nn.DataParallel接口(DP,旧的)或者torch.nn.parallel.DistributedDataParallel接口(DDP,新的),官方推荐使用第二个,多机多卡的情况下只能使用DDP。进行分布式训练,distributed会在内部开辟多个进程,进程数与可用的GPU数一致,多个进程分别加载数据集的一部分,在每个GPU上实现加载部分数据集的前向与反向传播,多个GPU上的反向传播得到的梯度会通过gpu间的。最后还有一步,启用多进程运行。...原创 2022-07-15 14:59:49 · 3567 阅读 · 0 评论 -
【李沐深度学习】61.ResNet 残差模块 代码示例
resnet 残差模块实现原创 2022-07-12 15:10:40 · 1263 阅读 · 0 评论 -
【李沐深度学习】59.BN层实线 代码示例
BN层代码实现原创 2022-07-12 13:29:17 · 629 阅读 · 0 评论 -
【李沐深度学习】35.自定义层 代码示例
pytorch 自定义层原创 2022-06-27 10:31:44 · 181 阅读 · 0 评论 -
【李沐深度学习】34.参数管理 代码示例
内容记录于李沐大神的深度学习课程。第34课 参数管理原创 2022-06-24 13:22:50 · 174 阅读 · 0 评论 -
【pytorch基础】torchvision.ImageFolder()函数使用方法
转载自:https://blog.csdn.net/c2250645962/article/details/105291782背景在使用pytorch做深度学习任务的数据加载时,常用的方式是使用torchvision.Dataset类定义数据读取,然后使用torch.utils.data.DataLoader定义数据加载器。该部分内容见 链接不过,有些分类数据的文件目录组织形式如下:即默认你的数据集已经自觉按照要分配的类型分成了不同的文件夹,一种类型的文件夹下面只存放一种类型的图片。这时候,定义转载 2021-06-22 16:51:46 · 687 阅读 · 0 评论 -
【python第三方库】visdom使用简易教程
概述Visdom:一个灵活的可视化工具,可用来对于 实时,富数据的 创建,组织和共享。支持Torch和Numpy还有pytorch。visdom可以实现远程数据的可视化,对科学实验有很大帮助。我们可以远程的发送图片和数据,并进行在ui界面显示出来,检查实验结果,或者debug.要用这个先要安装,对于python模块而言,安装都是蛮简单的:pip install visdom安装完每次要用直接输入代码打开:python -m visdom.server然后根据提示在浏览器中输入相应地址原创 2021-05-18 20:00:58 · 4062 阅读 · 4 评论 -
【pytorch基础】模型的自定义参数初始化方式
总结单层网络初始化直接调用torch.nn.innit里的初始化函数多层网络初始化2.1 使用apply和weight_init函数2.2 在__init__函数使用self.modules()初始化详细阐述1. 单层网络在创建model后直接调用torch.nn.innit里的初始化函数layer1 = torch.nn.Linear(10,20)torch.nn.init.xavier_uniform_(layer1.weight)torch.nn.init.constan原创 2021-05-14 16:23:46 · 2523 阅读 · 0 评论 -
【pytorch基础】Tensor及其基本操作
本文转载自:https://zhuanlan.zhihu.com/p/36233589仅作记录学习~总结本章只是对pytorch的常规操作进行一个总结,大家看过有脑子里有印象就好,知道有这么个东西,需要的时候可以再去详细的看,另外也还是需要在实战中多运用。详细阐述Tensor attributes:在tensor attributes中有三个类,分别为torch.dtype, torch.device, 和 torch.layout其中, torch.dtype 是展示 torch.Tens转载 2021-05-14 14:37:41 · 897 阅读 · 0 评论 -
【python第三方库】argparse库使用简易介绍
转载自:https://blog.csdn.net/qq_34243930/article/details/106517985仅作记录学习~一、argparse介绍官方文档argparse 模块是 Python 内置的一个用于命令项选项与参数解析的模块,argparse模块可以让人轻松编写用户友好的命令行接口。通过在程序中定义好我们需要的参数,然后 argparse 将会从 sys.argv 解析出这些参数。argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误转载 2021-05-14 11:36:55 · 650 阅读 · 0 评论 -
【基础知识】深度学习中各种归一化方式详解
本文转载自 https://blog.csdn.net/qq_23981335/article/details/106572171仅作记录学习~总结BN,LN,IN,GN,WS 从学术上解释差异:BatchNorm:batch方向做归一化,算NHW的均值,对小batchsize效果不好;BN主要缺点是对batchsize的大小比较敏感,由于每次计算均值和方差是在一个batch上,所以如果batchsize太小,则计算的均值、方差不足以代表整个数据分布;LayerNorm:channel方向做归转载 2021-05-14 11:17:30 · 1235 阅读 · 0 评论 -
【基础知识】Numpy库常用代码合集
numpy是高性能科学计算和数据分析的基础包。部分功能如下: 》> ①ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。②用于对整组数据进行快速运算的标准数学函数(无需编写循环)。③用于读写磁盘数据的工具以及用于操作内存映射文件的工具。④线性代数、随机数生成以及傅里叶变换功能。 ⑤用于集成C、C++、Fortran等语言编写的代码的工具。创建矩阵(ndarray对象,即多维数组)1. 直接创建对于python中的numpy模块,一般用其提供的ndarray对.原创 2021-04-12 16:47:10 · 881 阅读 · 0 评论 -
【基础知识】多标签分类CrossEntropyLoss 与 二分类BCELoss
什么是多标签分类图片中是否包含房子?你的回答就是有或者没有,这就是一个典型的二分类问题(一个问题两个选项,是或不是)。同样还是这幅照片,问题变成了:这幅照片是谁拍摄的?备选答案你,你的父亲,你的母亲,这就变成了一个多分类问题(一个问题多个选项)。若此时问题如下:你会发现图中所示的答案有多个yes,而不同于之前的多分类只有一个yes。这就是多标签分类。多标签的问题的损失函数是什么这里需要先了解一下softmax 与 sigmoid函数这两个函数最重要的区别,我们观察一下:区别还转载 2021-04-07 17:08:42 · 5815 阅读 · 0 评论 -
PyTorch常用代码集合
本文代码基于PyTorch 1.0版本,需要用到以下包import collectionsimport osimport shutilimport tqdmimport numpy as npimport PIL.Imageimport torchimport torchvision1.基础配置检查pytorch版本torch.__version__ # PyTorch versiontorch.version.cuda #转载 2021-02-25 17:11:31 · 1052 阅读 · 0 评论 -
pytorch快速上手(8)-----torch.nn.Module类详解
原创 2021-02-02 17:12:02 · 143 阅读 · 0 评论 -
pytorch快速上手(7)-----Pytorch中只导入部分层权重的方法
转载自:https://blog.csdn.net/jackzhang11/article/details/108047586我们通常会用到迁移学习,即在一个比较通用的pretext-task上做预训练,随后针对不同的downstream task进行微调。而在微调的时候,网络结构的最后几层通常是要做出改变的。举个例子,假设pretext-task是在imagenet上面做图像分类,而下游任务是做语义分割,那么在微调的时候需要将分类网络的最后几层全连接层去掉,改造成FCN的网络结构。此时就需要我们把前面层转载 2021-02-02 16:55:09 · 763 阅读 · 0 评论 -
pytorch快速上手(6)-----pytorch多数据集(多dataloader)一起训练方法
如果两个dataloader的长度不一样,那就加个:from itertools import cycle仅使用zip,迭代器将在长度等于最小数据集的长度时耗尽。 但是,使用cycle时,我们将再次重复最小的数据集,除非迭代器查看最大数据集中的所有样本。参考:https://stackoverflow.com/questions/51444059/how-to-iterate-over-two-dataloaders-simultaneously-using-pytorch下面为本人训练的代码.原创 2021-02-02 16:43:49 · 4522 阅读 · 3 评论 -
pytorch快速上手(5)-----pytorch模型的保存加载与断点恢复训练
模型的保存与加载PyTorch中的保存(序列化,从内存到硬盘)与反序列化(加载,从硬盘到内存)torch.save主要参数: obj:对象 、f:输出路径torch.load 主要参数 :f:文件路径 、map_location:指定存放位置、 cpu or gpu一、常见的模型保存的两种方法:1、保存整个Moduletorch.save(net, path)2、只保存模型参数state_dict = net.state_dict()torch.save(state_dict , p原创 2021-02-02 16:32:41 · 1192 阅读 · 1 评论 -
pytorch快速上手(4)-----如何导入torch中经典模型的部分结构
torchvision.modelmodel子包中包含了用于处理不同任务的经典模型的定义,包括:图像分类、像素级语义分割、对象检测、实例分割、人员关键点检测和视频分类。图像分类:语义分割:对象检测、实例分割和人员关键点检测:视频分类:ResNet 3DResNet Mixed ConvolutionResNet (2+1)D1. 完整模型的导入(无预训练权重)你可以通过调用构造函数来构造一个带有随机权重的模型(需要重新训练):import torchvision.mode原创 2021-02-02 15:48:26 · 929 阅读 · 1 评论 -
pytorch快速上手(3)-----如何处理自己的数据集
转载自博客:https://blog.csdn.net/Teeyohuang/article/details/79587125之前讲的例子,程序都是调用的datasets方法,下载的torchvision本身就提供的数据,那么如果想导入自己的数据应该怎么办呢?本篇就讲解一下如何创建自己的数据集。1.用于分类的数据集以mnist数据集为例这里的mnist数据集并不是torchvision里面的,而是我自己的以图片格式保存的数据集,因为我在测试STN时,希望自己再把这些手写体做一些形变,所以就先把M转载 2021-02-02 15:26:10 · 759 阅读 · 0 评论 -
pytorch快速上手(2)-----CIFAR-10训练测试完整流程示例
具体参考博客: https://blog.csdn.net/teeyohuang/article/details/79211798一般来说,使用深度学习框架我们会经过下面几个流程:模型定义(包括损失函数的选择) —>数据处理和加载 —> 训练(可能包含训练过程可视化) —> 测试所以我们在自己写代码的时候也基本上就按照这四个大模块四步走就ok了官方给的这个例子呢,是先进行的第二步数据处理和加载,然后定义网络,这其实没什么关系。此例的步骤:A、Load and normal转载 2021-02-02 14:59:02 · 613 阅读 · 0 评论 -
pytorch快速上手(1)-----基础知识和训练测试流程介绍
pytorch是什么它是一个基于python的科学计算库,致力于为两类用户提供服务:一些想要找到Numpy搭建神经网络替代品的用户;寻找一个可提供极强的可拓展性和运行速度的深度学习研究平台;1. 张量的概念和生成张量和Numpy中ndarrays的概念很相似,有了这个作为基础,张量也可以被运行在GPU上来加速计算,下面介绍如何创建张量。'''# 这个是用来生成一个为未初始化的5*3的张量,切记不是全零x = torch.empty(5, 3)print(x)"""tensor(原创 2021-02-02 14:36:26 · 266 阅读 · 0 评论