论文意义

人工智能领域三位泰斗,总览深度学习理论、模型!展开人工智能壮丽画卷,把握深度学习的前世今生!探究深度学习最重要的算法和理论!

概念

深度学习允许由多个处理层组成的计算模型来学习具有多个抽象级别的数据表示,这些方法极大地改善了语音识别,视觉对象识别,物体检测以及药物发现和基因组学等许多其他领域的最新技术。

原理

深度学习通过使用反向传播算法来指示机器应如何更改其内部参数(用于从前一层中的表示计算每个层中的表示)来发现大数据集中的复杂结构。

应用

深度卷积网络CNN在处理图像,视频,语音和音频方面带来了突破,而循环神经网络则对文本和语音等顺序数据进行了彰显。

1.介绍

机器学习技术为现代社会的许多方面提供了动力:从网络搜索到社交网络上的内容过滤,再到电子商务网站上的推荐,它越来越多地出现在相机和智能手机等消费产品中。机器学习系统用于识别图像中的对象,将语音转录成文本,将新闻条目、帖子或产品与用户的兴趣相匹配,并选择相关的搜索结果。这些应用程序越来越多地使用一类称为深度学习的技术。

传统的机器学习技术在处理原始形式的自然数据方面能力有限。几十年来,构建模式识别或机器学习系统需要仔细的工程设计和大量的领域专业知识来设计一个特征提取器,该提取器将原始数据(如图像的像素值)转换成合适的内部表示或特征向量,系统(通常是分类器)可以从中检测或分类。

表示学习是一组方法,允许机器获得原始数据,并自动发现检测或分类所需的表示。深度学习方法是具有多级表示的学习方法,通过组合简单但非线性的模块来获得,每个模块将表示一个级别从原始输入开始转换为更高、稍微抽象的层次表示。有了足够多的变换组合,就可以学习非常复杂的功能(多层神经网络找到一个函数,能实现很复杂的功能,通过学习,精确的找到)。对于分类任务,更高层次的表示放大了对辨别很重要的输入方面,并抑制了不相关的变化。例如,图像以像素值阵列的形式出现,并且第一层表示中的学习特征通常表示图像中特定方向和位置边缘的存在或不存在。第二层通常通过定位特定的边缘排列来检测图案,而不考虑边缘位置的微小变化。第三层可以将图案组装成更大的组合,对应于熟悉对象的部分,后续层将检测作为这些部分的组合的对象。深度学习的关键方面是这些功能层不是由人类工程师设计的:它们是使用通用学习程序从数据中学习的。

深度学习正在解决多年来一直限制人工智能社区发展的问题。事实证明,它非常擅长发现高维数据中复杂的结构,因此适用于科学、商业和政府的许多领域。除了在图像识别和语音识别方面打破记录之外,它在预测潜在药物分子的活性、分析粒子加速器、重建脑回路以及预测非编码DNA突变对基因表达和疾病的影响方面也超越了其他机器学习技术。也许更令人惊讶的是,深度学习在自然语言理解的各种任务中产生了非常有希望的结果,特别是主题分类、情感分析、问题回答和语言翻译。

我们认为深度学习在不久的将来会有更多的成功,因为它只需要很少的手工工程,所以它可以很容易地利用可用计算和数据量的增加。目前正在为深度神经网络开发的新学习算法和架构会加速这一进程。

2.监督学习

机器学习最常见的形式,都是监督学习。想象一下,我们想要构建一个系统,可以将图像分类为包含,比如说,房子、汽车、人或宠物。我们首先收集了大量的房屋、汽车、人和宠物的图像数据,每一个都标有类别。在训练过程中,机器会显示一幅图像,并以分数向量的形式产生输出,每个类别一个分数。我们希望期望的类别在所有类别中得分最高,但这不太可能在训练前发生。我们计算一个目标函数,该函数测量输出分数和期望分数模式之间的误差(或距离)。然后,机器修改其内部可调参数以减少该误差。这些可调参数,通常称为权重,是实数,可视为定义机器输入输出功能的“旋钮”。在典型的深度学习系统中,可能有数亿个这样的可调权重,以及数亿个用来训练机器的标记示例。(监督学习:我们知道真正的答案,也有数据,就是找到数据和真正答案之间的规律,调节参数用反向传播算法,反向传播算法如何调节参数:梯度下降)

梯度下降:假设在大山某个位置,需要下山,但不知道往哪个反向走,于是决定走一步算一步,走到一个位置,就计算该位置的梯度,沿梯度的负方向,最陡峭的位置向下走一步,继续求解当前梯度的位置,这样我们就走到了山脚(可能是山谷),可能找到的是局部最优解,不一定是全局最优解。

在实践中,大多数从业者使用一种叫做随机梯度下降(SGD)的程序。这包括显示几个示例的输入向量,计算输出和误差,计算这些示例的平均梯度,并相应地调整权重。对训练集中的许多小样本集重复该过程,直到目标函数的平均值停止下降。之所以称之为随机,是因为每一个小例子都给出了所有例子的平均梯度的噪声估计。与复杂得多的优化技术相比,这个简单的过程通常能惊人地快速找到一组好的权重。在训练之后,系统的性能在一组不同的例子上被测量,称为测试集。这用来测试机器的泛化能力——它对训练中从未见过的新输入产生合理答案的能力。

当前机器学习的许多实际应用在手工设计的特征上使用线性分类器。两类线性分类器计算特征向量分量的加权和。如果加权和高于阈值,则输入被分类为属于特定类别。

自20世纪60年代以来,我们就知道线性分类器只能将其输入空间划分为非常简单的区域,即超平面分隔的半空间。但图像和语音识别等问题要求输入-输出功能对输入的不相关变化不敏感,例如物体的位置、方向或照明的变化,或语音的音高或口音的变化,同时对特定的微小变化非常敏感(例如,白狼和一种被称为萨摩耶的狼状白狗之间的差异)。在像素级,两个萨摩耶在不同姿势和不同环境下的图像可能彼此非常不同,而一个萨摩耶和一只狼在相同位置和相似背景下的两个图像可能彼此非常相似。线性分类器,或任何其他运行的“浅”分类器原始像素不可能区分后两者,而将前两者放在同一类别中。这就是为什么浅层分类器需要一个好的特征提取器来解决选择性不变性难题,这个提取器产生的表示对图像中对辨别很重要的方面是选择性的,但对不相关的方面如动物的姿势是不变的。为了使分类器更强大,可以使用通用的非线性特征,如核方法,但是通用特征,如高斯核产生的特征,不允许学习者远离训练示例进行概括。传统的选择是手工设计好的特征提取器,这需要大量的工程技术和领域专业知识。但是如果使用通用的学习程序可以自动学习好的特性,这一切都可以避免。这是深度学习的关键优势。

深度学习架构是简单模块的多层堆栈,所有(或大部分)模块都需要学习,其中许多模块计算非线性输入输出映射。堆栈中的每个模块都转换其输入,以增加表示的选择性和不变性。有了多个非线性层,比如5到20的深度,系统可以实现极其复杂的输入功能,这些功能同时对微小细节敏感——区分萨摩耶和白狼——对背景、姿势、照明和周围物体等不相关的大变化不敏感。

3.反向传播以训练多层架构

从模式识别的早期,研究人员的目标一直是用可训练的多层网络来代替手工设计的特征,但是尽管它很简单,这个解决方案直到20世纪80年代中期才被广泛理解。事实证明,多层架构可以通过简单的随机梯度下降来训练。只要模块是其输入和内部权重的相对平滑的函数,就可以使用反向传播过程来计算梯度。这种想法是可以做到的,而且是可行的,这个想法是在20世纪70年代和1980年代由几个不同的团体独立发现的。

计算目标函数相对于多层堆叠模块权重的梯度的反向传播过程只不过是导数链式法则的实际应用。关键的见解是,目标相对于模块输入的导数(或梯度)可以通过从相对于该模块输出(或后续模块输入)的梯度向后工作来计算(图1)。反向传播方程可以重复应用,通过所有模块传播梯度,从顶部的输出(网络产生其预测)一直到底部(外部输入被馈送)。一旦计算出这些梯度,就可以直接计算每个模块权重的梯度。

深度学习的许多应用使用前馈神经网络架构(图1),该架构学习将固定大小的输入(例如,图像)映射到固定大小的输出(例如,几个类别中每一个的概率)。为了从一层到下一层,一组单元计算它们来自上一层的输入的加权和,并将结果传递给非线性函数。目前最流行的非线性函数是整流线性单元(ReLU),简单来说就是半波整流器f(z) = max(z,0)。在过去的几十年里,神经网络使用更平滑的非线性,例如tanh(z)或1/(1+exp(z)),但ReLU通常在具有许多层的网络中学习得更快,允许在没有无监督预训练的情况下训练深度监督网络。不在输入或输出层的单元通常称为隐藏单元。隐藏层可以被视为以非线性方式扭曲输入,使得类别可以通过最后一层线性分离(图1)。

20世纪90年代末,神经网络和反向传播在很大程度上被机器学习社区所抛弃,并被计算机视觉和语音识别社区所忽视。人们普遍认为,学习有用的、多阶段的、几乎没有先验知识的特征提取器是不可行的。特别是,人们普遍认为简单的梯度下降会陷入较差的局部极小值——权重配置,对于这种配置,任何微小的变化都不会降低平均误差。

实际上,糟糕的局部极小值很少是大网络的问题。不管初始条件如何,系统几乎总是能得到质量非常相似的解。最近的理论和经验结果强烈表明,局部最小值一般来说不是一个严重的问题。相反,地形由大量的鞍点组合而成,其中坡度为零,曲面在大多数维度上向上弯曲。分析似乎表明,只有少数向下弯曲方向的鞍点数量非常多,但几乎所有鞍点都具有非常相似的目标函数值。因此,算法停留在哪个鞍点并不重要。

图1 |多层神经网络和反向传播。

A、多层神经网络(用连点表示)可以扭曲输入空间,使数据类别(例子在红色和蓝色线上)线性可分。请注意,输入空间中的规则网格(显示在左侧)是如何被隐藏单元转换的(显示在中间面板中)。这是一个仅具有两个输入单元、两个隐藏单元和一个输出单元的说明性示例,但是用于对象识别或自然语言处理的网络包含数万或数十万个单元

B、导数的链式法则告诉我们组成两个小的影响(xy上的小变化,yz上的小变化之间的联系)

C、用于计算包含两个隐藏层和一个输出层的计算神经网络中的前向通路等式(正向传播,从输入到输出)

D、用于计算反向传播的方程

链式法则:

4.卷积神经网络

ConvNets设计用于处理多阵列形式的数据,例如由三个2D阵列组成的彩色图像,其中包含三个彩色通道中的像素强度。许多数据形式是多阵列的形式:1D的信号和序列,包括语言;2D用于图像或音频频谱图;和3D用于视频或体积图像。ConvNets背后有四个利用自然信号特性的关键思想:本地连接、共享权重、池化和使用多个层。

ConvNets中的卷积层和汇集层直接受到视觉神经科学中简单细胞和复杂细胞的经典概念的启发,整体架构让人想起视觉皮层腹侧通路中的LGN-V1-V2-V4-信息技术层级。当ConvNet模型和猴子被展示相同的图片时,ConvNet中高级单元的激活解释了猴子下颞叶皮层中160个神经元随机集合的一半方差。ConvNets的根源在于neocognitron,其架构有些类似,但没有反向传播等端到端监督学习算法。一种叫做延时神经网络的原始1D转换网络被用于音素和简单单词的识别。

卷积网络的应用可以追溯到20世纪90年代初,从语音识别的延时神经网络和文档阅读开始。文档阅读系统使用了一个与实现语言约束的概率模型联合训练的ConvNet。到20世纪90年代末,这个系统读取了美国所有支票的10%以上。后来,微软部署了许多基于ConvNet的光学字符识别和手写识别系统。在20世纪90年代早期,ConvNets还被用于自然图像中的目标检测,包括人脸和手以及人脸识别。

图2 |卷积网络应用于萨摩耶犬的图像识别(左下;和RGB(红、绿、蓝)输入,右下角)。每个矩形图像是对应于在每个图像位置检测到的学习特征之一的输出的特征图。信息自下而上流动,低层特征充当边缘检测器,并为输出中的每个图像类别计算分数。

CNN的特点:

一个神经元无法看到整张图片

能够联系到小的区域,并且参数更少(使用卷积核减少连接)

图片压缩像素不改变图片内容

CNN的流程:

1.预处理的数据用于卷积的计算,加上偏置得到局部特征,卷积核的尺度和个数对模型的效果有一定影响(input-> conv)

2.将卷积输出的结果进行非线性激活函数的处理,目前非线性激活函数常用的是Relu(conv-> Relu)

3.激活函数对结果进行池化,取区域的平均值或者最大值保留其显著的特征,来提升我们对畸变的能容能力(Relu-> Pooling)

4.全连接进行输出,我们对最后结果的输出和确认(Pooling->flatten)

5.基于深度卷积网络的图像理解

自2000年代初以来,ConvNets已成功应用于图像中目标和区域的检测、分割和识别。这些都是标记数据相对丰富的任务,例如交通标志识别、生物图像分割,特别是用于连接,以及在自然图像中检测人脸、文本、行人和人体。ConvNets最近的一个主要实际成功是人脸识别。

重要的是,图像可以在像素级别进行标记,这将在技术上有应用,包括自主移动机器人和自动驾驶汽车。像Mobileye和NVIDIA这样的公司正在他们即将推出的汽车视觉系统中使用这种基于ConvNet的方法。其他越来越重要的应用包括自然语言理解和语音识别。

尽管取得了这些成功,但在2012年的ImageNet竞赛之前,ConvNets在很大程度上被主流计算机视觉和机器学习社区所抛弃。当深度卷积网络应用于包含1000个不同类别的大约一百万幅网络图像的数据集时,它们取得了惊人的结果,几乎将最佳竞争方法的错误率减半。这一成功来自于对GPU、ReLUs(一种称为dropout的新正则化技术)以及通过对现有训练样本进行变形来生成更多训练样本的技术的有效利用。这一成功带来了计算机视觉的革命;ConvNets现在是几乎所有识别和检测任务的主要方法并接近人类在某些任务上的表现。最近的一个惊人的演示结合了ConvNets和循环网络模块来生成图像标题(图3)。

最近的ConvNet架构有10到20层ReLUs,上亿个权重,以及数十亿个单元之间的连接。两年前,训练如此大的网络可能需要几周时间,而硬件、软件和算法并行化的进步已经将训练时间缩短到几个小时。基于ConvNet的视觉系统的表现引起了大多数主要科技公司的不满,包括谷歌、脸书、微软、IBM、Twitter和Adobe,以及越来越多的初创公司,以启动研发项目,并部署基于ConvNet的图像理解产品和服务。ConvNets易于在芯片或现场可编程门阵列中实现高效的硬件。NVIDIA、Mobileye、英特尔、高通和三星等多家公司正在开发ConvNet芯片,以实现智能手机、相机、机器人和自动驾驶汽车中的实时视觉应用。

图3 |从图像到文本。

由递归神经网络(RNN)生成的字幕将深度卷积神经网络(CNN)从测试图像中提取的表示作为额外输入,RNN被训练为将图像的高级表示“翻译”成字幕(上图)。当RNN能够将其注意力集中在输入图像的不同位置(中间和底部)在生成每个单词(粗体)时,我们发现它利用这一点来更好地将图像“翻译”成字幕。

6.分布式表示和语言模型

深度学习理论表明,与不使用分布式表示的经典学习算法相比,深度网络具有两种不同的指数优势。这两个优点都来自组合的力量,并且依赖于具有适当组件结构的底层数据生成分布首先,学习分布式表示能够将学习到的特征值推广到训练期间看到的那些值之外的新组合(例如,对于n个二进制特征,2n个组合是可能的)。第二,在一个深网中组成多层表示带来了另一个指数优势(深度指数)的潜力。

多层神经网络的隐藏层学习以一种易于预测目标输出的方式来表示网络的输入。这可以通过训练多层神经网络从局部预测序列中的下一个单词来很好地证明早期单词的上下文。上下文中的每个单词都作为N中的一个向量呈现给网络,也就是说,一个分量的值为1,其余的为0。在第一层,每个单词创建不同的激活模式,或单词向量(图4)。在语言模型中,网络的其他层学习将输入单词向量转换为预测的下一个单词的输出单词向量,该输出单词向量可用于预测词汇表中任何单词作为下一个单词出现的概率

在引入神经语言模型之前,语言统计建模的标准方法没有利用分布式表示:它是基于计数长度达到N(称为N-gram)的短符号序列出现的频率。可能的N-gram的数量在VN的数量级,其中V是词汇量大小,因此考虑超过几个单词的上下文将需要非常大的训练语料库n-gram将每个单词视为一个原子单元,因此它们不能在语义相关的单词序列之间进行归纳,而神经语言模型可以,因为它们将每个单词与实值特征的向量相关联,并且语义相关的单词最终在向量空间中彼此接近(图4)。

图4 |可视化学习的单词向量。左边是为建模语言学习的单词表示的图示,使用t-SNE算法非线性投影到2D用于可视化。右边是由英法编码器-解码器递归神经网络学习的短语的2D表示。人们可以观察到语义相似的单词或单词序列被映射到附近的表示。单词的分布式表示是通过使用反向传播来联合学习每个单词的表示和预测目标量的函数来获得的,所述目标量例如序列中的下一个单词(用于语言建模)或翻译单词的整个序列(用于机器翻译)

理解embedding:

词向量:文本数据转换成数值数据

方法:将文本空间的一个word通过映射或者嵌入到另一个数值向量空间

One hot:词在词典的位置,仅用来表示词的位置,不代表词的意思

Word embedding:向量空间中离的比较近的位置,具有相似的含义

7.循环神经网络

当反向传播首次被引入时,它最令人兴奋的用途是用于训练循环神经网络。对于涉及顺序输入的任务,例如语音和语言,通常最好使用RNNs(图5)。rnn一次处理一个输入序列的一个元素,在它们的隐藏单元中维护一个“状态向量”,该向量隐含地包含序列中所有过去元素的历史信息。当我们考虑隐藏单元在不同离散时间步长的输出时,就好像它们是深层多层网络中不同神经元的输出一样(图5,右),我们就清楚了如何应用反向传播来训练RNNs。

RNN是非常强大的动态系统,但训练它们被证明是有问题的,因为反向传播的梯度在每个时间步长要么增长要么收缩,所以在许多时间步长内,它们通常会爆炸或消失。

RNNs一旦展开(图5),就可以被视为非常深的前馈网络,其中所有层共享相同的权重。虽然他们的主要目的是学习长期依赖性,但理论和经验证据表明,很难学会将信息存储很长时间。

为了纠正这一点,一个想法是用一个显式内存来扩充网络。这种类型的第一个提议是使用特殊隐藏单元的长短期记忆(LSTM)网络,其自然行为是长时间记住输入。一个被称为存储单元的特殊单元就像一个累加器或门控泄漏神经元:它在下一个权重为1的时间步与自己有一个连接,因此它复制自己的实值状态并累积外部信号,但这种自连接被另一个学习决定何时清除存储器内容的单元倍增门控。

LSTM网络随后被证明比传统的无线网络更有效,尤其是当它们每次都有几层时,使得整个语音识别系统能够从声学一直到转录中的字符序列。LSTM网络或相关形式的门控单元目前也用于在机器翻译中表现良好的编码器和解码器网络。

理解RNN:

RNN带有存储功能的神经网络,除了输入以外,还会建立在以前的“记忆”基础上

时间序列:输入根据不同时间点进行变化,隐藏层会保存以前隐藏层的数据,根据时间不断更新和调整,但是参数只有一份,对于时间序列的预测,会有比较好的结果。

内存的要求与输入的规模有关

理解LSTM:

有4个输入(3个门),1个输出

主要解决:长时间序列学习过程中,梯度消失和梯度爆炸问题

能处理更长的时间序列,储存更多隐藏层中相关的数据

8.深度学习的未来

无监督学习在恢复对深度学习的兴趣方面具有催化作用,但后来被监督学习的成功所掩盖。虽然我们在这篇综述中没有关注它,但我们预计无监督学习在更长的时间内会变得更加重要。人类和动物的学习在很大程度上是不受监督的:我们通过观察发现世界的结构,而不是被告知每个物体的名称。

我们预计,未来视觉领域的大部分进展将来自于经过端到端训练的系统,这些系统将ConvNets与使用强化学习来决定看哪里的rnn相结合。深度学习和强化学习相结合的系统还处于起步阶段,但它们在分类任务方面已经超过了被动视觉系统,并在学习玩许多不同的视频游戏方面产生了令人印象深刻的结果。

自然语言理解是深度学习将在未来几年产生巨大影响的另一个领域。我们预计,当使用神经网络理解句子或整个文档的系统学会有选择地一次处理一个部分的策略时,它们会变得更好。

最终,人工智能的重大进步将通过将表示学习与复杂推理相结合的系统来实现。虽然深度学习和简单推理已经用于语音和手写识别很长时间了,但是需要新的范例来通过对大向量的操作来代替基于规则的符号表达式操作。

还有强化学习、GAN、自监督学习

现在数据预测未来数据

部分数据预测整体数据

未来数据预测现在数据

2015年Nature deep learning综述相关推荐

  1. 深度学习还没入门?看看深度学习三巨头的Deep Learning综述(1)

    深度学习还没入门?看看深度学习三巨头的Deep Learning综述(1) 深度学习还没入门?看看深度学习三巨头的Deep Learning综述(2) 深度学习还没入门?看看深度学习三巨头的Deep ...

  2. 深度学习还没入门?看看深度学习三巨头的Deep Learning综述(4)

    深度学习还没入门?看看深度学习三巨头的Deep Learning综述(1) 深度学习还没入门?看看深度学习三巨头的Deep Learning综述(2) 深度学习还没入门?看看深度学习三巨头的Deep ...

  3. 深度学习(Deep Learning)综述

    转载自:http://www.cnblogs.com/ysjxw/archive/2011/10/08/2201819.html 深度学习是ML研究中的一个新的领域,它被引入到ML中使ML更接近于其原 ...

  4. 深度学习(Deep Learning)综述及算法简介

    前言:本文翻译自deeplearning网站,主要综述了一些论文.算法已经工具箱. 引言:神经网络(Neural Network)与支持向量机(Support Vector Machines,SVM) ...

  5. Nature:Deep Learning 深度学习综述

    翻译:https://artificial-intelligence.net.cn/2019/06/05/1559711811/?from=singlemessage&isappinstall ...

  6. 机器学习(Machine Learning)深度学习(Deep Learning)资料(Chapter 2)

    机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2) - tony的专栏 - 博客频道 - CSDN.NET 注:机器学习资料篇目一共 ...

  7. 【深度学习Deep Learning】资料大全

    感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答.求职一站式搞定! 对商业智能BI.大数据分析挖掘.机器学习, ...

  8. 深度学习Deep Learning 资料大全

    转自:http://www.cnblogs.com/charlotte77/ [深度学习Deep Learning]资料大全 最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下: ...

  9. 深度学习(deep learning)--资料大全

    最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下: Free Online Books Deep Learning66 by Yoshua Bengio, Ian Goodfel ...

最新文章

  1. 拆解交易系统--性能优化,安全加固与弹性扩缩容
  2. Android 编译系统分析(一)
  3. gin redis 链接不上_php + redis 高并发商品秒杀 完整业务模拟流程 实现方案
  4. matlab中select,[转载]MATLAB阈值获取函数ddencmp、thselect、wbmpen和w
  5. CentOS下为Web网站性能做测试
  6. Java当中 IO(File) 操作 之 递归打印子孙级目录和文件名称
  7. 今天的圆圆的深圳4j
  8. JSON.parse 和 JSON.stringify
  9. HTTP和HTTPS的区别及HTTPS加密算法
  10. Linux磁盘管理--RAID原理
  11. shell脚本分析 nginx日志访问次数最多及最耗时的页面(慢查询)
  12. 修改pip下载存放和安装位置
  13. emlog微语支持html,Emlog插件能陪聊的Live2d版伊斯特瓦尔看板娘
  14. (三十三)远期利率协议的结算金、价值与定价
  15. python 设置Pyplot的动态rc参数、绘图的填充
  16. 中兴服务器 bmc 登不上
  17. 7-4 最短路径之Dijkstra(朴素dijkstra打印路径)
  18. 基于arduino的幻尔总线机器人
  19. android n miui 4s,小米Android 7.0升级:包含小米4c/4s/小米Note
  20. 机器人开发--pgv 视觉引导(Position Guided Vision)

热门文章

  1. CSS3 + JS 数字滚动效果
  2. 【Python百日基础系列】Day12 - Pandas 数据读取与存储
  3. 【校招VIP】“推推”Java项目课程:产品原型:产品需求要点分析
  4. 固态硬盘装完无法启动备忘
  5. DWORD 代表 unsigned long
  6. SmartRefreshLayout刷新
  7. C#筛选器类ActionFilterAttribute
  8. 安卓基础学习 Day 21|Fragment(碎片)
  9. 【springboot系列】这样优化Spring Boot,启动速度快到飞起!
  10. 北邮2018计算机院考研复试机试上机题解+结果统计