
《深入浅出PyTorch》读书笔记
文章平均质量分 91
《深入浅出PyTorch》读书笔记
sunshinecxm_BJTU
这个作者很懒,什么都没留下…
展开
-
第六章:PyTorch进阶训练技巧3
链接6.4 半精度训练我们提到PyTorch时候,总会想到要用硬件设备GPU的支持,也就是“卡”。GPU的性能主要分为两部分:算力和显存,前者决定了显卡计算的速度,后者则决定了显卡可以同时放入多少数据用于计算。在可以使用的显存数量一定的情况下,每次训练能够加载的数据更多(也就是batch size更大),则也可以提高训练效率。另外,有时候数据本身也比较大(比如3D图像、视频等),显存较小的情况下可能甚至batch size为1的情况都无法实现。因此,合理使用显存也就显得十分重要。我们观察PyTorc转载 2022-05-07 20:41:02 · 958 阅读 · 0 评论 -
第六章:PyTorch进阶训练技巧2
链接6.2 动态调整学习率学习率的选择是深度学习中一个困扰人们许久的问题,学习速率设置过小,会极大降低收敛速度,增加训练时间;学习率太大,可能导致参数在最优解两侧来回振荡。但是当我们选定了一个合适的学习率后,经过许多轮的训练后,可能会出现准确率震荡或loss不再下降等情况,说明当前学习率已不能满足模型调优的需求。此时我们就可以通过一个适当的学习率衰减策略来改善这种现象,提高我们的精度。这种设置方式在PyTorch中被称为scheduler,也是我们本节所研究的对象。经过本节的学习,你将收获:如何转载 2022-05-07 17:34:07 · 449 阅读 · 0 评论 -
第六章:PyTorch进阶训练技巧1
6.1 自定义损失函数PyTorch在torch.nn模块为我们提供了许多常用的损失函数,比如:MSELoss,L1Loss,BCELoss… 但是随着深度学习的发展,出现了越来越多的非官方提供的Loss,比如DiceLoss,HuberLoss,SobolevLoss… 这些Loss Function专门针对一些非通用的模型,PyTorch不能将他们全部添加到库中去,因此这些损失函数的实现则需要我们通过自定义损失函数来实现。另外,在科学研究中,我们往往会提出全新的损失函数来提升模型的表现,这时我们既无转载 2022-05-07 16:50:59 · 172 阅读 · 0 评论 -
第五章:PyTorch模型定义2
5.3 PyTorch修改模型除了自己构建PyTorch模型外,还有另一种应用场景:我们已经有一个现成的模型,但该模型中的部分结构不符合我们的要求,为了使用模型,我们需要对模型结构进行必要的修改。随着深度学习的发展和PyTorch越来越广泛的使用,有越来越多的开源模型可以供我们使用,很多时候我们也不必从头开始构建模型。因此,掌握如何修改PyTorch模型就显得尤为重要。本节我们就来探索这一问题。经过本节的学习,你将收获:如何在已有模型的基础上:修改模型若干层添加额外输入添加额外输出5.3.转载 2022-05-06 21:01:50 · 513 阅读 · 0 评论 -
第五章:PyTorch模型定义1:补充
链接PyTorch 中的 ModuleList 和 Sequential: 区别和使用场景PyTorch 中有一些基础概念在构建网络的时候很重要,比如 nn.Module, nn.ModuleList, nn.Sequential,这些类我们称之为容器 (containers),因为我们可以添加模块 (module) 到它们之中。nn.ModuleList首先说说 nn.ModuleList 这个类,你可以把任意 nn.Module 的子类 (比如 nn.Conv2d, nn.Linear 之类的)转载 2022-05-06 18:26:42 · 183 阅读 · 0 评论 -
第五章:PyTorch模型定义1
链接5.1 PyTorch模型定义的方式模型在深度学习中扮演着重要的角色,好的模型极大地促进了深度学习的发展进步,比如CNN的提出解决了图像、视频处理中的诸多问题,RNN/LSTM模型解决了序列数据处理的问题,GNN在图模型上发挥着重要的作用。当我们在向他人介绍一项深度学习工作的时候,对方可能首先要问的就是使用了哪些模型。因此,在PyTorch进阶操作的第一部分中,我们首先来学习PyTorch模型相关的内容。在第一部分课程的第三章中,我们已经学习了模型中的“层“是如何定义的,以及基础的模型是如何构建转载 2022-05-06 17:15:27 · 258 阅读 · 0 评论 -
第四章:PyTorch基础实战
链接基础实战——FashionMNIST时装分类我们这里的任务是对10个类别的“时装”图像进行分类,使用FashionMNIST数据集(https://github.com/zalandoresearch/fashion-mnist/tree/master/data/fashion )。上图给出了FashionMNIST中数据的若干样例图,其中每个小图对应一个样本。FashionMNIST数据集中包含已经预先划分好的训练集和测试集,其中训练集共60,000张图像,测试集共10,000张图像。每张图像转载 2022-05-06 16:32:57 · 271 阅读 · 0 评论 -
第三章:PyTorch的主要组成模块4
链接3.7 训练和评估完成了上述设定后就可以加载数据开始训练模型了。首先应该设置模型的状态:如果是训练状态,那么模型的参数应该支持反向传播的修改;如果是验证/测试状态,则不应该修改模型参数。在PyTorch中,模型的状态设置非常简便,如下的两个操作二选一即可:model.train() # 训练状态model.eval() # 验证/测试状态我们前面在DataLoader构建完成后介绍了如何从中读取数据,在训练过程中使用类似的操作即可,区别在于此时要用for循环读取DataLo转载 2022-05-06 10:55:55 · 186 阅读 · 0 评论 -
第三章:PyTorch的主要组成模块3
3.6 损失函数在深度学习广为使用的今天,我们可以在脑海里清晰的知道,一个模型想要达到很好的效果需要学习,也就是我们常说的训练。一个好的训练离不开优质的负反馈,这里的损失函数就是模型的负反馈。所以在PyTorch中,损失函数是必不可少的。它是数据输入到模型当中,产生的结果与真实标签的评价指标,我们的模型可以按照损失函数的目标来做出改进。下面我们将开始探索pytorch的所拥有的损失函数。这里将列出PyTorch中常用的损失函数(一般通过torch.nn调用),并详细介绍每个损失函数的功能介绍、数学公式转载 2022-05-06 10:31:56 · 191 阅读 · 0 评论 -
第三章:PyTorch的主要组成模块2
3.4 模型构建3.4.1 神经网络的构造PyTorch中神经网络构造一般是基于 Module 类的模型来完成的,它让模型构造更加灵活。Module 类是 nn 模块里提供的一个模型构造类,是所有神经⽹网络模块的基类,我们可以继承它来定义我们想要的模型。下面继承 Module 类构造多层感知机。这里定义的 MLP 类重载了 Module 类的 init 函数和 forward 函数。它们分别用于创建模型参数和定义前向计算。前向计算也即正向传播。import torchfrom torch impo转载 2022-05-06 10:02:37 · 185 阅读 · 0 评论 -
第三章:PyTorch的主要组成模块1
链接3.1 思考:完成深度学习的必要部分回顾我们在完成一项机器学习任务时的步骤,首先需要对数据进行预处理,其中重要的步骤包括数据格式的统一和必要的数据变换,同时划分训练集和测试集。接下来选择模型,并设定损失函数和优化函数,以及对应的超参数(当然可以使用sklearn这样的机器学习库中模型自带的损失函数和优化器)。最后用模型去拟合训练集数据,并在验证集/测试集上计算模型表现。深度学习和机器学习在流程上类似,但在代码实现上有较大的差异。首先,由于深度学习所需的样本量很大,一次加载全部数据运行可能会超出内存转载 2022-05-05 11:03:22 · 253 阅读 · 0 评论 -
第二章:PyTorch基础知识2
2.2 自动求导PyTorch 中,所有神经网络的核心是 autograd 包。autograd包为张量上的所有操作提供了自动求导机制。它是一个在运行时定义 ( define-by-run )的框架,这意味着反向传播是根据代码如何运行来决定的,并且每次迭代可以是不同的。torch.Tensor 是这个包的核心类。如果设置它的属性 .requires_grad 为 True,那么它将会追踪对于该张量的所有操作。当完成计算后可以通过调用 .backward(),来自动计算所有的梯度。这个张量的所有梯度将会自转载 2022-05-05 10:19:00 · 574 阅读 · 0 评论 -
第二章:PyTorch基础知识1
链接PyTorch相关资源PyTorch之所以被越来越多的人使用,不仅在于其完备的教程,还受益于许多相关的资源,在这里,我们列举了相关的优质资源希望能帮助到各位同学。Awesome-pytorch-list:目前已获12K Star,包含了NLP,CV,常见库,论文实现以及Pytorch的其他项目。PyTorch官方文档:官方发布的文档,十分丰富。Pytorch-handbook:GitHub上已经收获14.8K,pytorch手中书。PyTorch官方社区:在这里你可以和开发pytorch的人转载 2022-05-04 22:33:37 · 158 阅读 · 0 评论