Going deeper with convolutions(InceptionNet)

2023-11-03


                                           进一步深化卷积


Abstract(摘要)

我们提出了一个代号为Inception的深度卷积神经网络架构,该架构负责设置2014年ImageNet大规模视觉识别挑战赛(ILSVRC14)中用于分类和检测的新技术。该体系结构的主要标志是提高了网络内计算资源的利用率。这是通过精心的设计实现的,该设计允许增加网络的深度和宽度,同时保持了计算预算不变。为了优化质量,架构决策基于Hebbian原则和多尺度处理的结构。在我们所提交的ILSVRC14中使用的一个特定的化身称为GoogLeNet,一个22层深的网络,其质量在分类和检测的背景下进行评估。

1.  Introduction

在过去三年中,主要由于深度学习的进步,更具体的是卷积网络,图像识别和物体检测的质量一直在以惊人的速度发展。一个令人鼓舞的消息这个程序的成功不仅仅是强大的硬件,更大的数据集和更大的模型的结果,但主要是新想法,算法和改进的网络架构的结果。没有新的数据被使用,例如,除了针对检测目的的相同竞赛的分类数据集在顶级ILSVRC2014竞赛中。我们向ILSVRC 2014提交的GoogLe net实际上使用的参数比两年前Krizhevsky等的获胜架构少12倍,同时更准确。物体检测的最大收获并非来自单独使用深度网络或更大模型,而是来自深层架构和经典计算机视觉的协同作用,如Girshick等的R-CNN算法。

另一个值得注意的因素是,随着移动和嵌入式计算的不断发展,我们的算法效率-特别是它们的功耗和内存使用-变得越来越重要。值得注意的是,本文提出的深层架构设计的考虑因素包含了这一因素,而不是完全固定咋准确度数字上。对于大多数实验而言,这些模型的设计目的是在推断时间内保持15亿乘法和加法的预算量,这样它们最终不会成为纯碎的学术知识,可以以合理的成本用于现实世界,甚至是大型数据集上。

在本文中,我们希望专注于一个有效的深度神经网络计算机视觉架构,代号为Incep。它由Lin等人的结合着著名的“我们需要更深入”的NIN网络论文中的网络命名。在我们的案例中,“deep”这个词用于两个不同的含义:首先,在这个意义上,我们以“Inception module”的形式引入了一个新的组织层次,从而可以更加直接的增加网络的深度。一般来说,人们可以视Inception 模型为一个逻辑顶点,这是从Arora等的理论工作中获取灵感和指导。该体系结构的优势在ILSVRC 2014分类和检测挑战上进行了实验验证,在该挑战中它明显优于当前的技术水平。

2. Related Word(相关工作)

从LeNet-5开始,卷积网络(CNN)通常具有标准结构-堆叠卷积层(其次是对比度归一化和最大池化),后面跟随这一个或者更多的全连接层。这种基本设计的变体在图像分类文献中很普遍,并在mnist、cifar和最著名的Imagenet分类挑战中产生了迄今为止最好的结果[9, 21]。对于较大的数据集,如ImageNet,最近的趋势是增加层数和层大小,同时使用dropout解决过拟合问题。

尽管担心最大池化层会导致精确的空间信息丢失,但与[9]相同的卷积网络结构也已成功用于定位[9, 14]、目标检测[6, 14, 18, 5]和人体姿势评估[19]。Serre等人受零长类视觉皮层神经科学模型的启发。[15]使用一系列不同尺寸的固定Gabor过滤器,为了除了多个尺度,类似于Inception 模型。然而,与固定的2层深度模型[15]相反,Inception模型中的所有过滤器都被学习。此外,Inception层重复多次,导致在GoogLeNet模型的案例中形成22层深的模型。

NIN是Lin等人提出的一种方法,为了提高神经网络的代表能力。当应用于卷积层时,该方法可被视为额外的1x1卷积层,通常之后是矫正的线性激活。这使得它可以很容易地集成到当前的CNN管道中。我们的架构大量使用了这种方法。然而,在我们的设置中,1x1卷积有双重用途:最重要的是,它们主要用作尺寸缩减模块,以消除计算瓶颈,否则将限制我们网络的大小。这样不仅可以增加网络的深度,还可以增加网络的宽度,而不会造成显著的性能损失。

目前主要的目标检测方法是Girshick等人提出的具有卷积神经网络的区域(R-CNN)。R-CNN将整个检测问题分为两个子问题:首先是一种不可知类别的方式,利用颜色和超像素一致性等的低级提示来处理潜在的对象,然后使用CNN分类器来识别这些位置的对象类别。这种两阶段的方法利用了低水平线索边界框分割的准确性,以及先进CNN强大的分类能力。我们在检测提交中采用了类似的技术,但在这两个阶段都进行了改进,例如针对更高对象边界框调用的多框预测,以及用于更好地分类边界提议的集成方法。

3. Motivation and High Level Considerations(动机和高层次的思考)

提高神经网络性能的最直接方法是增加它们的大小。这包括网络的深度(层数)和宽度(每层的单元数)。这是一种简单、安全的训练高质量模型的方法,特别是考虑到有大量标记的训练数据的可用性。然而,这个简单的解决方案有两个主要缺点。

更大的尺寸通常意味着更多的参数,这使得扩大的网络更容易过度拟合,特别是在训练集中标记的样本数量有限的情况下。这可能成为一个主要的瓶颈,因为创建一个高质量的训练集可能很困难且成本高昂,特别是当需要专业人工评分员来区分像ImageNet(甚至是1000类ILSVRC子集)中那样的细粒度视觉类别时,如图1所示:

                                      图1:来自ILSVRC 2014分类挑战的1000个类别中的两个不同类别。

统一增加网络大小的另一个缺点是计算资源的使用急剧增加。例如,在一个深度视觉网络中,如果两个卷积层被连接,那么它们的滤波器数量的任何均匀增加都会导致计算的二次增加。如果增加的容量使用效率低下(例如,如果大多数权重最终接近于0),则会浪费大量计算。由于在实践中,计算预算是有限的,因此,即使主要目标是提高结果质量,计算资源的有效分配也比不上不加选择地增加规模更为可取。

解决这两个问题的基本方法是最终从完全连接的体系结构转移到稀疏连接的体系结构,甚至是在卷积内部。除了模拟生物系统外,由于Arora等人的开创性工作,这也将具有更坚实的理论基础的优势。他们的主要结果表明,如果数据集的概率分布可以由一个大的、非常稀疏的深度神经网络表示,那么通过分析最后一层激活的相关统计数据和具有高度相关输出的聚类神经元,可以逐层构造出最优的网络拓扑。尽管严格的数学证明需要很强的条件,但事实上,这一陈述与Hebbian原理(联合起来,连接在一起)产生了共鸣,这表明即使在不严格的条件下,基本的观点在实践中也适用。

在缺点方面,当涉及非均匀稀疏数据结构的数值计算时,今天的计算基础设施效率非常低。即使算术运算的数量减少了100倍,查找和缓存未命中的开销也是如此之大,以至于切换到稀疏矩阵也无济于事。利用底层CPU或GPU硬件的微小细节,使用稳定改进、高度调整、允许极快密集矩阵乘法的数字库,进一步扩大了差距。此外,非均匀稀疏模型需要更复杂的工程和计算基础设施。目前大多数面向视觉的机器学习系统仅通过使用卷积来利用空间域的稀疏性。然而,卷积是作为早期层补丁的密集连接的集合实现的。传统上convnets在特征维度中使用随机和稀疏的连接表,自从[11]以来,为了打破对称性和提高学习能力,趋势变回与[9]的完全连接,以便更好的优化并行计算。结构的均匀性和大量的过滤器和更大的批量允许利用高效的密集计算。

这就提出了一个问题:是否有希望进行下一步的中间步骤:一种利用额外稀疏性的体系结构,甚至在过滤级别,正如理论所建议的那样,但是通过利用密集矩阵上的计算来利用我们当前的硬件。大量关于稀疏矩阵计算的文件表明,将稀疏矩阵聚类为相对密集的子矩阵往往能为稀疏矩阵惩罚提供最先进的实际能力。认为在不久的将来,类似的方法将被用于非均匀深度学习体系结构的自动构建似乎并不牵强。

Inception体系结构最初是第一作者的一个案例研究,用于评估复杂网络拓扑结构构建算法的假设输出,该算法试图近似对视觉网络所暗示的稀疏结构,并通过密集的、现成的组件覆盖假设结果。尽管这是一项非常投机的工作,但只有在对拓扑的正确选择进行两次迭代之后,我们才能看到相对于基于[12]的参考体系结构的适度收益。在进一步调整学习率、超参数和改进的训练方法之后,我们确定了产生的Inception体系结构在定位和目标检测环境中特别有用,作为[6]和[5]的基础网络。有趣的是,虽然大多数最初的架构选择都被彻底质疑和测试过,但结果证明它们至少是局部最优的。

但必须谨慎:尽管所提出的体系结构已经成为计算机视觉的一个成功案例,但其质量是否可以归因于导致其构建的指导原则仍存在疑问。确保这一点需要更彻底的分析和验证:例如,如果基于下面描述的原则的自动化工具能够找到类似的,但更适合于视觉网络的拓扑结构。最令人信服的证据是,如果一个自动化系统能够创建网络拓扑结构,从而在其他领域使用相同的算法获得相似的收益,但具有非常不同的全局架构。至少,Inception体系结构的初始成功为这个方向上令人兴奋的未来工作提供了坚实的动力。

4. Architectural Detail(结构的细节)

Inception体系结构的主要思想是,找出卷积视觉网络中的最优局部稀疏结构是如何被现成的密集组建所近似覆盖的。请注意,假设翻译不变性意味着我们的网络将由卷积构建块。我们所需要的就是找到最佳的局部构造,并在空间上重复它。Arora等人提出了一种逐层构造的方法,在这种方法中,应分析最后一层的相关统计数据,并将其聚类为具有高度相关性的单元组。这些簇构成了下一层的单元,并连接到上一层的单元。我们假设来自早期层的每个单元对应于输入图像的某个区域,并且这些单元被分组到滤波器组中。在较低层(靠近输入层)中,相关单元将集中在局部区域。这意味着,我们最终会在一个区域中聚集许多簇,它们可以被下一层1x1卷积的层覆盖,如[12]所示。然而,我们也可以预期,在更大的补丁上,可以被卷积覆盖的空间分布更广的 集群数量会减少,在更大的区域,补丁数量也会减少。为了避免补丁对齐问题,Inception体系结构的当前版本仅限于1x1,3x3和5x5的过滤器大小,但是这个决定更多地基于方便而不是必要性。这也意味着建议的体系结构是所有这些层的组合,其输出滤波器组连接成单个输出向量,形成下一级的输入。此外,由于池化操作对于当前最先进的卷积网络的成功至关重要,因此,它建议在每个这样的阶段添加替代并行池路径也应该具有额外的有益效果(参见图2(a)).

                                                                         图2:Inception 模块

由于这些“Inception Module”相互叠加,它们的输出相关统计数据必然会有所不同:由于更高层次的抽象特征被更高层次捕获,它们的空间集中度预计会降低,这意味着随着我们向更高层次移动,3x3和5x5卷积的比率会增加。

上述模块的一个大问题,至少在这种情况下,即使是适度数量的5x5卷积,在具有大量滤波器的卷积层之上也会非常昂贵。一旦将池化单元添加到混合中,这个问题变得更加明显:它们的输出过滤器数量等于前一阶段中的过滤器数量。池化层的输出和卷积层的输出合并将不可避免。

这导致了所提出体系的第二个想法:明智的应用维度缩减和预测,否则计算需求会增加太多。这是基于嵌入的成功:即使是低维嵌入也可能包含有关相对较大的图像补丁的大量信息。然而,嵌入以密集、压缩的形式表示信息,而压缩的信息很难建模。我们希望在大多数地方保持我们的表示稀疏(根据[2]条件的要求),并且仅当信号必须聚集在一起时才压缩这些信号。也就是说,在昂贵的3x3和5x5卷积之前,使用1x1卷积来计算约简。除了作为减少,它们还包括使用整流线性激活,是他们两用。最终结果如图2(b)所示。

一般来说,Inception网络由上述类型的模块相互堆叠而成的网络,偶尔会由最大池化层,步幅为2,网络分辨率减半。由于技术原因(训练期间的内存效率),开始只在较高的层使用Inception模块,同时保持较低的层以传统的卷积方式使用似乎是有益的。这并非完全必要,只是反应了我们当前实施中的一些基础设施效率低下。

这种体系结构的一个主要好处是,它允许在每个阶段显著增加单元的数量,而不会在计算复杂性上出现不受控制的爆炸。普遍使用的降维允许将最后一级的大量输入滤波器屏蔽到下一层,首先减少它们的尺度,然后用大的补丁尺度将它们卷积起来。这种设计的另一个实际有用的方面是,它符合直觉,即视觉信息应在不同的尺度上进行处理,然后进行聚合,以便下一阶段可以同时从不同的尺度上提取特征。

计算资源的改进使用允许在不陷入计算困难的情况下增加每个阶段的宽度和阶段的数量。利用Inciption体系结构的另一种方法是创建稍差但计算上更适合的版本。我们发现,所有包含的旋钮和杠杆都允许计算资源的控制平衡,这可能导致网络比具有非Inception解雇的类似执行网络快2-3倍,但这需要在这一点上进行仔细的手动设计。

5. GoogLeNet

我们在ILSVRC14竞赛中选择了GoogleNet作为我们团队的名称。这个名字是对Yang LeCuns开创LeNet 5网络的致敬。我们还使用GoogLeNet来指代我们提交的竞赛中使用的Inception架构的特定版本。我们还使用了更深更广的Inception网络,其质量稍差,但将其添加到整体似乎可以略微改善结果。我么省略了该网络的细节,因为我们的实验表明,确切的架构参数的影响相对较小。这里,最成功的特定示例(名为GoogLeNet)在表1中描述,用于演示目的。在我们的整体中,7个模型中的6个使用完全相同的拓扑(使用不同的采样方法寻来你)。

所有卷积,包括Inception模块内的卷积,都使用整流线性激活。我们网络中感受野的大小为224x224,采用RGB颜色通道进行平均减法。“#3x3 reduce"和"# 5x5 reduce"表示在3x3和5x5卷积之前使用的还原层中的1x1滤波器的数量。在池化proj列中内置最大池化之后,可以看到投影中1x1滤波器的数量。所有这些缩小/投影层也使用整流线性激活。

该网络在设计的时候考虑了计算效率和实用性,因此可以在单个设备上运行推理,包括计算资源有限的设备,尤其是内存占用较低的设备。当只计算带参数的层时,网络深度为22层(如果我们也计算池化层,则为27层)。用于网络构建的总层数(独立构建块)大约为100.然而,这个数字取决于所使用的机器学习基础设施系统。在分类器之前使用平均池化是基于[12]的。尽管我么的实现不同于使用一个额外的线性层。这使得我们可以轻松地为其他标签集调整和微调我们的网络,但是主要是方便的,我们不希望它产生重大影响。研究发现,从全连接层移动到平均池化层将top-1的精度提高了约0.6%,但是即使在删除全连接层之后,使用Dropout仍然是必不可少的。

考虑到网络相对较大的深度,以有效的方式将梯度传播回所有层的能力是一个问题。一个有趣的见解是,相对较浅的网络在此任务上的强大表现表明,网络中间层产生的特征应该是非常有区别的。通过添加连接到这些中间层的辅助分类器,我们希望在分类器的较低阶段中鼓励区分,增加传播回来的梯度信号,并提供额外的正则化。这些分类器采用较小的卷积网络形式,至于Inception(4a)和(4d)模块的输出之上。在训练期间,它们的损失会以折扣权重加到网络的总损失中(辅助分类器的损失加权为0.3).在推断时,这些辅助网络被丢弃。

侧面额外网络的确切结构,包括辅助分类器,如下:

  • 具有5x5的滤波器和步长为3的平均池化层,结果是(4a)4x4x512的输出,和(4d)阶段的4x4x528。
  • 具有128个过滤器的1x1卷积,用于降维和整流线性模型。
  • 具有1024个单元的全连接层和整流线性模型。
  • 具有70%消除比例的dropout层
  • 具有softmax损失的线性层用作分类(预测与主分类器相同的1000个类,但在推理时删除)

所得的网络示意图如图3所示:

6. Training Methodology(训练方法)

我们的网络使用DistBelief分布式机器学习系统进行训练,使用适量的模型和数据并行。虽然我们仅使用基于CPU的实现,但粗略的估计表明GoogLeNet网络可以在一周内使用少量高端GPU进行融合训练,主要限制是内存使用。我们的训练使用异步随机梯度下降具有0.9的动量,固定学习率计划(每8个周期将学习率降低4%)。Polyak平均用于创建推理时使用的最终模型。

在接下来的几个月里,我们的图像采样方法已经发生了很大的变化,已经聚合的模型也受到了其他选项的训练,有时会结合改变的超参数,如dropout和学习率,因此很难对训练这些网络的最有效的单一方法给出明确的指导。为了使事情进一步复杂化,一些模型主要在相对较小的裁剪图像上进行训练。另一些则在[8]的启发下在较大的裁剪图像上进行训练。尽管如此,一个在比赛后被证实非常有效的处方包括对图像大小均匀分布在图像区域8%到100%之间,纵横比随机选择咋3/4到4/3之间的各种大小的斑块进行采样,此外,我们还发现,安德鲁·霍华德的光度畸变在一定程度上有助于克服过拟合。此外,我们开始使用随机插值方法(双线性、面积、最近邻和立方、概率相等)来调整相对较晚的尺寸,并结合其他超参数变化,因此我们无法确定最终结果是否受其使用的积极影响。

7. ILSVRC 2014 Classification Challenge Setup and Results(ILSVRC 挑战赛和结果)

ILSVRC 2014分类挑战涉及将图像分类为Imagenet层次结构中的1000个叶节点类别之一的任务。大约有120万张用于训练的图像,50,000张用于验证的图像和100,000张用于测试的图像。每个图像与一个基础事实类别相关联,并且基于最高得分分类来测量性能。通常会汇报两个数字:top-1准确率,他将基础事实与第一个预测类别进行比较,top-5错误率,将基础事实与前5个预测类别进行比较:如果基本事实属于前5名,认为是正确分类的,无论其中的等级如何。挑战使用前5个错误率进行排名。

我们参与了挑战,没有使用外部数据进行训练。除了本文中提到的训练技术之外,我们还在测试期间采用了一套技术来获得更高的性能,我们将在下面详细说明。

  1. 我们独立训练了7个版本的相同的GoogLeNet模型(包括一个更宽版本),并用它们进行了集合预测。这些模型使用相同的初始化(即使具有相同的初始权重,主要是因为疏忽)和学习速率策略进行训练,并且它们在采样方法和它们看到输入图像的随机顺序方面不同。
  2. 在测试过程中,我们采用了比Krizhevsky等人更具有侵略性的裁剪方法。具体来说,我们将图像的大小调整为4个比例,其中较短的尺寸(高度或宽度)分别为256,288,320,352,采取这些调整大小的图像的左,中,右方形(对于肖像图像,我们取顶部、中间和底部的方形)。对于每个正方形,我们取四个角和中心224x224裁剪以及调整为224x224的正方形及其镜像版本。这导致每张图像中有4x3x6x2=114个裁剪图片。安德鲁·霍华德在上一年的比赛中也采用了类似的方法。我们根据经验证明,这种方法的表现略差于建议的方案。我们注意到,在实际应用中,这种积极的裁剪可能是不必要的,因为在出现合理的裁剪数量之后,更多裁剪的效益变得微乎其微(稍后我们有展示).
  3. softmax概率在多个裁剪和多有单个分类器上取平均值以获得最终预测。在我们的实验中,我们分析了验证数据的替代方法,例如裁剪的最大合并和分类器的平均值,但它们导致性能低于简单平均。

在本文的其余部分,我们分析了有助于最终提交的整体表现的多种因素。

我们在挑战赛中的最终提交在验证集和测试数据中获得了6.67%的top-5错误率,在其他参与者中排名第一。与2012年的SuperVision方法相比,这相对减少了56.5%,与前一年的最佳方法(Clarifai)相比减少二零约40%,两者都使用外部数据来训练分类器。下表显示了一些表现最佳的方法的统计数据。

我们还通过改变模型数量和预测下表中图像时使用的作物数量来分析和报告多种测试选择的性能。当我们使用一个模型时,我们选择了验证数据中具有最低top-1错误率的模型。所有数字都在验证集上报告,以便不会过度拟合测试数据的统计数据。

8. ILSVRC 2014 Detection Challenge Setup and Results(ILSVRC 检测挑战和结果)

ILSVRC检测任务是在200个可能的类中,围绕图像中的对象生成边界框。如果检测到的对象与基础真实的类相匹配,并且它们的边界框重叠至少50%(使用JacCard索引),则这些对象算是正确的。外来检测被视为假阳性并受到处罚。与分类任务相反,每个图像可能包含许多对象,也可能不包含任何对象,并且它们的大小会有所不同,使用平均精度报告结果(MAP)。

GoogLeNet所采用的检测方法与r-cnn的方法相似,但在区域分类器中增加了Inception模型。此外,通过将选择性搜索方法与多框预测相结合,改进了区域建议步骤,以便实现更高的对象边界框调用。为了减少误报数量,超像素尺寸增加了2倍。这使得来自选择性搜索的建议减半。我们增加了来自多框的200个区域提案,总共得出了[6]中使用的提案的约60%,同时将覆盖率从92%增加到93%。削减覆盖范围增加的建议数量的总体效果就是单个模型案例的平均精度提高1%。最后,我们在对每个区域进行分类时使用6个ConvNets的集合,从而将结果从40%提高到43.9%。请注意,与R-CNN相反,由于时间不足,我们没有使用边界框回归。

我们首先报告顶部检测结果,并显示自第一版检测任务以来的进度。与2013年的结果相比,精度几乎翻了一番。表现最好的团队都使用卷积网络。我们在表4中报告了官方分数以及每个团队的常用策略,用于对模型进行预训练,该模型随后在检测数据上进行了改进。一些团队还提到了本地化数据的使用。由于本地化任务边界框回归器,就像预训练使用分类一样。GoogleLeNet项目没有使用本地化数据进行预训练。

在表5中,我们仅使用单个模型比较结果。性能最佳的模型有Deep Insight提供,令人惊讶的是,只有3个模型的组合才能提高0.3点,而GoogLeNet通过整体获得更强的结果。

9. Conclusions(总结)

我们的结果似乎产生了一个确凿的证据,即通过容易获得的密集构建块来近似预期的最佳稀疏结构是改善计算机视觉的神经网络的可行方法。与较浅和较宽的网络相比,该方法的优点是在适度增加计算要求时获得显著的质量增益。另请注意,尽管既没有利用上下文也没有执行边界框回归,但我们的检测工作具有竞争力,这一事实进一步证明了Inception架构的优势。虽然预计可以通过类似深度和宽度的更昂贵的网络实现类似的结果质量,但是我们的方法产生了确凿的证据,表明迁移到更稀疏的体系结构一般是可行且有用的想法。这表明未来有望在[2]的基础上以自动化方式创建更稀疏和更精确的结构。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Going deeper with convolutions(InceptionNet) 的相关文章

  • Hive 核心原理(hive-3.1.2)(转载)

    一 Hive 概述 1 1 Hive 是什么 由Facebook开源用于解决海量结构化日志的数据统计 基于Hadoop的一个数据仓库工具 可以将结构化的数据文件映射成一张表 并且提供类SQL的查询功能 Hive仅仅是一个工具 本身不存储数据
  • Linux系统重新生成boot,在fedora 28中重新生成/boot/grub2/grub.cfg,解决grub问题

    在电脑里安装了windows 7和fedora 28做双系统 现在需要删除掉其中的windows 7系统 在格式化硬盘后 还需要更新grub2的启动选项 删除grub启动界面原来的windows 7选项 以下为方法 grub硬盘启动选项是由
  • Modbus TCP读取寄存器数据

    modbus4j读取寄存器数据 ModbusReadUtil读取工具类 package cn sync modbus import org apache log4j Logger import com serotonin modbus4j
  • OS 关于信号量处理中的忙等待问题

    直接看图 下面这张图堪称神奇 问题描述 gt 套娃行为 信号量为了时临界区问题不发生忙等待 使用临界区mutex进行处理 临界区mutux的value需要被P1和P2的wait 指令进行操作 然而能否保证对mutex value进行互斥的操
  • python语法--面向对象基础(19)

    1 初识面向对象 1 1 面向过程 面向过程 根据业务逻辑从上到下写代码 开发过程的思路是将数据与函数按照执行的逻辑顺序组织在一起 数据与函数分开考虑 面向过程基本是由函数组成的 特点 注重步骤与过程 不注重职责分工 如果需求复杂 代码会变
  • Linux系统信息与系统资源

    目录 系统信息 系统标识uname sysinfo 函数 gethostname 函数 sysconf 函数 时间 日期 GMT 时间 UTC 时间 UTC 时间格式 时区 实时时钟RTC 获取时间time gettimeofday 时间转

随机推荐

  • 使用若以系统vue3兼容ie

    兼容IE 太坑了 下载插件 npm install save babel polyfill或者npm i babel polyfill npm i es6 promise或者 npm install es6 promise save dev
  • VRRP简介与配置

    一 VRRP介绍 1 VRRP作用 VRRP协议中文名称虚拟路由冗余协议 应用在路由器上 其作用是某一路由器损坏或链路出现问题立刻切换到另一个路由器上不影响整个网络的运行 更好的保障网络通信 2 VRRP实现原理 VRRP的原理 就是将多个
  • Go语言面试题--进阶提升(1)

    文章目录 1 下面的代码输出什么 2 下面哪一行代码会 panic 请说明原因 3 下面哪一行代码会 panic 请说明原因 4 下面的代码有什么问题 1 下面的代码输出什么 type N int func n N test fmt Pri
  • 奥的斯电梯服务器不显示菜单,奥的斯电梯调试服务器按键介绍.doc

    奥的斯电梯调试服务器按键介绍 doc 由会员分享 可在线阅读 更多相关 奥的斯电梯调试服务器按键介绍 doc 2页珍藏版 请在文库网上搜索 1 奥的斯电梯调试服务器 俗称ST 按键介绍 奥的斯电梯调试服务器 俗称ST 按键介绍 ST的前面板
  • 高阶函数 /内联函数/高阶函数中使用内联函数/闭包函数/内置高阶函数( let、also、with、run、apply )

    一 高阶函数 高阶函数的定义 高阶函数是指将一个函数作为另一个函数的参数或者将一个函数作为另一个函数的返回值 与java不同的是 在Kotlin中增加了一个函数类型的概念 如果我们将这种函数添加到另一个函数的参数声明或返回值声明当中 那么这
  • Mac及Xcode使用相关问题记录

    1 连接samba服务器 方法 finder gt 前往 gt 连接服务器 输入服务器地址smb 169 254 43 44 连接即可 2 xcode设置快捷键 xcode gt Prefrences gt Key Bindings 修改如
  • 程序中有游离的‘\240’ ‘\302’问题的解决方法

    错误 程序中有游离的 240 302 sed i s o240 o302 g test c
  • oracle问题排查

    目录 问题1 ORA 01017 invalid username password logon denied 问题2 链接普通用户报错ORA 01034 ORACLE not available 问题1 ORA 01017 invalid
  • 独自封装windows 10系统详细教程(一)

    目录 作者语录 一 封装前准备工具 二 安装Windows系统 1 创建虚拟机环境 2 更改BIOS启动顺序 3 安装windows系统 作者语录 这篇文章从无到有 从小白到会轻轻松松的事 超级详细的过程 方面你们操作实践 对你们有用的给我
  • 【C/C++】输出格式%d、%6d、%06d、%-6d、%.6f的区分

    C C 输出格式 d 6d 06d 6d 6f的区分 文章目录 C C 输出格式 d 6d 06d 6d 6f的区分 1 d 普通的整数输出 2 6d 整数输出 宽度是6位 不足左边补空格 3 06d 整数输出 宽度是6位 不足左边补数字0
  • Linux的命令——“cd”(内附Linux命令格式,相对路径和绝对路径)

    内容预知 目录 1 Linux的 命令格式书写 1 2 选项的用法 1 3 参数 2 绝对路径与相对路径 3 对终端中默认 root localhost 的认识 4 七种文件类型 5 命令cd 总结 1 Linux的 命令格式书写 1 1
  • S5PV210开发1.0.5----重定位relocate与SDRAM

    目录 1 5 1 关看门狗 1 5 2 设置栈 调用C语言 1 5 3 开iCache 1 5 4 重定位及其代码实战 1 5 5 SDRAM介绍 1 用汇编关看门狗 1 1 什么是看门狗 watch dog timer 定时器 Soc的内
  • nginx resolver

    背景 nginx 配置proxy pass后 访问接口出现no resolver defined to resolve错误 或者接口直接502 404 需要配置 nginx resolver server server name wfk m
  • 使用jetty-maven-plugin插件进行测试

    为了能够使用maven的jetty插件对项目进行测试 需要进行如下操作 1 修改maven配置文件 为了能够在命令行中使用jetty命令 需要修改maven的配置文件settings xml文件 添加如下配置代码 html view pla
  • 关于Incapsula reese84加密的特征研究

    最近研究了下reese84的加密算法 基本上两个参数的加密 utmvc和token 因为nodejs调用会有内存问题 没有采用补环境的方式解决 用python扣的算法 1 utmvc参数的生成是一个ob混淆 ast处理之后调试难度不是很大
  • tensorflow学习笔记(3)——基础(三)——TF训练和变量

    5 tensorflow实现神经网络 1 TF游乐场及神经网络简介 TF游乐场 http playground tensorflow org 略 使用神经网络解决分类问题的主要步骤 1 提取特征向量作为输入 2 定义神经网络结构 得到输出
  • vue3+ts+mock

    项目地址 使用vite创建的vue3 ts项目 集成了mock vuex 项目截图 修改主题 项目克隆及运行 克隆 git clone https gitee com liwensa vue3 tsmock git 进入项目运行 npm i
  • 深度学习中常见的损失函数

    目录 一 损失函数的定义 二 常见的回归损失函数 1 L1 LOSS MAE平均绝对误差 2 L2 LOSS MSE均方差误差 3 Smooth L1 LOSS 4 IOU LOSS及其各种变种 三 常见的分类损失函数 1 交叉熵损失函数
  • Linux删除含有特殊符号文件名的文件

    1 使用 ls i 查处该文件的 inode 号 假设为123 2 使用find命令删除 rm find inum 123 如果是目录 rm rvf find inum 123
  • Going deeper with convolutions(InceptionNet)

    进一步深化卷积 Abstract 摘要 我们提出了一个代号为Inception的深度卷积神经网络架构 该架构负责设置2014年ImageNet大规模视觉识别挑战赛 ILSVRC14 中用于分类和检测的新技术 该体系结构的主要标志是提高了网络