【深度学习】:《PyTorch入门到项目实战》
文章平均质量分 96
此专栏主要记录如何使用PyTorch实现深度学习笔记,以沐神动手学深度学习内容为基础,介绍如何从最基本的Pytorch应用到构建复杂神经网络模型,尽量坚持每周持续更新,欢迎大家订阅!
JOJO数据科学
某985统计学硕士在读,DiDi->jd->鹅子。十九届华为杯研究生数学建模竞赛全国一等奖,全国大学生数学竞赛二等奖,kaggle银牌等。研究兴趣方向:多模态深度学习、推荐系统、CV等。
展开
-
【深度学习】:《PyTorch入门到项目实战》卷积神经网络2-8:残差神经网络(ResNet)基于Fashion-MNIST数据识别
经过我们之前的介绍,我们发现对卷积神经网络而言,“越深越好”,这是有道理的,因为这样模型的能力应该更强(它们适应任何空间的灵活性都会提高,因为它们有更大的参数空间可以探索)。然而,很多实验发现,在一定深度之后,性能就会下降。 这是 VGG 的瓶颈之一,因为当神经网络中使用特定激活函数的层数越多,损失函数的梯度就会趋近于零,导致梯度消失和梯度爆炸问题,从而使网络难以训练。最简单的解决方案是使用其他激活函数,例如 ReLU,它不会导致导数很小。而**残差神经网络(ResNet)**是另一种有效的解决方案。原创 2023-07-23 22:31:11 · 16431 阅读 · 29 评论 -
【深度学习】:《PyTorch入门到项目实战》卷积神经网络2-7:GoogLeNet(附Pytorch源码)
GoogleNet是由Google团队在2014年提出的深度卷积神经网络架构。它是为解决图像分类任务而设计的,并在ImageNet图像分类挑战赛中取得了很好的成绩。与VGGNet、LeNet、AlexNet有较大不同。在之前我们介绍的架构中VGG大量使用了3×3卷积,AlexNet使用了5×5,而NiN使用了1×1。因此,在构建卷积层时,我们要决定过滤器的大小究竟是1×13×3还是5×5,或者要不要添加池化层。而GoogleNet网络的想法就是我全都要!原创 2023-07-21 08:58:28 · 17945 阅读 · 29 评论 -
【深度学习】:《PyTorch入门到项目实战》卷积神经网络2-6:NiN(Network in Network)和1×1卷积(附Pytorch源码)
我们之前介绍了LeNet,AlexNet,VGG。在我们用卷积层提取特征后,全连接层的参数的参数很大,很占内存。因此,如果可以不使用全连接层,或者说减少全连接层的个数,可以减少参数,减少过拟合。我们介绍的NiN可以提高表达能力:引入了MLP结构,增强了网络的非线性表示能力,有助于更好地捕捉复杂的特征。2. 减少参数:使用1×1卷积核和全局平均池化层,减少了网络中的参数数量,降低了过拟合的风险。3. 提高计算效率:由于减少了参数数量,NiN框架相对于传统的CNN具有更高的计算效率。原创 2023-07-19 08:00:00 · 17241 阅读 · 63 评论 -
【深度学习】:《PyTorch入门到项目实战》卷积神经网络2-5:LeNet、AlexNet、VGG
我们介绍了三种经典的卷积神经网络架构:`LeNet,AlexNet,VGG`。他们的共同思想都是使用卷积层来学习图片的空间信息,提取特征,最后使用全连接层转换到我们要的分类空间。LeNet是首个成功应用在手写数字识别数据集上的深度卷积神经网络,只有2个卷积层、两个池化层和三个全连接层AlexNet在LeNet基础上使用了更多更深的卷积层,在2012年的ImageNet比赛上一战成名,从此引领了深度学习的浪潮VGG在AlexNet的基础上构建了一个非常深的卷积神经网络,通过堆叠多个VGG块实现原创 2023-07-17 07:00:00 · 17837 阅读 · 24 评论 -
【深度学习】:《PyTorch入门到项目实战》卷积神经网络2-4:池化层
在进行卷积层计算时候,有一个问题就是边缘的地方容易忽略,并且对位置是非常敏感的。池化层的做法是为了降低卷积层对位置的敏感性,同时降低对空间降采样表示的敏感性。 因此,除了卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性。与卷积层不同的是,池化层运算是确定性的,我们通常计算池化窗口中所有元素的最大值或平均值。这些操作分别称为*最大池化层*(maximum pooling)和*平均池化层*(average pooling)。先举一个池化层的例子原创 2023-07-12 11:20:53 · 2801 阅读 · 0 评论 -
【深度学习】:《PyTorch入门到项目实战》卷积神经网络2-3:多通道输入和多通道输出
我们之前已经介绍了单通道的卷积是如何进行填充padding、stride的。然而在实际分析中,我们的目标任务往往是多通道的。本文介绍一下如何进行多通道输入和多通道输出。原创 2022-06-16 07:00:00 · 18775 阅读 · 4 评论 -
【深度学习】:《PyTorch入门到项目实战》卷积神经网络2-2:填充(padding)和步幅(stride)
在之前,我们介绍了卷积核对输入特征的影响。通常情况下输出特征会由于卷积核的作用而减小。而深度神经网络中,由于卷积核的作用,会导致我们的输出过早的变的很小,导致我们无法构建深层的神经网络。本章介绍另外两个影响输出形状的方法,扩充(padding)和步幅(stride)。............原创 2022-06-13 07:00:00 · 18753 阅读 · 66 评论 -
【深度学习】:《PyTorch入门到项目实战》卷积神经网络(CNN)2-1:卷积层
之前已经介绍了基本的神经网络知识以及一些处理过拟合欠拟合的概念。现在我们正式进入卷积神经网络的学习。是⼀类强⼤的、为处理图像数据⽽设计的神经⽹络。基于卷积神经⽹络架构的模型在计算机视觉领域中已经占主导地位,当今⼏乎所有的图像识别、⽬标检测或语义分割相关的学术竞赛和商业应⽤都以这种⽅法为基础。对于计算机视觉而言,面临的一个重大挑战就是数据的输入可能会很大。本章主要介绍卷积计算以及如何通过Pytorch构建卷积层.........原创 2022-06-09 22:59:56 · 2245 阅读 · 18 评论 -
【深度学习】:《PyTorch入门到项目实战》基础篇1-10:梯度爆炸、梯度消失、梯度检验
训练神经网络时,尤其是深度神经网络所面临的一个重要问题就是梯度爆炸或梯度消失,也就是我们训练神经网络的时候,导数或梯度有时会变得非常大,或者非常小,甚至于以指数方式变小,这加大了训练的难度。接下来我们介绍一些什么是梯度爆炸和梯度消失。原创 2022-05-31 11:53:36 · 17243 阅读 · 6 评论 -
【深度学习】:《PyTorch入门到项目实战》基础篇1-9:Dropout实现(含源码)
上一章我们介绍了L2正则化和权重衰退,在深度学习中,还有一个很实用的方法——Dropout,能够减少过拟合问题。之前我们介绍了我们的目的是要训练一种泛化的模型,那么就要求模型的鲁棒性较强。一个还不错的尝试是在训练神经网络时,让模型的结果不那么依赖某个神经元,因此在训练神经网络过程中,我们每次迭代将隐藏层的一些神经元随机丢弃掉,这样就不会使得我们的模型太依赖某一个神经元,从而使得我们的模型在未知的数据集上或许会有更好的泛化能力。下面我们具体来看dropout的原理。原创 2022-05-29 14:21:19 · 21111 阅读 · 22 评论 -
【深度学习】:《PyTorch入门到项目实战》基础篇1-8:权重衰退(含源码)
前一节我们描述了过拟合的问题,虽然我们可以通过增加更多的数据来减少过拟合,但是成本较高,有时候并不能满足。因此现在我们来介绍一些正则化模型的方法。在深度学习中,权重衰退是使用较为广泛的一种正则化方法。具体原理如下。原创 2022-05-28 06:00:00 · 15889 阅读 · 3 评论 -
【深度学习】:《PyTorch入门到项目实战》基础篇1-7:模型评估和选择,欠拟合和过拟合(含源码)
机器学习的任务是发现一种泛化的模式,通过训练集发现总体的规律,从而在未知的数据集上也能展现较好的精度。但是如何判断我们的模型不是单纯的记住了数据,而是真的发现了一种规律呢?文章介绍了模型选择的相关概念,例如过拟合和欠拟合线性,并通过实例分析了什么时候出现过拟合和欠拟合。原创 2022-05-26 22:05:57 · 18746 阅读 · 48 评论 -
【深度学习】:《PyTorch入门到项目实战》基础篇1-6:多层感知机(含代码)
上一章中介绍了如何使用softmax回归来进行多分类问题,对于一些基本线性模型基本介绍完毕,下面正式进入深度神经网络的学习。先介绍一个比较基础的模型,多层感知机,它是神经网络的最基础模型。首先我们来看看感知机原创 2022-05-22 18:45:44 · 17143 阅读 · 16 评论 -
【深度学习】:《PyTorch入门到项目实战》基础篇1-5:从0到1实现Softmax回归(基于MNIST手写数字集)
在上一章中,我们介绍了使用pytorch实现logistic回归,softmax回归模型是logistic回归模型在多分类问题上的推广,在多分类问题中,类标签y可以是两个以上的类。本文基于MNIST手写数字数据集来演示如何使用Pytorch实现softmax回归。原创 2022-05-17 20:47:56 · 16714 阅读 · 9 评论 -
【深度学习】:《PyTorch入门到项目实战》基础篇1-4:从0到1实现logistic回归(附Pytorch源码)
`logistic回归`虽然名字是回归,但实际上是一个分类算法,主要处理二分类问题,本文使用Pytorch分别自定义和使用内置函数实现logistic回归原创 2022-05-13 12:12:03 · 18496 阅读 · 44 评论 -
【深度学习】:《PyTorch入门到项目实战》基础篇1-3:简洁代码实现线性神经网络(附Pytorch代码)
在上一节我们学习了如何使用pytorch从零实现一个线性回归模型。包括生成数据集,构建损失函数,==梯度下降==优化求解参数等。和很多其他机器学习框架一样,pytorch中也包含了许多可以自动实现机器学习的包。本章介绍一些如何使用`nn`简便的实现一个线性回归模型原创 2022-05-12 07:00:00 · 16756 阅读 · 28 评论 -
【深度学习】:《PyTorch入门到项目实战》基础篇1-2:从零实现线性回归(附Pytorch代码)
==线性回归==是机器学习中非常常用的模型之一,特别在研究定量数据的问题中,它能分析变量之间的关系,并给出很好的解释。此外,它还是新方法的一个良好起点:许多有趣的统计学习方法可以被视为线性回归的推广或扩展。例如`Lasso回归`,`岭回归`,`logistic regression`,`softmax回归`。本文通过Pytorch实现线性回归原创 2022-05-09 07:00:00 · 18475 阅读 · 20 评论 -
【深度学习】:《PyTorch入门到项目实战》基础篇1-1:张量操作和自动求导
本文介绍机器学习和深度学习的基本构建模块——张量。具体来说,我们将涵盖:张量创建,基本操作和使用pytorch自动求导。原创 2022-05-07 07:00:00 · 17106 阅读 · 33 评论