先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
正文
===============================================================
深度卷积神经网络 [22, 21] 为图像分类带来了一系列突破 [21,50, 40]。 深度网络以端到端的多层方式自然地集成了低/中/高级特征 [50] 和分类器,并且特征的“级别”可以通过堆叠层的数量(深度)来丰富。 最近的证据 [41, 44] 表明网络深度至关重要,在具有挑战性的 ImageNet 数据集 [36] 上的领先结果 [41, 44, 13, 16] 都利用了“非常深”的 [41] 模型,具有 深度为十六 [41] 至三十 [16]。 许多其他重要的视觉识别任务 [8, 12, 7, 32, 27] 也从非常深的模型中受益匪浅。
在深度重要性的驱动下,出现了一个问题:学习更好的网络是否与堆叠更多层一样容易? 回答这个问题的一个障碍是梯度消失/爆炸的臭名昭著的问题 [1, 9],这从一开始就阻碍了收敛。 然而,这个问题已经在很大程度上通过归一化初始化 [23, 9, 37, 13] 和中间归一化层 [16] 得到解决,这使得具有数十层的网络能够开始收敛以使用反向传播进行随机梯度下降 (SGD) [22 ]。
当更深的网络能够开始收敛时,退化问题就暴露出来了:随着网络深度的增加,准确度会饱和(这可能不足为奇)然后迅速下降。 出乎意料的是,这种退化不是由过度拟合引起的,并且向适当深度的模型添加更多层会导致更高的训练误差,如 [11, 42] 中所述,并通过我们的实验彻底验证。 图 1 显示了一个典型的例子。
(训练准确度的下降)表明并非所有系统都同样易于优化。 让我们考虑一个较浅的架构及其在其上添加更多层的更深层次的对应物。 通过构造更深的模型存在一个解决方案:添加的层是身份映射,其他层是从学习的更浅模型中复制的。 这种构造解决方案的存在表明,更深的模型不应产生比其更浅的对应模型更高的训练误差。 但是实验表明,我们现有的求解器无法找到与构建的解决方案相当或更好的解决方案(或无法在可行的时间内找到)。
在本文中,我们通过引入深度残差学习框架来解决退化问题。 我们不是希望每几个堆叠层直接适合所需的底层映射,而是明确让这些层适合残差映射。 正式地,将所需的底层映射表示为 H ( x ) H(x) H(x),我们让堆叠的非线性层拟合 F ( x ) : = H ( x ) − x F(x) := H(x) − x F(x):=H(x)−x 的另一个映射。 原始映射被重铸为 F ( x ) + x F(x)+x F(x)+x。 我们假设优化残差映射比优化原始的、未引用的映射更容易。 在极端情况下,如果恒等映射是最优的,那么将残差推为零比通过一堆非线性层拟合恒等映射更容易。
F ( x ) + x F(x) + x F(x)+x 的公式可以通过具有“快捷连接”的前馈神经网络来实现(图 2)。 快捷连接 [2, 34, 49] 是那些跳过一层或多层的连接。 在我们的例子中,快捷连接只是执行身份映射,它们的输出被添加到堆叠层的输出中(图 2)。 身份快捷方式连接既不增加额外参数,也不增加计算复杂度。 整个网络仍然可以通过带有反向传播的 SGD 进行端到端的训练,并且可以使用通用库(例如 Caffe [19])轻松实现,而无需修改求解器。
我们在 ImageNet [36] 上进行了全面的实验,以展示退化问题并评估我们的方法。 我们表明:1)我们极深的残差网络很容易优化,但是当深度增加时,对应的“普通”网络(简单地堆叠层)表现出更高的训练误差; 2)我们的深度残差网络可以很容易地从大大增加的深度中获得准确度的提升,产生的结果比以前的网络要好得多。
CIFAR-10 数据集 [20] 上也显示了类似的现象,这表明优化困难和我们方法的效果不仅仅类似于特定数据集。 我们在这个超过 100 层的数据集上展示了成功训练的模型,并探索了超过 1000 层的模型。
在 ImageNet 分类数据集 [36] 上,我们通过极深的残差网络获得了出色的结果。 我们的 152 层残差网络是 ImageNet 上有史以来最深的网络,同时其复杂性仍低于 VGG 网络 [41]。 我们的集成在 ImageNet 测试集上的 top-5 错误率为 3.57%,并在 ILSVRC 2015 分类竞赛中获得第一名。 极深的表征在其他识别任务上也具有出色的泛化性能,并带领我们在 ILSVRC & COCO 2015 竞赛中进一步在 ImageNet 检测、ImageNet 定位、COCO 检测和 COCO 分割方面获得第一名。 这个强有力的证据表明残差学习原理是通用的,我们希望它适用于其他视觉和非视觉问题。
=================================================================
残差表示。 在图像识别中,VLAD [18] 是一种由残差向量相对于字典编码的表示,Fisher Vector [30] 可以表示为 VLAD 的概率版本 [18]。 它们都是用于图像检索和分类的强大浅层表示 [4, 48]。 对于矢量量化,编码残差矢量 [17] 被证明比编码原始矢量更有效。
在低级视觉和计算机图形学中,为了求解偏微分方程 (PDE),广泛使用的多重网格方法 [3] 将系统重新表述为多个尺度的子问题,其中每个子问题负责较粗和较细的残差解 规模。 Multigrid 的一种替代方法是分层基础预处理 [45, 46],它依赖于表示两个尺度之间残差向量的变量。 已经表明 [3, 45, 46] 这些求解器的收敛速度比不知道解的残差性质的标准求解器快得多。 这些方法表明,良好的重构或预处理可以简化优化。
快捷连接。导致快捷连接[2,33,48]的实践和理论已经被研究了很长时间。训练多层感知机(MLP)的早期实践是添加一个线性层来连接网络的输入和输出[33,48]。在[43,24]中,一些中间层直接连接到辅助分类器,用于解决梯度消失/爆炸。论文[38,37,31,46]提出了通过快捷连接实现层间响应,梯度和传播误差的方法。在[43]中,一个“inception”层由一个快捷分支和一些更深的分支组成。
和我们同时进行的工作,“highway networks” [41, 42]提出了门功能[15]的快捷连接。这些门是数据相关且有参数的,与我们不具有参数的恒等快捷连接相反。当门控快捷连接“关闭”(接近零)时,高速网络中的层表示非残差函数。相反,我们的公式总是学习残差函数;我们的恒等快捷连接永远不会关闭,所有的信息总是通过,还有额外的残差函数要学习。此外,高速网络还没有证实极度增加的深度(例如,超过100个层)带来的准确性收益。
===================================================================
我们考虑 H ( x ) H(x) H(x)作为几个堆叠层(不必是整个网络)要拟合的基础映射,x表示这些层中第一层的输入。假设多个非线性层可以渐近地近似复杂函数,它等价于假设它们可以渐近地近似残差函数,即 H ( x ) − x H(x)−x H(x)−x(假设输入输出是相同维度)。因此,我们明确让这些层近似参数函数 F ( x ) : = H ( x ) − x F(x):=H(x)−x F(x):=H(x)−x,而不是期望堆叠层近似H(x)。因此原始函数变为 F ( x ) + x F(x)+x F(x)+x。尽管两种形式应该都能渐近地近似要求的函数(如假设),但学习的难易程度可能是不同的。
关于退化问题的反直觉现象激发了这种重构(图1左)。正如我们在引言中讨论的那样,如果添加的层可以被构建为恒等映射,更深模型的训练误差应该不大于它对应的更浅版本。退化问题表明求解器通过多个非线性层来近似恒等映射可能有困难。通过残差学习的重构,如果恒等映射是最优的,求解器可能简单地将多个非线性连接的权重推向零来接近恒等映射。
在实际情况下,恒等映射不太可能是最优的,但是我们的重构可能有助于对问题进行预处理。如果最优函数比零映射更接近于恒等映射,则求解器应该更容易找到关于恒等映射的抖动,而不是将该函数作为新函数来学习。我们通过实验(图7)显示学习的残差函数通常有更小的响应,表明恒等映射提供了合理的预处理。
我们每隔几个堆叠层采用残差学习。构建块如图2所示。在本文中我们考虑构建块正式定义为:
y = F ( x , W i ) + x (1) y=F(x,W_{i})+x\tag{1} y=F(x,Wi)+x(1) {公式1}
x和y是考虑的层的输入和输出向量。函数 F ( x , { W i } ) F(x,\{W_{i}\}) F(x,{Wi})表示要学习的残差映射。图2中的例子有两层, F = W 2 σ ( W 1 x ) F=W_{2}σ(W_{1}x) F=W2σ(W1x)中 σ σ σ表示ReLU[29],为了简化写法忽略偏置项。 F + x F+x F+x操作通过快捷连接和各个元素相加来执行。在相加之后我们采纳了第二种非线性(即 σ ( y ) σ(y) σ(y),看图2)。
方程(1)中的快捷连接既没有引入外部参数又没有增加计算复杂度。这不仅在实践中有吸引力,而且在简单网络和残差网络的比较中也很重要。我们可以公平地比较同时具有相同数量的参数,相同深度,宽度和计算成本的简单/残差网络(除了不可忽略的元素加法之外)。
方程(1)中 x 和 F x和F x和F的维度必须是相等的。如果不是这种情况(例如,当更改输入/输出通道时),我们可以通过快捷连接执行线性投影WsWs来匹配维度:
y = F ( x , { W i } ) + W s x . (2) y=F(x,\{W_{i}\})+W_{s}x.\tag{2} y=F(x,{Wi})+Wsx.(2)
我们也可以使用方程(1)中的方阵 W s W_{s} Ws。但是我们将通过实验表明,恒等映射足以解决退化问题,并且是合算的,因此 W s W_{s} Ws仅在匹配维度时使用。
残差函数FF的形式是可变的。本文中的实验包括有两层或三层(图5)的函数FF,同时可能有更多的层。但如果FF只有一层,方程(1)类似于线性层: y = W 1 x + x y=W_{1}x+x y=W1x+x,我们没有看到优势。
我们还注意到,为了简单起见,尽管上述符号是关于全连接层的,但它们同样适用于卷积层。函数 F ( x , { W i } ) F(x,\{W_{i}\}) F(x,{Wi})可以表示多个卷积层。元素加法在两个特征图上逐通道进行。
我们测试了各种简单/残差网络,并观察到了一致的现象。为了提供讨论的实例,我们描述了ImageNet的两个模型如下。
简单网络。 我们简单网络的基准(图3,中间)主要受到VGG网络[40](图3,左图)的哲学启发。卷积层主要有3×3的滤波器,并遵循两个简单的设计规则:(i)对于相同的输出特征图尺寸,层具有相同数量的滤波器;(ii)如果特征图尺寸减半,则滤波器数量加倍,以便保持每层的时间复杂度。我们通过步长为2的卷积层直接执行下采样。网络以全局平均池化层和具有softmax的1000维全连接层结束。图3(中间)的加权层总数为34。
图 3. ImageNet 的示例网络架构。 左:作为参考的 VGG-19 模型 [41](196 亿 FLOP)。 中间:具有 34 个参数层(36 亿次浮点运算)的普通网络。 右图:具有 34 个参数层(36 亿次浮点运算)的残差网络。 虚线快捷方式增加了维度。 表 1 显示了更多细节和其他变体。
值得注意的是我们的模型与VGG网络(图3左)相比,有更少的滤波器和更低的复杂度。我们的34层基准有36亿FLOP(乘加),仅是VGG-19(196亿FLOP)的18%。
残差网络。 基于上述的简单网络,我们插入快捷连接(图3,右),将网络转换为其对应的残差版本。当输入和输出具有相同的维度时(图3中的实线快捷连接)时,可以直接使用恒等快捷连接(方程(1))。当维度增加(图3中的虚线快捷连接)时,我们考虑两个选项:(A)快捷连接仍然执行恒等映射,额外填充零输入以增加维度。此选项不会引入额外的参数;(B)方程(2)中的投影快捷连接用于匹配维度(由1×1卷积完成)。对于这两个选项,当快捷连接跨越两种尺寸的特征图时,它们执行时步长为2。
我们对 ImageNet 的实现遵循了 [21, 41] 中的做法。 图像被调整大小,其较短的边在 [256;480] 中随机采样以进行缩放 [41]。 224 × 224 224×224 224×224 的裁剪是从图像或其水平翻转中随机采样的,减去每个像素的平均值 [21]。使用了 [21] 中的标准颜色增强。我们在每次卷积之后和激活之前采用批量归一化(BN)[16],遵循 [16]。我们按照 [13] 中的方法初始化权重,并从头开始训练所有普通/残差网络。我们使用小批量大小为 256 的 SGD。学习率从 0.1 开始,并在误差平稳时除以 10,并且模型最多训练 60 × 104 次迭代。我们使用 0.0001 的权重衰减和 0.9 的动量。我们不使用 dropout [14],遵循 [16] 中的做法。在测试中,对于比较研究,我们采用标准的 10 作物测试 [21]。为了获得最佳结果,我们采用 [41,13] 中的完全卷积形式,并在多个尺度上平均分数(调整图像大小,使短边位于 {224;256;384;480;640})。
===============================================================
我们在包含 1000 个类别的 ImageNet 2012 分类数据集 [36] 上评估我们的方法。 模型在 128 万张训练图像上进行训练,并在 5 万张验证图像上进行评估。 我们还获得了测试服务器报告的 100k 测试图像的最终结果。 我们评估 top-1 和 top-5 错误率。
普通网络。 我们首先评估 18 层和 34 层的普通网络。 34层素网如图3(中)。 18层素网也是类似的形式。 有关详细架构,请参见表 1。
表 2 中的结果表明,较深的 34 层素网比较浅的 18 层素网具有更高的验证误差。 为了揭示原因,在图 4(左)中,我们比较了他们在训练过程中的训练/验证错误。 我们观察到了退化问题——34 层普通网络在整个训练过程中具有更高的训练误差,即使 18 层普通网络的解空间是 34 层网络的子空间。
我们认为这种优化困难不太可能是由梯度消失引起的。 这些普通网络使用 BN [16] 进行训练,确保前向传播的信号具有非零方差。 我们还验证了反向传播的梯度表现出 BN 的健康规范。 因此,前向或后向信号都不会消失。 事实上,34层的普通网仍然能够达到有竞争力的精度(表3),这表明求解器在一定程度上是有效的。 我们推测深平原网络的收敛速度可能呈指数级低,这会影响训练误差的减少。 未来将研究这种优化困难的原因。
残差网络。 接下来我们评估 18 层和 34 层残差网络(ResNets)。 基线架构与上述普通网络相同,期望在每对 3×3 过滤器中添加一个快捷连接,如图 3(右)所示。 在第一个比较中(表 2 和图 4 右),我们对所有快捷方式使用恒等映射,对增加维度使用零填充(选项 A)。 因此,与普通对应物相比,它们没有额外的参数。
我们从表 2 和图 4 中得到了三个主要观察结果。 首先,通过残差学习逆转了情况——34 层 ResNet 比 18 层 ResNet 好(2.8%)。 更重要的是,34 层 ResNet 表现出相当低的训练误差,并且可以推广到验证数据。 这表明退化问题在此设置中得到了很好的解决,我们设法从增加的深度中获得了精度增益。
如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费学习大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。
四、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
[外链图片转存中…(img-4RnXplXq-1713437859739)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!