pytorch入门到精通
文章平均质量分 76
本专栏介绍了深度学习中pytorch的入门到精通,本人亲手整理,内容通俗易懂,并包含大量可运行代码示范。内容包括各种使用技巧:数据集获取、数据集加载、模型的搭建、预训练模型的调用、模型的训练和技巧,模型评估的方法,以及GPU的使用等。
优惠券已抵扣
余额抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
学渣渣渣渣渣
我是菜
深度学习方向,欢迎交流~
展开
-
【Pytorch】记录每轮训练结果 logger
【代码】【Pytorch】记录每轮训练结果 logger。原创 2024-05-30 17:11:21 · 213 阅读 · 0 评论 -
【pytorch】torch.nn.utils.rnn的pad_sequence、pack_padded_sequence、pad_packed_sequence、PackedSequence
nn.utils.rnn.PackedSequence是nn.utils.rnn.pack_padded_sequence的亲戚,两者输出的结果都一样,都是将序列进行pack,得到。第一个是PackedSequence对象,而标准RNN返回的是所有序列,每个位置的隐向量输出,形状是[batch_size,seq_len,hidden_size]。第二个一模一样,是RNN每一个序列的最后一个位置的隐向量输出,形状是[batch_size,hidden_size]。类型的变量,只是输入的参数不一样。原创 2023-07-04 23:57:18 · 767 阅读 · 0 评论 -
【pytorch】lstm基本用法&参数讲解
【代码】【lstm】基本用法&参数讲解。原创 2023-07-04 13:36:45 · 913 阅读 · 0 评论 -
【pytorch】模型剪枝 model pruning
torch.nn.utils.prune 是pytorch用于修剪模型的工具包,其通过 修改将模型某一层的参数进行限定,然后再使用 prune.remove 函数进行修剪,一般来说,修剪参数值较小的参数,模型的性能也不会发生太大变化。但是要注意,本文介绍的都是非结构剪枝,就是哪些被裁剪为0的参数,在经过模型重新训练以后,会重新进行迭代更新,对于结构剪枝,使用本文的方法不适用,建议采用 github 上面的一些库来进行实现。原创 2023-04-09 21:56:38 · 823 阅读 · 1 评论 -
【pytorch】self.register_buffer()的作用:定义为不可训练的模型参数
PyTorch中定义模型时,有时候会遇到 self.register_buffer(‘name’, Tensor)的操作,该方法的作用是定义一组参数,该组参数的特别之处在于:模型训练时不会更新(即调用 optimizer.step() 后该组参数不会变化,只可人为地改变它们的值),但是保存模型时,该组参数又作为模型参数不可或缺的一部分被保存。而 register_parameter() 和它是相反的功能。原创 2023-03-12 13:04:19 · 689 阅读 · 0 评论 -
【pytorch】nn.Embedding()
翻译过来的意思就是词嵌入,通俗来讲就是将文字转换为一串数字。因为数字是计算机更容易识别的一种表达形式。我们词嵌入的过程,就相当于是我们在给计算机制造出一本字典的过程。计算机可以通过这个字典来间接地识别文字。词嵌入向量的意思也可以理解成:词在神经网络中的向量表示。num_embeddings (python:int) – 词典的大小尺寸,比如总共出现5000个词,那就输入5000。此时index为(0-4999)原创 2023-03-11 16:03:56 · 555 阅读 · 0 评论 -
【pytorch】torch.clip() & torch.clamp() 数值裁剪
这两个函数用法一样,效果也一样。原创 2023-02-15 20:03:23 · 11477 阅读 · 0 评论 -
【pytorch】利用 model.children() 对模型进行拆解;提取复杂嵌套模型的某一层
可以看到,模型一共有三个大层,分别命为:‘avgpool’,‘features’,‘classifier’。而每一个大层里面又嵌套了很多小层(子层)。以往,我们只能够通过一个个引用来进行调用大层或者小层(子层),例如:也可以通过list()原创 2022-12-10 18:54:21 · 2270 阅读 · 0 评论 -
【pytorch】torch.tensor-np.array的转换
各有两种转换方式,一种是把pytorch.tensor 和对应 numpy放在同一个内存空间,改变tensor时numpy也会改变(The Torch Tensor and NumPy array will share their underlying memory locations (if the Torch Tensor is on CPU), and changing one will change the other.),另一种是单纯的copy,改变一个另一个不会发生变化。1.同内存转换1.1原创 2020-09-11 10:51:53 · 19451 阅读 · 0 评论 -
【pytorch】向量、矩阵乘法
1 张量内积-torch.dot()torch.dot(input, tensor) → Tensor#计算两个张量的点积(内积)#官方提示:不能进行广播(broadcast).#example>>> torch.dot(torch.tensor([2, 3]), torch.tensor([2, 1])) #即对应位置相乘再相加tensor(7)>>> torch.dot(torch.rand(2, 3), torch.rand(2, 2))#报错,只允原创 2020-09-12 09:34:14 · 21898 阅读 · 5 评论 -
【pytorch】torch.tensor的求导;矩阵求导;求二阶导;导数
本文讲解如何使用 pytorch进行求导原创 2020-09-16 18:24:45 · 18133 阅读 · 0 评论 -
【pytorch】tensor的复制避坑;tensor.clone() & tensor.detach() 详解
目录1 tensor.clone()2 tensor.detach()问题来源:a = torch.zeros(2, 3)for i in range(2): for j in range(3): b = a.data b[i, j] = 1 print("b:", b) print("a:", a)我原以为 b = a.data 就是开辟一个新空间给 b变量,然后修改 b 的值时 a 的值不会因此变化,谁知道即使用了.dat原创 2020-12-07 22:17:37 · 21222 阅读 · 0 评论 -
【pytorch】用cuda(GPU)处理数据
目录设置GPU的一些操作直接在gpu创建从cpu转移到gpu考虑到各种运算只能在cpu或者gpu运算,不能混和运算,本文介绍常用的几种把数据挪到gpu或者直接在gpu创建数据再进行运算的方法。设置GPU的一些操作设置在os端哪些GPU可见,如果不可见,那肯定是不能够调用的~import osGPU = '0,1,2'os.environ['CUDA_VISIBLE_DEVICES'] =GPUtorch.cuda.is_available()查看cuda是否可用。if torch.原创 2020-09-23 19:53:50 · 21294 阅读 · 2 评论 -
【pytorch】torchvision.transforms 图像的变换详解;图像的预处理;数据增强
torchvision.transforms是包含一系列常用图像变换方法的包,可用于图像预处理、数据增强等工作,但是注意它更适合于classification等对数据增强后无需改变图像的label的情况,对于Segmentation等对图像增强时需要同步改变label的情况可能不太实用,需要自己重新封装一下。原创 2020-09-20 17:58:34 · 20686 阅读 · 3 评论 -
【pytorch】DataLoader(数据迭代器) 包含多种DataLoader的生成方法
本博客讲解了pytorch框架下DataLoader的多种用法,每一种方法都展示了实例,虽然有一点复杂,但是小伙伴静下心看一定能看懂哦 :),在1.1.1节介绍的三种方法中,推荐(方法三实在是过于复杂不做推荐),另外,第三节中的处理示例使用了非DataLoader的方法进行数据集处理,也可以借鉴~原创 2020-09-22 17:03:51 · 67440 阅读 · 7 评论 -
【pytorch】损失函数的选择
目录在pytorch中,例如我们最常用的计算一条数据的交叉熵:并非就是 torch.nn.CrossEntropyLoss,torch.nn.CrossEntropyLoss包括了三个步骤的处理:把输出矢量 [z1, z2, …, zK] 进行softmax化,使得概率和为1;softmax化后的输出进行 log 计算。根据交叉熵的计算公式,结合该条数据真实标签,计算损失熵,注意这里会自动加上一个负号,以得到正的结果。所以说,在pytorch框架下,我们在设计模型时,模型的原创 2021-03-14 21:36:51 · 18072 阅读 · 0 评论 -
【pytorch】卷积层计算规则
torch.nn 里有很多神经网络模型需要的各种层和工具。神经网络的工作流程:A typical training procedure for a neural network is as follows:Define the neural network that has some learnable parameters (or weights)Iterate over a dataset of inputsProcess input through the networkCompute原创 2020-12-03 17:40:11 · 17657 阅读 · 1 评论 -
【pytorch】模型的保存、读取;查看模型参数、梯度;查看模型某一层输出
model.state_dict() 会以字典的方式打印模型的全部参数,如果模型参数过多,查看起来就很不方便,可以用。Output Shape里的 -1 是表示样本数量的意思,值得注意的是,池化层是没有参数的,卷积层是有参数的,做法来自FedIPR,很简单,给模型参数添加 normal 噪声就行了。会返回一份在GPU上的my_tensor的拷贝。在把GPU上训练的模型加载到GPU上时,只需要使用。当在CPU上加载一个GPU上训练的模型时,在。得先知道该层的名字,然后再引用它。原创 2020-12-05 17:26:00 · 30141 阅读 · 1 评论 -
【pytorch】跟着例子学pytorch
在底层,每个原语autograd运算符实际上是两个作用于张量的函数。forward函数从输入张量计算输出张量。backward接收到输出张量相对于某个标量值的梯度,然后计算输入张量相对于该标量值的梯度。在PyTorch中,通过定义torch.autograd的子类,我们可以很容易地定义自己的autograd操作符。函数,并实现forward和backward函数。然后,我们可以通过构造一个实例并像调用函数一样调用它来使用新的autograd运算符,传递包含输入数据的张量。在本例中,我们将模型定义为。原创 2020-12-08 18:37:38 · 17164 阅读 · 0 评论 -
【pytorch】教程——以CIFAR10为例
目录1 加载数据集1 加载数据集torchvision库里有很多数据集。import torchimport torchvisionimport torchvision.transforms as transformsThe output of torchvision datasets are PILImage images of range [0, 1]. We transform them to Tensors of normalized range [-1, 1]. 还是建议把数据Nor原创 2020-12-05 22:43:26 · 17377 阅读 · 0 评论 -
【pytorch】保证实验的可重复性——随机数种子的设定
如何让每次实验运行后得到的结果都一致?可以通过将以下设置放在 import 后,正式代码前:np.random.seed(0)random.seed(0)torch.manual_seed(0)torch.cuda.manual_seed(0)torch.backends.cudnn.deterministic = Truetorch.backends.cudnn.benchmark = False # 这个开了可以加速,不推荐关闭当然,别忘了训练好的模型预测时这样操作一下:model.原创 2020-12-05 15:45:53 · 17073 阅读 · 0 评论 -
【pytorch】正态分布(高斯分布)、Q函数、误差函数、互补误差函数
则这个随机变量就称为正态随机变量,正态随机变量服从的分布就称为正态分布,记作。这个函数可以看作是高斯分布函数的不定积分,如何相互转换见第5节的图6.2.时,称为标准正态分布。一般正态分布的分布函数。标准正态分布的分布函数。如下图是一般正态分布。如下图是标准整体分布。原创 2021-03-31 11:20:02 · 7821 阅读 · 0 评论 -
【pytorch】FL联邦学习 数据集的划分+non-iid数据集的划分
torchvision.datasets里的数据集都是整一个的,尤其在联邦学习中,我们需要划分不同的数据集给不同的参与者,如何将torchvision中的数据集划分成为了联邦学习中的重大挑战。在联邦学习场景下,各方的数据理应不为同分布,即不满足iid,因此在模拟时不能随机进行数据分配,应该适当调整下发给各client的数据分布。类的数据,其他数据分布都等概率,实际运用中其实可以没有必要规定等概率,仅限定 第。随机分配样本,返回的是每个client的索引。类数据出现的概率就好了。唯一的缺点是 除了第。原创 2021-02-27 19:55:17 · 22320 阅读 · 11 评论 -
【pytorch】预训练模型的使用;修改模型结构;自定义模型;给模型添加层
pytorch自带有一些高级的复杂模型,我们可以通过 torchvision.models 调用,例如torchvision.models.densenet169(pretrained=True)就调用了densenet169的预训练模型。1 查看网络结构model2 = models.densenet169()# 查看网络结构print(model2)out:结构很长,所以只截图了最后一部分,我们可以发现这个模型的输出单元有1000个,也就是说这是一个1000分类的模型。2 修改模型(分原创 2021-08-30 23:02:43 · 21996 阅读 · 4 评论 -
【pytorch】分析解释模型 pytorch + captum
本文介绍pytorch协同编程,即 https://github.com/pytorch/captum原创 2022-03-11 16:18:39 · 20918 阅读 · 1 评论 -
【timm】一个基于pytorch的图像模型库
参考:https://rwightman.github.io/pytorch-image-models/该库包含了很多种类的涉及图像模型,包括ViT。安装pip install timm#或者pip install git+https://github.com/rwightman/pytorch-image-models.git读取模型查看有哪些可用模型查看有哪些 pre-trained模型可用:import timmfrom pprint import pprintmodel_n原创 2022-05-23 10:38:02 · 18272 阅读 · 3 评论