PyTorch框架学习
文章平均质量分 85
在实战中学会PyTorch
哎呦-_-不错
读书太少而想太多
展开
-
PyTorch学习—23.PyTorch的基本使用
文章目录一、 Basic Grammar and common functions1.Tensors and relation to numpy2. Tensor.view( )3.Tensor.squeeze( ) / Tensor.unsqueeze( )4.Variable( 过去式)5.CUDA SEMANTICS6.Gradient7.Using Gradient二、torch.nn.Module1.nn.Linear( )2.Activation Function3. nn.Conv2d三、Se原创 2021-08-18 17:48:31 · 348 阅读 · 0 评论 -
PyTorch学习—22.PyTorch中常见报错
本部分介绍一些PyTorch中常见的报错信息及其解决方法报错1:ValueError: num_samples should be a positive integer value, but got num_samples=0可能的原因:传入的Dataset中的len(self.data_info)==0,即传入该dataloader的dataset里没有数据解决方法:检查dataset中的路径,路径不对,读取不到数据。检查Dataset的__len__()函数为何输出为零报错2:原创 2021-08-18 10:54:21 · 2207 阅读 · 0 评论 -
PyTorch学习—21.GPU的使用
文章目录引言一、CPU与GPU二、torch.cuda常用方法三、PyTorch中多gpu运算的分发并行机制四、gpu模型加载中的常见报错引言 本节学习如何使用GPU进行加速模型运算,介绍Tensor和Module的to函数使用以及它们之间的差异,同时学习多GPU运算的分发并行机制。一、CPU与GPUCPU(Central Processing Unit, 中央处理器):主要包括控制器和运算器GPU(Graphics Processing Unit, 图形处理器):处理统一的,无依赖的大规模数据原创 2021-08-18 01:48:20 · 1136 阅读 · 1 评论 -
PyTorch学习—20.模型的微调(Finetune)
文章目录引言一、Transfer Learning & Model Finetune二、PyTorch中模型的Finetune引言 本节学习模型微调(Finetune)的方法,以及认识Transfer Learning(迁移学习)与Model Finetune之间的关系。一、Transfer Learning & Model Finetune Transfer Learning(迁移学习):机器学习分支,研究源域(source domain)的知识如何应用到目标域(target原创 2021-08-17 23:36:23 · 1036 阅读 · 0 评论 -
PyTorch学习—19.模型的加载与保存(序列化与反序列化)
文章目录一、序列化与反序列化二、PyTorch中的模型保存与加载方式1.模型保存2. 模型加载三、断点续训练一、序列化与反序列化 训练好的模型存储在内存中,内存中的数据不具备长久性存储的功能,所以,我们需要将模型从内存搬到硬盘中进行长久的存储,以备将来使用。这就是模型的保存与加载,也即序列化与反序列化。序列化指的是将内存中的对象保存到硬盘当中,以二进制序列的形式存储下来。反序列化指的是将硬盘当中的二进制序列反序列化的存储到内存中,得到对象,这样,我们就可以在内存中使用这个模型。序列化与反序列的目的是将原创 2021-08-17 22:25:11 · 2280 阅读 · 1 评论 -
PyTorch学习—18.标准化—Batch Normalization、Layer Normalizatoin、Instance Normalizatoin、Group Normalizatoin
文章目录引言一、Batch Normalization概念1. Batch Normalization的计算方式二、PyTorch中的Batch Normalization三、常见的Normalization方法1.Batch Normalization(BN)2.Layer Normalizatoin(LN)3.Instance Normalizatoin(IN)4.Group Normalizatoin(GN)四、总结引言 本节第一部分介绍深度学习中最重要的一个 Normalizatoin方法—B原创 2021-08-17 18:25:57 · 841 阅读 · 0 评论 -
PyTorch学习—17.正则化之weight_decay与dropout
文章目录一、正则化与偏差-方差分解二、pytorch中的L2正则项—weight decay(权值衰减)一、正则化与偏差-方差分解 正则化方法是机器学习(深度学习)中重要的方法,它目的在于减小方差。下面借助周志华老师西瓜书中的对于方差、偏差的定义来进行理解。 泛化误差可分解为:偏差、方差与噪声之和。偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响噪声则表达了在当前任务上任何学原创 2021-08-17 14:31:59 · 2590 阅读 · 0 评论 -
PyTorch学习—16.PyTorch中hook函数
文章目录一、Hook函数概念二、四种Hook函数介绍1. Tensor.register_hook2. Module.register_forward_hook3.Module.register_forward_pre_hook4. Module.register_backward_hook一、Hook函数概念 Hook函数机制:不改变主体,实现额外功能,像一个挂件一样将功能挂到函数主体上。Hook函数与PyTorch中的动态图运算机制有关,因为在动态图计算,在运算结束后,中间变量是会被释放掉的,例如原创 2021-08-17 00:14:14 · 851 阅读 · 1 评论 -
PyTorch学习—15.PyTorch中TensorBoard的使用
文章目录一、TensorBoard简介与安装1.TensorBoard的运行机制2. TensorBoard安装二、TensorBoard的使用1.SummaryWriter一、TensorBoard简介与安装 TensorBoard是一种可视化工具。在训练过程中,我们要可视化训练过程,用来监控我们当前训练的训练状态。TensorBoard是TensorFlow中强大的可视化工具,但目前PyTorch已支持TensorBoard的使用,支持标量、图像、文本、音频、视频和Eembedding等多种数据可原创 2021-08-16 18:45:41 · 849 阅读 · 0 评论 -
PyTorch学习—14.PyTorch中的学习率调整策略
文章目录一、为什么要调整学习率二、PyTorch的六种学习率调整策略1.StepLR2.MultiStepLR3.ExponentialLR4.CosineAnnealingLR5.ReduceLRonPlateau6.LambdaLR三、学习率调整小结一、为什么要调整学习率 在参数更新的过程中,开始时学习率一般给的比较大,后期学习率会给的小一些。这样才会使得总的损失小一些。二、PyTorch的六种学习率调整策略 PyTorch的六种学习率调整策略都继承于class _LRScheduler(o原创 2021-08-16 15:16:59 · 709 阅读 · 1 评论 -
PyTorch学习—13.优化器optimizer的概念及常用优化器
文章目录引言一、什么是优化器?二、optimizer的基本属性三、optimizer的基本方法四、方法实例1.optimizer.step()2. optimizer.zero_grad()3. optimizer.add_param_group()4. optimizer.state_dict()5. optimizer.load_state_dict()引言 本文学习优化器optimizer的基本属性、基本方法和作用一、什么是优化器? pytorch的优化器:管理并更新模型中可学习参数的值,原创 2021-08-16 00:50:46 · 10456 阅读 · 1 评论 -
PyTorch学习—12.损失函数
文章目录一、损失函数的概念二、损失函数1.nn.CrossEntropyLoss2. nn.NLLLoss3. nn.BCELoss4. nn.BCEWithLogitsLoss5.nn.L1Loss6. nn.MSELoss一、损失函数的概念 损失函数:衡量模型输出与真实标签的差异。损失函数(Loss Function):Loss=????(????^,????)Loss = ????(\hat???? , ????)Loss=f(y^,y)注:损失函数是计算一个样本。代价函数(Cost原创 2021-07-30 18:28:23 · 980 阅读 · 1 评论 -
PyTorch学习—11.权值初始化
文章目录引言梯度消失与爆炸引言 本节讲解权值初始化的必要性,首先分析神经网络中权值的方差过大导致梯度爆炸的原因,然后从方差一致性原则出发分析Xavier初始化方法与Kaiming初始化方法的由来,最后介绍pytorch提供的十种初始化方法。梯度消失与爆炸 恰当的权值初始化可以加速收敛,不当的权值初始化会导致梯度爆炸或梯度消失,最终导致模型无法训练。下面我们了解不恰当的权值初始化是如何导致梯度消失与爆炸的?我们可以知道要避免梯度消失与爆炸,要严格控制网络输出层的输出值的尺度范围,使得每一层的原创 2021-07-18 21:40:26 · 625 阅读 · 2 评论 -
PyTorch学习—10.nn中网络层的具体使用
文章目录引言一、卷积层1. nn.Conv2d2.nn.ConvTranspose2d二、池化层1. nn.MaxPool2d2. nn.AvgPool2d3. nn.MaxUnpool2d三、线性层1. nn.Linear四、激活函数层1. nn.Sigmoid2. nn.tanh3. nn.ReLU理论知识插眼:深度学习TF—7.卷积神经网络CNN引言 前面,我们学习了如何搭建模型,以及在模型搭建过程中用到的容器。这一节,我们介绍网络层的具体使用。一、卷积层 下面介绍几个概念:卷积原创 2021-07-17 22:53:53 · 704 阅读 · 4 评论 -
PyTorch学习—9.模型容器与AlexNet构建
文章目录一、模型容器1. 三种容器的总结二、AlexNet构建一、模型容器 PyTorch提供的模型容器中有三个非常常用的,这三个容器如下:nn.Sequetial功能:按顺序的将一组网络层包装起来其特性总结如下:顺序性:各网络层之间严格按照顺序构建自带forward():自带的forward里,通过for循环依次执行前向传播运算下面使用Sequetial来包装LeNet模型 class LeNetSequential(nn.Module): def __init_原创 2021-07-17 19:48:29 · 264 阅读 · 1 评论 -
PyTorch学习—8.模型创建步骤与nn.Module属性
文章目录引言一、模型的创建1.nn.Module引言 这一节,我们开始讲解模型模块。一、模型的创建 模型的构建有两个要素:下面我们以LeNet模型为例,展示其模型创建过程class LeNet(nn.Module): # 初始化构建子模块 def __init__(self, classes): super(LeNet, self).__init__() self.conv1 = nn.Conv2d(3, 6, 5) self.c原创 2021-07-17 16:14:54 · 782 阅读 · 3 评论 -
PyTorch学习—7.数据预处理模块—transforms
文章目录一、数据预处理transforms模块机制二、二十二种transforms数据预处理方法1.数据标准化2.裁剪一、数据预处理transforms模块机制 torchvision.transforms模块包含了很多图像预处理方法:数据中心化数据标准化缩放裁剪旋转翻转填充噪声添加灰度变换线性变换仿射变换亮度、饱和度及对比度变换这个模块可以进行数据增强与数据预处理,增强模型的泛化能力。数据预处理transforms在数据读取过程中,最后生成数据预处理完的batch da原创 2021-07-16 17:52:26 · 1337 阅读 · 1 评论 -
PyTorch学习—6.PyTorch数据读取机制Dataloader与Dataset
文章目录一、PyTorch数据读取机制Dataloader一、PyTorch数据读取机制Dataloader PyTorch数据读取在Dataloader模块下,Dataloader又可以分为DataSet与Sampler。Sampler模块的功能是生成索引(样本序号);DataSet是依据索引读取Img、Lable。我们主要学习Dataloader与Dataset。 torch.utils.data.DataLoader()DataLoader(dataset, batch_size=1原创 2021-07-14 22:22:25 · 927 阅读 · 1 评论 -
PyTorch学习—5.torch实现逻辑回归
文章目录 逻辑回归是线性的二分类模型。逻辑回归是分析自变量x与因变量v(概率)之间关系的方法。模型表达式为:y=f(WX+b)f(x)=1e−x+1y=f(WX+b)\\f(x)=\frac{1}{e^{-x}+1}y=f(WX+b)f(x)=e−x+11f(x)为Sigmoid函数f(x)为Sigmoid函数f(x)为Sigmoid函数下面展示torch实现逻辑回归的过程。# -*- coding: utf-8 -*-"""# @file name : lesson-05-Logsit原创 2021-07-14 15:53:28 · 1045 阅读 · 2 评论 -
PyTorch学习—4.计算图与动态图机制以及torch.autograd(自动求导系统)
文章目录一、计算图与动态图机制1.静态图与动态图二、torch.autograd—自动求导系统一、计算图与动态图机制 计算图是用来描述运算的有向无环图。计算图有两个主要元素:结点(Node)和边(Edge)。结点表示数据,如向量,矩阵,张量;边表示运算,如加减乘除卷积等。下面用计算图表示:y=(x+w)∗(w+1)y =(x+ w)* (w+1)y=(x+w)∗(w+1)采用计算图描述运算的好处:不仅使得运算更加简洁,而且使得梯度求导更加方便。下面用代码展示上述计算图梯度求导过程:import原创 2021-07-14 15:10:49 · 1332 阅读 · 0 评论 -
PyTorch学习—3.pytorch实现线性回归
线性回归是分析一个变量与另外一(多)个变量之间关系的方法。求解步骤如下:确定模型y=Wx+b y = Wx + by=Wx+b选择损失函数MSE=1m∑i=1m(yi−yi^)2MSE=\frac{1}{m}\sum_{i=1}^{m}(y_i-\hat{y_i})^2MSE=m1i=1∑m(yi−yi^)2求解梯度并更新w、bw=w−LR∗w.gradb=b−LR∗w.gradw=w-LR*w.grad\\b = b-LR * w.gradw=w−LR∗w.gradb=b−L原创 2021-07-14 13:42:33 · 284 阅读 · 0 评论 -
PyTorch学习—2.张量的创建与张量的操作
文章目录一、PyTorch安装二、PyTorch的张量Tensor1.Tensor的概念2. Tensor的创建2.1 直接创建2.2 依据数值创建2.3 依概率分布创建3.张量的操作3.1 张量的拼接3.2 张量的切分3.3 张量的索引3.4 张量的变换3.5 张量的数学运算一、PyTorch安装 https://download.pytorch.org/whl/torch_stable.html下载对应cuda版本或cpu,对应pytorch版本,对应python版本、对应电脑系统的文件,然后在对原创 2021-07-14 00:06:43 · 790 阅读 · 2 评论 -
PyTorch学习—1.深入浅出PyTorch(如何学习PyTorch)
文章目录一、为什么学习PyTorch二、着重学习哪些知识三、如何学习与掌握PyTorch四、PyTorch的学习路径一、为什么学习PyTorch PyTorch日益增长的发展速度与深度学习时代的迫切需要。同时,PyTorch在Google搜索频次与期刊论文的引用频次得到了迅猛的增长。 PyTorch优点如下:上手快:掌握Numpy和基本深度学习概念即可上手代码简洁灵活:用nn.module封装使网络搭建更方便;基于动态图机制,更灵活Debug方便:调试PyTorch就像调试Python原创 2021-07-12 23:46:16 · 1404 阅读 · 4 评论