一份完全解读:是什么使神经网络变成图神经网络?

640?wx_fmt=jpeg

图1:来自(Bruna等人,ICLR,2014)的图,描绘了3D领域内的MNIST图像。虽然卷积网络很难对球面数据进行分类,但是图网络可以很自然地处理它。可以把它当做是一个处理工具,但在实际应用程序中会出现许多类似的任务。

来源: AI科技评论

作者:Boris Knyazev

翻译:栗峰

最近,Graph Neural Network(GNN)在很多领域日益普及,包括社交网络、知识图谱、推荐系统甚至于生命科学。GNN在对节点关系建模方面表现十分突出,使得相关的研究领域取得了一定突破。本文将就“为什么图有用”、“为什么很难在图上定义卷积”、“是什么使神经网络成为了图神经网络”这些问题进行讨论。

首先,让我们简单回顾一下什么是图?图 G 是由有向或无向边连接的一组节点(顶点)。节点和边通常是由专家依据知识经验或是对问题的直觉进行设置的。因此,它可以是分子中的原子,社交网络中的用户,交通系统中的城市,团队运动中的运动员,大脑中的神经元,动态物理系统中的交互对象,图像中的像素、图像边界框或是图像分割掩模。

换句话说,在很多情况下,实际上是由你来决定图的节点和边。

这是一种很灵活的数据结构,它囊括了很多其他的数据结构。例如,如果没有边,那么它就会变成一个集合;如果只有“垂直”边,其中任意两个节点都相连,那么我们就有了一个数据树。当然正如我们接下来将要讨论的,这种灵活性有利也有弊。

640?wx_fmt=jpeg图2:两个分别有5和6个节点的无向图,节点的顺序是任意的。


一.为什么图有用

在计算机视觉(CV)和机器学习(ML)的背景下,研究图以及学习当中的模型至少可以给我们带来以下四个好处:

1. 我们可以有机会解决以前解决不了的难题,例如:癌症药物发现(Veselkov等人,Nature,2019年);更好地理解人脑结构(Diez&Sepulre,Nature,2019);能源和环境友好材料的发现(Xie等人,Nature Communications,2019年)。

2. 在大多数CV/ML应用程序中,你可能曾经把它们看成是另一种数据结构,但数据实际上可以被看作是图。将数据表示成图可以提供很大的灵活性,并能在你处理问题的时候为你提供截然不同的视角。例如,你可以直接从“超像素”中学习,而不必从图像像素中学习,在Liang等人2016年在ECCV发表的论文,以及我们即将发表的BMVC论文都可以找到依据。图还允许你对数据施加关系归纳偏差,能使你在处理问题时具备一些先验知识。例如,如果你想对人体的姿势进行推理,你的关系偏差就可以是人体骨架关节的图 (Yen等人,AAAI,2018);或者如果你想对视频进行推理,你的关系偏差可以是移动边框的图 (Wang&Gupta,ECCV,2018)。另一个例子是可以将面部标志表示为图 (Antonakos等人,CVPR,2015),以便对面部特征和身份进行识别。

3. 神经网络本身可以看作是一个图,其中节点是神经元,边是权重,或者节点是层,边表示向前/向后传递的流程(在这种情况下,我们讨论的是在TensorFlow中使用计算图、PyTorch和其他DL框架)。应用程序可以是计算图的优化、神经结构搜索和训练行为分析等。

4. 最后一点,你可以更高效的解决很多问题,在这些问题中数据可以更自然地表示成图。 这包括但又不限于分子和社会网络分类(Knyazev等人,NeurIPS-W,2018),3D Mesh的分类及对应(Fey等人,CVPR 2018),动态交互对象的建模行为(Kipf等人,ICML,2018),视景图建模(详见即将到来的ICCV研讨会)和问答(Narasimhan, NeurIPS,2018),程序综合(Allamanis等人,ICLR,2018),不同的强化学习任务(Bapst等人,ICML,2019)和许多其他问题。

我之前的研究是关于人脸识别和分析面部情绪,所以我很欣赏下面这个图。

640?wx_fmt=jpeg图3:来自(Antonakos等人,CVPR,2015)的图,将脸部标志提取出来。这是一种有趣的方法,但在很多情况下它并不能全面的表示出一个人的面部特征,因此可以通过卷积网络从面部纹理中出捕捉到更多信息。相反,与2D标志相比,基于人脸的3D网格的推理看起来更合理(Ranjan等人,ECCV,2018)。

二.为什么很难在图上定义卷积

要回答这个问题,首先要理清一般使用卷积的动机,然后用图术语描述“图像上的卷积”,这将使“图卷积”的过渡更加流畅。

1. 为什么卷积有用

我们应该理解为什么我们要注意到卷积,以及为什么我们要用它来处理图?与完全连接的神经网络(NNS或MLP)相比,卷积网络(CNN或Convnet)具有一定的优势。

640?wx_fmt=jpeg图4

首先,Convnet利用图像中的一种自然先验,在Bronstein等人在2016年发布的论文中有了更正式的描述,例如:

 (1)平移不变性,如果我们将上面图像上的汽车平移到左/右/上/下,我们仍然能够认识到它是一辆汽车。这是通过在所有位置共享滤波器来实现的,也就是应用卷积。

 (2)局域性,附近的像素是密切相关的,通常表示一些语义概念,如车轮或车窗。这是通过使用相对较大的滤波器来实现的,它可以捕捉到局部空间邻域中的图像特征。

 (3)组合性(或层次结构),图像中较大的区域通常都包含了较小区域的语义父级。例如,汽车是车门、车窗、车轮、驾驶员等的母体,而司机则是头部、手臂等的母体。这是通过叠加卷积层和应用池进行的隐含表达。

其次,卷积层中可训练参数(即滤波器)的数目并不取决于输入维数,因此在技术上我们可以在28×28和512×512图像上训练完全相同的模型。换句话说,模型是参数化的。

理想情况下,我们的目标是开发一个像图神经网络一样灵活的模型,它可以消化和学习任何数据,但同时我们希望通过打开或关闭某些先验来控制(正则)这种灵活性的元素。

所有这些良好的特性使得ConvNet不太容易过度拟合(训练集的高精度和验证/测试集的低精度),在不同的视觉任务中更精确,并且易于扩展到大型图像和数据集。因此,当我们想要解决输入数据是图结构的重要任务时,将这些属性全部转移到图神经网络(GNN)上,以规范它们的灵活性并使它们具有可扩展性。理想情况下,我们的目标是开发一个像GNN一样灵活的模型,可以消化和学习任何数据,但同时我们希望通过打开或关闭某些先验来控制(正则化)这种灵活性的元素。这可以在很多创新的方向上进行研究。然而,想要控制它并且达到一种平衡状态还是很有挑战性的。

2. 根据图进行图像卷积

我们先来考虑一下具有N个节点的无向图G,边E表示节点之间的无向连接。节点和边通常是由你自己设定的。关于图像,我们认为节点应该是像素或超像素(一组形状怪异的像素),边是它们之间的空间距离。例如,左下方的MNIST图像通常表示为28×28维矩阵。我们也可以用一组N=28*28=784像素来表示它。因此,我们的图G应该有N=784个节点,而对于位置较近的像素,边会有一个较大的值(下图中较厚的边),对于较远的像素,则相应的有较小的值(较薄的边)。

640?wx_fmt=jpeg图5:左侧是MNIST数据集的图像,右侧是图的示范。右侧较暗和较大的节点对应较高的像素强度。右图的灵感来自图6(Fey等人,CVPR,2018)

当我们在图像上训练神经网络或Convnet时,潜意识里我们在图上就已经将图像定义成了一个规则的2D网格,如下图所示。这个网格对于所有的训练和测试图像是相同且规则的,也就是说,网格的所有像素都以完全相同的方式在所有图像之间连接(即具有相同的连接数、边缘长度等),所以这个规则的网格图没办法帮我们从一幅图像中分辨出另一幅图像。下面我可视化了一些2D和3D规则网格,其中节点的顺序是彩色编码的。顺便说一句,我是在Python代码中使用了NetworkX来实现的,例如G=networkx.Grid_Graph([4,4])。

640?wx_fmt=jpeg图6:规则的2D和3D网格的例子。图像在2D网格上的表现,视频在3D网格上的表现。

考虑到这是个4×4的规则网格,我们可以简单地看看2D卷积是如何工作的,就可以理解为什么很难将算子转换成图。规则网格上的滤波器具有相同的节点级,但现代卷积网络通常有小滤波器,例如下面的例子中的3×3。这个滤波器有9个值:W₁,W₂,…,W₉,这是由于我们在训练过程中使用了backprop工具进行更新以尽量减少损失和解决下游任务的问题。在下面的例子中,我们只是受到启发将滤波器初始化成了边缘检测器(请参阅这里的其他可能的滤波器):

640?wx_fmt=jpeg图7:在规则2D网格上的3×3滤波器的例子,左侧是任意权值w,右侧是边缘检测器。

当我们进行卷积的时候,要从两个方向滑动这个滤波器:向右和向下,可以从底角开始,重要的是要滑过所有可能的位置。在每个位置,计算网格上值之间的点积(表示为X)和滤波器的值W:X₁W₁+X₂W₂+…+X₉W₉,并将结果存储在输出图像中。在我们的可视化过程中,改变节点在滑动过程中的颜色,以匹配网格中节点的颜色。在常规网格中,我们始终将滤波器的节点与网格的节点相匹配。但这并不适用于图,我将在下面进行解释。

640?wx_fmt=jpeg

图8:规则网格上2D卷积的2个步骤。如果我们不应用填充的话,一共会有4个步骤,因此结果是2×2图像。为了使得到的图像更大,我们需要应用填充。在这里,请参阅关于深度学习中卷积的全面指南。

上面使用的点积就是所谓的“聚合算子”之一。广义上来讲,聚合算子的目标是将数据归纳成简单的形式。在上面的例子中,点积将一个3×3矩阵概括为单个值。另一个例子是在Convnet中进行数据汇总。请记住,诸如最大值或和总计值的位置是不变的,也就是说,即使随机地移动该区域内的所有像素,它们还是会在空间区域内汇总成相同的值。为了说明这一点,点积不是置换不变的,因为在一般情况下:X₁W₁+X₂W₂≠X₂W₁+X₁W₂。

现在,让我们使用MNIST图像,来定义规则网格、滤波器和卷积。考虑到我们的图术语,这个规则的28×28网格将是我们的图G,因此这个网格中的每个单元都是一个节点,节点特征是一个实际的图像X,也就是说每个节点只有一个特征,像素强度从0(黑色)到1(白色)。

640?wx_fmt=jpeg图9:规则28×28网格(左)和该网格上的图像(右)。

接下来,我们要定义滤波器,并让它成为具有 (几乎)任意参数的著名Gabor滤波器。一旦我们有了图像和滤波器,我们就可以通过在图像上滑动滤波器 (在我们的例子中是数字7),并在每一步之后将点积的结果放到输出矩阵中来执行卷积。

640?wx_fmt=jpeg图10:一个28×28滤波器(左)和该滤波器与数字7图像的2D卷积结果。(右)

正如我前面提到的,当你尝试将卷积应用到图时,就会遇到很多问题。

节点是一个集合,该集合的任何排列都不会改变它。因此,人们应用的聚合算子应该是置换不变的.

正如我前面提到的,用于计算每一步卷积的点积对顺序是敏感的。这种灵敏度使我们能够学习与Gabor滤波器相似的边缘检测器,这对于捕获图像特征非常重要。问题在于,在图中没有明确定义的节点顺序,除非你学会给它们排序,或者想出其他一些启发式的方法,能在图与图之间形成规范的顺序。简而言之,节点是一个集合,该集合的任何排列都不会改变它。因此,人们应用的聚合算子应该是置换不变的.最受欢迎的选择是平均值(GCN、Kipf&Wling、ICLR,2017)和对所有相邻数值求和(GIN、XU等人、ICLR,2019),也就是求和或均值池,然后由可训练向量W进行推测,其他聚合器参见Hamilton等人,NIPS, 2017。

640?wx_fmt=jpeg图11:说明节点特征X的“图卷积”,滤波器W以节点1(深蓝色)为中心。

例如,左侧的图,节点1的求和聚合器的输出为X₁=(X₁+X₂+X₃+X₄)W₁,节点2:X₂=(X₁+X₂+X₃+X₅)W₁等,即我们需要对所有节点应用此聚合器。因此,我们将得到具有相同结构的图,节点现在包含了所有邻值的功能。我们可以用同样的方法处理右边的图。

通俗地说,人们称这种平均或求和为“卷积”,因为我们也是从一个节点“滑动”到另一个节点,并在每一步中应用聚合算子。但是,重要的一点,这是一种非常特殊的卷积形式,在这里,滤波器没有方向感。下面我将展示这些滤波器的外观,并给出如何使它们更好的建议。

三.是什么使神经网络成为了图神经网络

你应该知道典型的神经网络是怎么工作的,我们将C维特征X作为网络的输入。用我们正在运行的MNIST举例,X将是我们的C=784维像素特征(即“扁平”图像)。这些特征乘以我们在训练过程中更新的C×F维度权值W,使输出能更接近我们预期的结果。这个结果可以直接用于解决任务(例如,在回归的情况下),也可以进一步反馈到一些非线性(激活),如relu,或其他可微分(或更准确地说,是次微分)函数,从而形成多层网络。一般来说,l 层的输出是:

640?wx_fmt=jpeg图12:全连通层具有可学习权值W。“完全连接”是指X⁽ˡ⁺1 1⁾中的每个输出值取决于或“连接到”所有输入X⁽ˡ⁾。通常情况下,虽然也不总是这样,但我们在输出中添加了一个偏差项。

MNIST中的信号非常强,只要使用上面的公式和交叉熵损失,精准度就可以达到91%以上,而且不需要任何非线性和其他技巧(我是使用了一个略微修改过的PyTorch代码做到了这一点)。这种模型称为多项式(或多类,因为我们有10类数字)Logistic回归。

现在,如何将我们的神经网络转换成图神经网络?正如你已经知道的,GNN背后的核心思想是聚合“邻值”。在这里,重点是要理解,在很多情况下,实际上是你指定了“邻值”。

让我们先来考虑一个简单的情况,当你得到一些图。例如,这可以是5人的社交网络的一个片段(子图),节点之间的边缘表示两个人是否是朋友(或者他们中至少有一个人这样认为)。右边图中的邻接矩阵(通常表示为A)是一种以矩阵形式表示这些边的方法,便于构建我们的深度学习框架。矩阵中的黄色代表边缘,蓝色代表边缘的缺失。 640?wx_fmt=jpeg图13:图及其邻接矩阵的例子。我们在这两种情况下定义的节点顺序都是随机的,而图仍然是相同的。

现在,让我们根据像素的坐标为我们的MNIST示例创建一个邻接矩阵A(文章末尾提供了完整的代码):

640?wx_fmt=jpeg

这是定义视觉任务中邻接矩阵的典型方法但并非是唯一的方法(Defferrard等人,2016年;Bronstein等人,2016年)。这个邻接矩阵是我们的先验,或者说是我们的归纳偏差,我们根据经验施加到模型上,应该连接附近的像素,远程像素不应该有边缘,即使有也应该是非常薄的边缘(小值的边缘)。这是因为我们观察到,在自然图像中的邻近像素通常对应于同一个或多个经常交互的对象(我们前面提到的局部性原则),因此连接这些像素很有意义。

640?wx_fmt=jpeg图14:邻接矩阵(NxN)的所有节点对之间的距离(左)和相邻矩阵(中间) (右) 具有16个相邻像素的子图,其对应于中间的邻接矩阵。既然它是一个完整的子图,它也被称为“集团”。

所以,现在不是只有特征X,还有一些值在[0,1]范围内的奇特的矩阵A。需要注意的是,一旦我们知道输入是一个图,我们就假设在数据集中的所有其他图节点的顺序都是一致的。就图像而言,这意味着假定像素被随机调整。在实践中,想要找到节点的规范顺序是根本无法解决的。尽管对于MNIST来说,我们可以通过假定这个顺序来进行操作(因为数据最初来自一个常规网格),但它不适用于实际的图数据集。

记住,我们的特征矩阵X有?行和C列。因此,就图而言,每一行对应于一个节点,C是节点特征的维度。但现在的问题是,我们不知道节点的顺序,所以我们不知道应该在哪一行中放置特定节点的特征。

如果我们直接忽略这个问题,并像以前一样直接将X提供给MLP,效果与将每个图像随机打乱像素进行重新组合形成的图像相同,令人惊讶的是,神经网络在原则上是可以拟合这样的随机数据的(Zhang等人,ICLR,2017),但是测试性能将接近随机预测。其中一个解决方案是简单地使用前面创建的邻接矩阵A,方法如下: 640?wx_fmt=jpeg图16. 图神经层具有邻接矩阵A,输入或输出特征X,可学习权值W。

我们只需要确保A中的第一行对应于X的第一行中节点的特征。这里,我使用的是?而不是普通的A,因为你想将A规范化,如果?=A,矩阵乘法?X⁽ˡ⁾将等价于邻值的求和特征,这在许多任务中都是有用的(Xu等人,ICLR,2019)。最常见的情况是,你将其规范化,使?X⁽ˡ⁾具有平均邻值的特性,即?=A/ΣᵢAᵢ。规范矩阵A的更好方法可在(Kipf&Wling,ICLR,2017)中找到。

以下是NN和GNN在PyTorch代码方面的比较:

640?wx_fmt=jpeg

这里有完整的PyTorch代码训练上面的两个模型:Pythonmnist_fc.py-model fc训练NN模型;python mnist_fc.py-模型图训练GNN模型。作为一个练习,可以尝试在模型图中随机打乱代码中的像素(不要忘记以同样的方式对A进行调整),并确保它不会影响结果。对-FC模式的模型来说会是可行的吗?

运行代码后,你可能会注意到在分类的准确性上实际上是相同的。那还有什么问题吗?图形网络不应该运行得更好吗?其实在大多数情况下,它们都是可以正常运行,但是在这个例子中出现了特殊情况,因为我们添加的?X⁽ˡ⁾运算符实际上就是一个高斯滤波器:

640?wx_fmt=jpeg图17:图神经网络中滤波器的2D可视化及其对图像的影响。

我们的图神经网络被证明是等同于具有单个高斯滤波器的卷积神经网络,在训练过程中我们从不更新,然后是完全连接的层。这个滤波器基本上显示模糊或是清晰的图像,这并不是一件特别有用的事情(见上图右边)。然而,这是图神经网络的最简单的变体,尽管如此,它在图结构的数据上仍然运行得很好。为了使GNN更好地在规则图上工作,(比如图像),我们需要应用一些技巧。例如,我们可以通过使用如下可微函数来学习预测任意一对像素之间的边,而不是使用预定义的高斯滤波器:

640?wx_fmt=png

为了使GNN更好地在规则图上工作,(比如图像),我们需要应用一些技巧。例如,我们可以通过使用如下可微函数来学习预测任意一对像素之间的边,而不是使用预定义的高斯滤波器。

这一想法类似于动态滤波器网络(Brabander等人,NIP,2016年)、边缘条件图网络(ECC、Simonovsky&Komodakis、CVPR,2017)和(Knyazev等人,NeurIPS-W,2018)。如果想用我们的代码进行尝试,只需要添加-pred_Edge标志,所以完整的指令就是python mnist_fc.py --model graph --pred_edge。下面我展示了预定义的高斯滤波器和学习滤波器的动画。你可能会注意到,我们刚刚学到的滤波器(在中间)看起来很奇怪。这是因为任务相当复杂,我们同时优化了两个模型:预测边缘的模型和预测数字类的模型。为了更好的学习滤波器(如右图所示),我们需要从BMVC论文中应用一些其他技巧,这已经超出了这个教程范畴。

640?wx_fmt=jpeg图18:以红点为中心的2D神经网络滤波器。平均(左92.2 4%),坐标学习(中91.05%),坐标学习(右92.39%)。

生成这些GIF的代码非常简单:

640?wx_fmt=jpeg

我还分享了一个IPython代码笔记,它用Gabor滤波器显示了图像的2D卷积(使用邻接矩阵),而不是使用循环矩阵,循环矩阵通常用于信号处理。

在本教程的下一部分中,我将详解更高级的图层,这些图层可以对图进行更好的筛选。

四、总结

图神经网络是一个非常灵活且有趣的神经网络家族,可以应用于非常复杂的数据。当然,这种灵活性也要付出一定的代价。在GNN的情况下,难以通过将这样的运算符定义为卷积来使模型正规化。但这方面的研究进展很快,相信不久会得到完善的解决,GNN将会在机器学习和计算机视觉领域得到越来越广泛的应用。

via : https://medium.com/@BorisAKnyazev/tutorial-on-graph-neural-networks-for-computer-vision-and-beyond-part-1-3d9fada3b80d


640?wx_fmt=jpeg

《崛起的超级智能》一书主要阐述当今天人类为人工智能的春天到来而兴奋,为人工智能是否超越人类而恐慌的时候,一个更为庞大、远超人类预期的智能形态正在崛起,种种迹象表明50年来,互联网正在从网状结构进化成为类脑模型,数十亿人类智慧与数百亿机器智能通过互联网大脑结构,正在形成自然界前所未有的超级智能形式。这个新的超级智能的崛起正在对人类的科技,产业、经济,军事,国家竞争产生重要而深远的影响。

作者:刘锋   推荐专家:张亚勤、刘慈欣、周鸿祎、王飞跃、约翰、翰兹

未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构。

未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。

  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490337.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国芯片将靠此超车!RISC-V架构神在哪全解构【附下载】

来源: 智东西RISC-V(发音为“risk-five”)是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),简易解释为开源软件运动相对应的一种“开源硬件”。该项目2010年始于加州大学伯克利…

sha256校验工具_使用AIDE工具做入侵检测

AIDE(Advanced Intrusion Detection Environment,高级入侵检测环境)是个入侵检测工具,主要用途是检查文档的完整性。AIDE能够构造一个指定文档的数据库,他使用aide.conf作为其配置文档。AIDE数据库能够保存文档的各种属性,包括:权…

transition过渡的趣玩

本例中将三张图&#xff08;来自网络&#xff09;进行堆叠&#xff0c;鼠标悬停触发。附有源代码 <!DOCTYPE html> <html> <head><title>照片墙</title><meta charset"utf-8"><style type"text/css">.parent{wi…

网上花店系统源码_如何创建一个花店线上商城,可以开发一个微信小程序

说起来花店&#xff0c;相信很多人都去花店买过花&#xff0c;许多花店通常都是个人开的店&#xff0c;一般位置回去选取在人口稠密的地区&#xff0c;以求争取到附近的流量。一般来说&#xff0c;人们会在有人创业或做些开心的事&#xff0c;或者情人节时买鲜花。随着城市的不…

机器的类比

来源&#xff1a;人机与认知实验室如果说机器深度学习有几个重要的边界&#xff1a;数据边界、语义边界、符号边界和因果边界。那么突破这几个边界的口子可能就是——类比&#xff0c;不仅是比例类比&#xff0c;更是跨域机器类比机理的形成可能就是一条前进的光明大道。实质上…

【深度】全球机器人产业趋势及特征分析

来源&#xff1a;工业机器人前沿当前&#xff0c;全球机器人市场规模持续扩大&#xff0c;工业机器人市场增速回落&#xff0c;服务、特种机器人增速稳定。技术创新围绕仿生结构、人工智能和人机协作不断深入&#xff0c;产品在教育陪护、医疗康复、危险环境等领域的应用持续拓…

为什么多个线程不可能同时抢到一把锁_并发基础理论:原子性问题、锁、管程...

我们再回顾一下&#xff0c;原子性问题的根源是CPU切换线程执行指令所导致的&#xff0c;当前一个对共享变量的操作没有完成之前&#xff0c;CPU又切换到另外一个线程来操作对应的共享变量&#xff0c;那么最终产生的结果就可能出现问题。比如如果现在有两个线程都在执行number…

继智能手机之后,增强现实如何再次改变我们与世界的交互方式

来源&#xff1a;资本实验室作为面向未来的新技术&#xff0c;增强现实和虚拟现实在过去几年中的发展可以用不温不火来形容。尽管创业投资和市场规模都在不断扩大&#xff0c;但硬件设备、数据传输速度、沉浸式体验效果、分辨率等因素都制约着该技术的快速发展&#xff0c;而大…

简要说明建设城市大脑三条关键标准规范

作者&#xff1a;刘锋 前言&#xff1a;简要的说&#xff0c;城市大脑不是一个城市级AI信息系统&#xff0c;也不是城市内部的信息化建设&#xff0c;而是互联网结构从网状模型向大脑模型进化时&#xff0c;与城市建设结合的产物&#xff0c;因此建设城市大脑需要拥有三个特征…

git恢复删除前的版本

有时候我们想撤销上一次提交&#xff0c;于是执行git reset --soft HEAD^&#xff0c;这样就成功的删除了你上一次的commit。但有时候发现不小心撤销错了&#xff0c;想把刚刚的撤销给撤回&#xff1a; 方法&#xff1a;首先执行git reflog 这时会显示刚刚各个操作&#xff0…

NLP模型超越人类水平?你可能碰到了大忽悠

大数据文摘出品来源&#xff1a;thegradient编译&#xff1a;张睿毅、武帅、钱天培一个军方训练的神经网络声称可以分类图像中的坦克&#xff0c;但实际上&#xff0c;它只是学会了识别不同的亮度&#xff0c;因为一种类型的坦克仅出现在明亮的图片中&#xff0c;而另一种类型仅…

伸缩杆怎么缩回去图解_没有阳台怎么晾衣服?这10个神器,让家里衣物晾晒更轻松方便...

没有阳台怎么晾衣服&#xff1f;这10个神器&#xff0c;让家里衣物晾晒更轻松方便&#xff01;衣物晾晒是居家生活的必要环节&#xff0c;每个家庭在洗完衣物后都有自己的晾晒方式&#xff0c;但多数家庭会选择在阳台里进行。然而&#xff0c;对于没有阳台的家庭来说&#xff0…

小脑过度活跃,会引起整个大脑的问题

来源&#xff1a;中国生物技术网 9月10日&#xff0c;发表在《Cell Reports》的一项研究中&#xff0c;来自日本京都大学的研究团队发现小脑中的免疫活性诱导动物的神经元过度兴奋&#xff0c;干扰了精神运动行为。位于颅骨下背部的小脑&#xff0c;在调节诸如平衡、运动学习和…

Kubernetes(K8S)快速入门

概述 在本门课程中&#xff0c;我们将会学习K8S一些非常重要和核心概念&#xff0c;已经操作这些核心概念对应组件的相关命令和方式。比如Deploy部署&#xff0c;Pod容器&#xff0c;调度器&#xff0c;Service服务&#xff0c;Node集群节点&#xff0c;Helm包管理器等等。 在…

学会怎样使用Jsp 内置标签、jstl标签库及自定义标签

学习jsp不得不学习jsp标签&#xff0c;一般来说&#xff0c;对于一个jsp开发者&#xff0c;可以理解为jsp页面中出现的java代码越少&#xff0c;对jsp的掌握就越好&#xff0c;而替换掉java代码的重要方式就是使用jsp标签。 jsp标签的分类&#xff1a;1&#xff09;内置标签&am…

没有精准定位,万物还能实现互联吗?

来源&#xff1a;CSDN万物皆备&#xff0c;静待互联。这是一个万物都被赋予「生命」的时代&#xff0c;从人工流水线到工业自动化&#xff1b;从相互独立的设备到实时可监测相连的家居智能化&#xff1b;从汽车的复杂操作到自动驾驶的无人化......探索其真谛&#xff0c;实则科…

log4net保存到数据库系列二:独立配置文件中配置log4net

园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易&#xff0c;从头开始学习log4net数据库日志一、WebConfig中配置log4net 一、WebConfig中配置log4net二、独立配置文件中配置log4net三、代码中xml配置log4net四、完整代码配置log4net五、新增数据库字…

科学界5个终极难题,如果有一个被解决,人类文明将升级

来源&#xff1a;科学杂志 纵观人类发展历史&#xff0c;似乎每到了一定的阶段学术界就会有重大难题出现&#xff0c;例如人类的起源问题。为此有科学家总结出了人类历史上五大终极难题&#xff0c;如果有一个问题被解决的话&#xff0c;那么人类文明会实现质的飞跃。在人类文明…

判断三个数是否能构成三角形_三角形的面积

问题描述&#xff1a;输入三角形三边长a,b,c(保证能构成三角形)&#xff0c;输出三角形面积。输入&#xff1a;一行三个用一个空格隔开的实数a,b,c&#xff0c;表示三角形的三条边长。输出&#xff1a;输出三角形的面积&#xff0c;答案保留四位小数。样例输入3 4 5&#xff0c…

联合国2019数字经济报告

来源 &#xff1a; 数据观近日&#xff0c;联合国发布了《2019年数字经济报告》&#xff08;以下简称《报告》&#xff09;。报告指出&#xff0c;全球数字经济活动及其创造的财富增长迅速&#xff0c;且高度集中在美国和中国。《报告》称&#xff0c;美国和中国目前占有超过75…