DO WE NEED ANISOTROPIC GRAPH NEURALNETWORKS?(EGConv)

摘要

图神经网络(GNN)社区的常识表明,各向异性模型(在节点之间发送的消息是源节点和目标节点的函数)需要达到最先进的性能。迄今为止的基准测试已经证明,这些模型比可比的各向同性模型性能更好,在这些模型中,消息只是源节点的一个功能。在我们工作中,我们提供了挑战这种说法的经验证据:我们提出了一个各向同性的GNN,我们称之为高效图卷积(EGC),通过使用空间变化的自适应滤波器,始终优于可比的各向异性模型,包括流行的GAT或PNA架构。除了为GNN社区提出重要问题外,我们的工作对效率具有重要的现实意义。EGC实现了更高的模型精度,具有更低的内存消耗和延迟,以及适合加速器实现的特性,同时是现有架构的临时替代品。作为一个各向同性模型,它需要的内存与图中顶点的数量( O ( V ) O(V) O(V))成正比;相反,各向异性模型需要的内存与边的数量( O ( E ) O(E) O(E))成正比。我们证明了EGC在6个大型和不同的基准数据集上优于现有的方法,并通过讨论我们的工作为社区未来提出的问题来总结。

1. 引言

图神经网络(GNNs)已经成为一种在任意结构数据上建立模型的有效方法。例如,它们已经成功地应用于计算机视觉任务:GNNs可以提供高性能的点云数据(Qi等人,2017年)和跨图像的特征匹配(Sarlin等人,2020年)。最近的工作也表明,它们可以应用于物理模拟(Pfaff等人,2020年;Sanchez-Gonzalez等人,2020年)。代码分析是GNNs获得成功的另一个应用领域(Guo等人,2020;Allamanis等人,2017)。

近年来,研究界已经投入了大量的精力来构建表达能力更强、性能更好的模型来处理图表。对GNN模型进行基准测试的努力,如Open Graph benchmark (Hu等人,2020年)或Dwivedi等人(2020年)的工作,都试图更严格地量化不同拟议架构的相对性能。一个常见的结论——Dwivedi等人(2020)明确地指出——各向异性模型是性能最好的模型,其中节点之间发送的消息是源节点和目标节点的函数。通过比较,各向同性模型(消息仅是源节点的函数)的精度较低,即使它们比可比的各向异性模型具有效率优势。直觉上,这个结论是令人满意的:各向异性模型天生更具有表现力,因此我们会期望它们在大多数情况下表现得更好。我们的工作提供了一种名为高效图卷积(EGC)的各向同性模型,对这一智慧提出了惊人的挑战,该模型优于可比的各向异性方法,包括流行的GAT (Veliˇckovíc等人,2018)和PNA (Corso等人,2020)架构。

除了为社区提供一个令人惊讶的实证结果之外,我们的工作对效率有重大的实际影响,如图1所示。由于EGC是一个具有较高精度的各向同性模型,我们可以在不降低模型精度的情况下利用各向同性模型所带来的效率效益。近年来,我们已经看到最先进的GNN架构的内存消耗和延迟增加到O(E),这是由于最先进的模型结合了各向异性机制来提高精度。EGC将复杂性降低到O(V),带来了实际的好处,尽管精确的好处取决于模型所应用的图形的拓扑。读者应该注意到,我们的方法还可以与其他方法相结合,以提高gnn的效率。例如,通用的软硬件协同设计技术包括量化和修剪(Sze et al., 2020)可以与这项工作相结合,该工作提出了一种通过改进底层架构设计来提高模型效率的正交方法。我们还注意到,我们的方法可以与图形采样技术相结合(Zeng等人,2019;Hamilton等人,2017;Chen等人,2018a)在具有数百万或数十亿节点的图上训练时进一步提高可伸缩性。

许多GNN架构(例如GAT (Veliˇckovíc等人,2018年),PNA (Corso等人,2020年))纳入了复杂的消息功能,以提高准确性(左)。这是有问题的,因为我们必须具体化消息,导致O(E)内存消耗和OPs来计算消息;这些数据流模式也很难在硬件级别进行优化。这项工作表明,我们可以使用简单的消息函数,只需要 O ( V ) O(V) O(V)内存消耗(正确),并比现有的GNNs提高性能。

本文贡献

(1)我们提出了一种新的GNN结构——高效图卷积(EGC),并提供了空间和光谱解释。

(2)我们通过6个大型图数据集对我们的架构进行了严格的评估,涵盖了转导性和归纳性用例,并证明EGC始终能获得比强基线更好的结果。

(3)我们提供了几个消融研究来激励模型中超参数的选择。

(4)我们证明了我们的模型同时获得了更好的参数效率,延迟和内存消耗比竞争的方法。

2. 背景

2.1 深度学习的软硬件协同设计

在引言中已经描述了几种流行的协同设计方法:量化、修剪和精心的架构设计都是cnn和变形金刚的常见方法(Vaswani et al., 2017)。除了能够从通用处理器(如cpu和gpu)中获得更好的性能外,这些技术对于最大化专业加速器的回报也是必不可少的;虽然随着时间的推移,可能会由于CMOS技术的改进而提高性能,但进一步的改进在算法层面上没有创新就会停滞不前(Fuchs & Wentzlaff, 2019)。作为神经网络架构设计师,我们不能简单地依靠硬件上的改进来使我们的建议在现实世界的部署中可行。

2.2 GNN

许多GNN架构可以看作是CNN架构对不规则域的概括:在CNNs中,每个节点的表示都是基于局部邻域,使用跨图共享的参数来构建的。GNNs的不同之处在于我们不能对邻域的大小或排序做出假设。用于定义GNNs的一个常见框架是消息传递神经网络(MPNN)范式(Gilmer等人,2017)。图 G = ( V , E ) G = (V, E) G=(V,E)具有节点特征 X ∈ R N × F X∈\R^{N×F} X∈RN×F,邻接矩阵 A ∈ R N × N A∈\R^{N×N} A∈RN×N和可选的d维边特征 E ∈ R E × D E∈\R^{E×D} E∈RE×D。我们定义了一个计算从节点 u 到 v u到v u到v的信息的函数 φ φ φ,一个可微且置换不变的聚合器 ⊕ ⊕ ⊕,以及一个更新函数 γ γ γ来计算 l + 1 l+1 l+1层的表示: h l + 1 ( i ) = γ ( h l ( i ) , ⊕ j ∈ N ( i ) [ φ ( h l ( i ) , h l ( j ) , e i j ) ] ) h^{(i)}_{l+1} = γ(h^{(i)}_l,⊕_{j∈N(i)}[φ(h^{(i)}_l, h^{(j)}_l, e_{ij})]) hl+1(i)​=γ(hl(i)​,⊕j∈N(i)​[φ(hl(i)​,hl(j)​,eij​)])。基线架构的传播规则在表1中提供,在附录中的表5中提供了进一步的细节。

在5个数据集上运行参数标准化模型的结果(平均值±标准差)。每个数据集选择的特定聚合器的细节和进一步的实验细节可以在补充材料中找到。结果显示∗在11GB 1080Ti和2080Ti gpu上耗尽内存。EGC在其中4项任务上获得最佳表现,并始终保持较大的边际。

我们在这项工作中比较了通用GNN架构的传播规则;规则使用节点式提供。我们对比了流行的架构,以及最近实现了最先进性能的方案PNA。

Relative Expressivity of GNNs

研究领域的共识是,各向同性GNNs的表达能力低于各向异性GNNs;从经验上讲,这得到了基准测试的很好支持。Brody等人(2022)证明GAT模型比各向同性模型具有更严格的表达能力。Bronstein等人(2021)还讨论了不同类别的GNN层的相对表达能力,并认为卷积(也称为各向同性)模型非常适合在输入图中利用同质性(同质性是指如果两个节点是连通的,那么它们之间的相似性很高)的问题。他们进一步认为,注意(或完整消息传递)模型适合处理异类问题,但他们承认,这些体系结构的资源消耗和可训练性可能是禁止的——特别是在完整消息传递的情况下。

Scaling and Deploying GNNs

虽然GNNs在许多领域都取得了成功,但在扩展和部署它们方面仍存在挑战。图采样是一种针对内存容量不足的大型图或模型的缩放训练方法。不是在整个图上进行训练,而是每次迭代都在一个抽样的子图上运行;方法的不同在于它们是否按节点取样(Hamilton et al., 2017),按层取样(Chen et al., 2018a;黄等人,2018),或子图(Zeng等人,2019;Chiang et al., 2019)。另外,分布式GNN训练系统已被提出(Jia等人,2020年),以扩展训练,超越单一加速器的限制。一些作品提出了旨在适应缩放的架构:图增强mlp,如SIGN (Rossi等人,2020年),被明确设计为一个浅层架构,因为所有图操作都是作为预处理步骤完成的。其他工作包括应用神经体系结构搜索(NAS)来安排现有的GNN层(Zhao等人,2020年),或为GNN构建量化技术(Tailor等人,2021年)。最后,最近的一项工作表明,对GNN使用高效的可逆残差(Gomez et al., 2017) (Li et al., 2021)使我们能够训练比以前更深更大的GNN模型,从而提高最先进的精度。

为什么现有的方法还不够?

值得注意的是,这些方法中的许多都有重大的局限性,我们的目标是在我们的工作中解决这些问题。抽样方法在处理许多问题时往往是无效的,这些问题涉及到对不可见图形的模型泛化——这是GNNs的一个常见用例。我们评估了各种抽样方法,并观察到即使是适度的抽样水平(对内存或延迟几乎没有好处)也会导致模型性能显著下降。此外,这些方法不会加速底层GNN,因此它们可能不会对推断延迟提供任何总体好处。也没有证据表明,我们意识到图增强MLPs在泛化到不可见的图时表现良好;事实上,它们理论上的表达能力低于标准GNNs(Chen等人,2021年)。我们还调查了这种设置,并发现这些方法不能提供与最先进的方法相媲美的准确性。附录B提供了实验细节和结果,以及对现有工作局限性的进一步讨论。

总之,我们在高效GNN架构设计方面的工作引起了社区的兴趣,原因有两个:首先,它提出了关于常见假设的问题,以及我们如何设计和评估GNN模型;其次,我们的工作可能使我们能够进一步缩放我们的模型,有可能提高准确性。此外,对于那些需要泛化到看不见的图的任务,如代码分析或点云处理,我们减少了内存消耗和延迟,从而使我们能够将模型部署到比以前更多资源受限的设备上。我们注意到,在适当的情况下,高效的架构设计可以与其他方法(包括抽样、量化和修剪)有效地结合在一起。

3. EFFICIENT GRAPH CONVOLUTION (EGC)

在本节中,我们将描述我们的方法,并将理论分析推迟到下一节。我们提出了两个版本:使用单一聚合器的 E G C − S ( i n g l e ) EGC-S(ingle) EGC−S(ingle),以及通过合并多个聚合器来推广我们的方法的 E G C − M ( u l t i ) EGC-M(ulti) EGC−M(ulti)。我们的方法如图2所示。

EGC-S层的可视化表示。在这个可视化中,我们有3个基础过滤器(即b = 3),它们使用每个节点的权重w进行组合。这个简化的图没有显示EGC-M使用的头部或多个聚合器的使用情况。

3.1 体系结构描述

对于输入维度为 F F F、输出维度为 F ′ F^{'} F′的层,我们使用 B B B基权重 Θ b ∈ R F ′ × F Θ_b∈R^{F' ×F} Θb​∈RF′×F。我们通过计算每个节点的组合加权系数 w ( i ) ∈ R B w^{(i)}∈\R^B w(i)∈RB来计算节点 i i i的输出,并使用不同的基权值 Θ b Θ_b Θb​对每个聚合的结果进行加权。我们计算 w ( i ) = Φ x ( i ) + b w^{(i)}= Φx^{(i)} + b w(i)=Φx(i)+b,其中 Φ ∈ R B × F Φ∈\R^{B×F} Φ∈RB×F和 b ∈ R B b∈\R^B b∈RB是与计算组合加权系数相关的权重和偏差参数。节点 i i i的输出分三步计算。首先,我们对每一组基本权重 Θ b Θ_b Θb​执行聚合。其次,我们计算每个节点 i i i的加权系数 w ( i ) = Φ x ( i ) + b ∈ R B w(i) = Φx^{(i)} + b∈\R^B w(i)=Φx(i)+b∈RB,其中 Φ ∈ R B × F 和 b ∈ R B Φ∈\R^{B×F}和b∈\R^B Φ∈RB×F和b∈RB为计算组合加权系数的权重和偏差参数。最后,节点 i i i的层输出是聚合输出的加权组合:

其中 α ( i , j ) α(i, j) α(i,j)是节点 i i i和 j j j的某个函数, N ( i ) N(i) N(i)表示 i i i的内邻居。GAT (Veliˇckovíc et al., 2018)开创的一种提高表征能力的流行方法是使用两个节点表示的学习函数来表示 α α α。虽然这样可以实现邻居的各向异性处理,并可以提高性能,但它必然会导致 O ( ∣ E ∣ ) O(|E|) O(∣E∣)的内存消耗,因为消息需要显式物化,并使加速器的硬件实现复杂化。如果我们为 α α α选择一个不是节点表示的函数的表示——例如 α ( i , j ) = 1 α(i, j) = 1 α(i,j)=1来恢复GIN (Xu等人,2019)使用的添加聚合器,或 α ( i , j ) = 1 / d e g ( i ) d e g ( j ) α(i, j) = 1/\sqrt {deg(i)deg(j)} α(i,j)=1/deg(i)deg(j) ​来恢复GCN使用的对称归一化(Kipf & Welling, 2017)——那么我们可以使用稀疏矩阵乘法(SpMM)实现我们的消息传播阶段,并避免显式地实现每个消息,即使是反向传播中。在这项工作中,我们假设 α ( i , j ) α(i,j) α(i,j)是对称归一化GCN使用,除非另有说明;我们使用这种规范化来提供跨各种任务的强结果;更正式的理由见第4.2节。

Adding Heads as a Regularizer

我们可以通过添加头部来扩展我们的层,就像在GAT或者Transformers等架构中使用的那样(Vaswani et al., 2017)。这些人头共享基本权重,但每个人头应用不同的权重系数。我们发现,当头(H)的数量大于B时,添加这种自由度有助于正规化,因为基地不鼓励专门化(见第5.3节),而不需要将额外的损失条款集成到优化中——因此不需要对下游用户的代码进行更改。为了规范化输出维数,我们将基权重矩阵维数改为 F ’ H × F \frac {F’}{H} ×F HF’​×F。以 ‖ ‖ ‖为串联操作符,使用对称归一化显式,得到EGC-S层:

EGC通过组合基矩阵来工作。该思想在R-GCN (Schlichtkrull等人,2018)中提出,用于处理多种边缘类型;Xu等人(2021)可以被视为这种点云分析方法的推广。在这项工作中,我们解决了与这些工作不同的问题:我们感兴趣的是设计高效的架构,而不是处理边缘信息的新方法。

3.2 提高表征能力

Corso等人(2020)最近的研究表明,只使用单一的聚合器是次优的:相反,最好结合几个不同的聚合器。在公式(2)中,我们只使用对称归一化来定义我们的层。为了提高性能,我们建议对 Θ b x ( j ) Θ_bx^{(j)} Θb​x(j)计算的表示应用不同的聚合器。聚合器的选择可以包括总和聚合器的不同变体,如平均值或未加权相加,而不是上一节提出的对称标准化。或者,我们可以使用不基于求和的聚合器,如stddev、min或max。也可以使用Beaini等人(2021)提出的定向聚合器,但这种增强与本研究是正交的。如果我们有一组聚合器 A \mathcal A A,我们可以扩展式(2),得到我们的EGC-M层:

其中 ⊕ ⊕ ⊕是一个聚合器。通过这个公式,我们重用了之前计算过的相同消息——但是我们同时对它们应用了几个聚合函数。

Aggregator Fusion

增加更多的聚合器似乎会导致延迟和内存消耗线性增长。然而,实际情况并非如此。首先,由于稀疏操作在实践中通常是内存绑定的,我们可以将额外的聚合器应用于已经从内存到达的数据,而不会造成延迟损失。EGC还可以在推断时高效地内联节点加权操作,从而导致相对较小的内存消耗开销。等效优化更难成功应用于PNA,因为在聚合过程中,每个节点必须执行大量操作,这是由于在所有结果连接和应用转换之前,对每个聚合应用伸缩函数造成的。更多的细节,包括分析和延迟测量,可以在附录D中找到。

4. INTERPRETATION AND BENEFITS

本节将解释我们的设计选择,以及为什么它们更适合硬件。我们强调,我们的方法并不直接对应注意力。

4.1 SPATIAL INTERPRETATION: NODE-WISE WEIGHT MATRICES

在我们的方法中,每个节点都有效地拥有自己的权值矩阵。我们可以通过从内和中分解 Θ b Θ_b Θb​项来重新排列eq.(2)得出这个结论:

相反,GAT共享权重,并通过计算每个消息的权重将复杂性推入消息计算阶段。MPNN (Gilmer et al., 2017)和PNA (Corso et al., 2020)通过显式计算每个消息进一步增加了复杂性——由于密集操作的数量大约增加了 ∣ E ∣ ∣ V ∣ \frac{|E|}{|V|} ∣V∣∣E∣​,从而导致了大量的延迟开销。具体来说,我们有:

从效率的角度来看

我们观察到使用SpMM的方法具有更好的特性,因为它只需要 O ( V ) O(V) O(V)内存消耗—使用SpMM不需要显式实现任何消息。我们注意到,虽然可以通过SpMM为GAT传播消息,但没有办法避免在训练期间存储权重,因为反向传播需要它们,从而导致 O ( E ) O(E) O(E)内存消耗。我们还注意到,在推断时融合某些体系结构的消息和聚合步骤是可能的,但这是硬件加速器难以优化的模式。

4.2 SPECTRAL INTERPRETATION: LOCALISED SPECTRAL FILTERING

我们也可以通过图形信号处理的镜头来解释我们的EGC-S层(Sandryhaila & Moura, 2013)。许多现代图神经网络建立在这样的观察基础上:当将欧氏域的卷积运算推广到图域时,它具有很强的归纳偏差:它尊重域的结构,并通过在空间中局部化的操作来保持特征的局部性。我们的方法可以看作是一种为图域建立自适应滤波器的方法。当信号或噪声特性随时间或空间变化时,自适应滤波器是一种常见的方法;例如,它们通常用于自适应噪声消除。我们的方法可以看作是通过线性组合可学习滤波器组与空间变化系数构造自适应滤波器。

图卷积运算通常在谱域上定义为在具有 N N N个节点的图上用 g θ g_θ gθ​参数化的滤波器对输入信号 x ∈ R N x∈R^N x∈RN进行滤波。这需要使用傅里叶变换在谱域和空间域之间进行转换。与欧氏域一样,图域上的傅里叶变换定义为拉普拉斯算子的正交本征基基分解,对于一个邻接矩阵 A ∈ R N × N A∈R^{N×N} A∈RN×N的图,定义为 L = D − A L=D−A L=D−A,其中D为 D i i = ∑ j = 1 N A i j D_{ii} =∑^N_{j=1}A_{ij} Dii​=∑j=1N​Aij​的对角度矩阵。信号 x ∈ R N x∈\R^N x∈RN的傅里叶变换是 F ( x ) = U T x \mathcal F(x)=\mathbf U^Tx F(x)=UTx,其中 L = U Λ U T L = UΛU^T L=UΛUT,正交特征向量- 矩阵 U ∈ R N × N \mathbf U∈\R^{N×N} U∈RN×N和对角特征值矩阵 Λ ∈ R N × N \mathbfΛ∈\R^{N×N} Λ∈RN×N。当 g θ g_θ gθ​存在泰勒展开式时,信号x经 g θ g_θ gθ​ 滤波后的结果 y = g θ ( L ) x = U g θ ( Λ ) U T x y= g_θ(L)x = U_{g_θ}(Λ)U^Tx y=gθ​(L)x=Ugθ​​(Λ)UTx,其中第二个等式成立。

我们的方法对应于学习多个过滤器,并根据每个节点的属性局部计算权重的结果过滤器的线性组合。因此,该模型允许对每个节点应用多个滤波器,使我们能够获得空间变化的频率响应,同时在计算复杂度上保持在远低于 O ( E ) O(E) O(E)的水平。使用滤波器的线性组合,滤波信号变为 y = ∑ b = 1 B w b ⊙ g θ b ( L ) x y =∑^B_{b=1}w_b\odot g_{θ_b}(L)x y=∑b=1B​wb​⊙gθb​​(L)x,其中 w b ∈ R N w_b∈\R^N wb​∈RN为图中N个节点中每个节点的滤波器B的权值。如果我们使用Kipf和Welling(2017)使用的一阶Chebyshev多项式参数化我们的滤波器,我们滤波信号的最终表达式成为 y = ∑ b = 1 B w b ⊙ ( D ~ − 1 2 A D ~ − 1 2 ) Θ b y =∑^B_{b=1}w_b\odot (\tilde D^{-\frac 12 }A\tilde D^{-\frac 12 })Θ_b y=∑b=1B​wb​⊙(D~−21​AD~−21​)Θb​,其中 A ~ = A + I N \tilde A=A+I_N A~=A+IN​是添加自环的邻接矩阵 D ~ \tilde D D~是之前定义 A ~ \tilde A A~的对角度矩阵。这就证明了我们在式(2)中选择的对称标准化聚合器是正确的

Cheng等人(2021)提出了一种局部滤波的方法。然而,他们的方法不能推广到看不见的拓扑或缩放到大型图,因为它需要学习几个大小为 N × N N × N N×N的滤波矩阵 S k S_k Sk​的系数。我们的方法不会受到这些限制。

总结

实验部分我就不写了,有兴趣的可以看看原文,总之作者认为EGC层可以作为目前来说的GNN层的替代层同时在效率和资源上都取得了不错的效果。

DO WE NEED ANISOTROPIC GRAPH NEURALNETWORKS?(EGConv)相关推荐

  1. 【综述】A Comprehensive Survey on Graph NeuralNetworks(1)

    目录 前言 专业名词 笔记 INTRODUCTION 引言 BACKGROUND & DEFINITION 背景与定义 Network embedding 网络嵌入 The main dist ...

  2. 【综述】A Comprehensive Survey on Graph NeuralNetworks(3)

    目录 前言 专业名词 笔记 GRAPH AUTOENCODERS 图形自动编码器 network embedding 网络嵌入 Deep NeuralNetwork for Graph Represe ...

  3. 【综述】A Comprehensive Survey on Graph NeuralNetworks(4)

    目录 前言 专业名词 笔记 DeepGCG (Deep Generative Model of Graphs) Spatial-temporalgraph neural networks (STGNN ...

  4. 今日arXiv精选 | 12篇EMNLP 2021最新论文

     关于 #今日arXiv精选  这是「AI 学术前沿」旗下的一档栏目,编辑将每日从arXiv中精选高质量论文,推送给读者. You should evaluate your language mode ...

  5. 今日arXiv精选 | 23篇顶会论文:ICASSP / ICCV / CIKM / ICME / AAAI

     关于 #今日arXiv精选  这是「AI 学术前沿」旗下的一档栏目,编辑将每日从arXiv中精选高质量论文,推送给读者. VerbCL: A Dataset of Verbatim Quotes f ...

  6. 图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导

    文章目录 1. 为什么会出现图卷积神经网络? 2. 图卷积网络的两种理解方式 2.1 vertex domain(spatial domain):顶点域(空间域) 2.2 spectral domai ...

  7. A Comprehensive Survey on Graph Neural Networks--图神经网络综合研究

    文章目录 一.图神经网络简史 二.现阶段研究现状 三.引言 四.本文作出的贡献 五.定义 六.分类与框架 1.分类 1.1图卷积网络(GCN) 1.2.图注意力网络 1.3.图自动编码器 1.4.图生 ...

  8. [论文翻译]-A Comprehensive Survey on Graph Neural Networks《图神经网络GNN综述》

    文章目录 摘要 1 简介 1.1 GNN简史 1.2 Related surveys on graph neural networks 1.3 Graph neural networks vs. ne ...

  9. Graph Neural Networks: A Review of Methods and Applications(图神经网络:方法与应用综述)

    Graph Neural Networks: A Review of Methods and Applications 图神经网络:方法与应用综述 Jie Zhou , Ganqu Cui , Zhe ...

最新文章

  1. C# 加密解密(DES,3DES,MD5,Base64) 类
  2. 问题用户小米科技CEO雷军:千万别把用户当上帝
  3. Datawhale组队-Pandas(下)分类数据(打卡)
  4. 【超直白】三分钟创建一个小程序
  5. CentOS 删除OpenJDK并安装OracleJDK
  6. vuex mapstate_Vuex从使用到原理解析
  7. Mac电脑壁纸 Mac动态壁纸 小镇冬日夜景动态壁纸
  8. 大电流dcdc降压芯片20a_详细计算公式丨Buck降压开关电源的功率损耗
  9. 【DSP】【第二篇】了解C6678和创建工程
  10. 华为手机卡在升级界面_华为安装升级包卡在5 华为手机如何刷机?
  11. 2021-09-23各个国家简称以及收手机区号
  12. 文件创建失败 无法继续下载_iOS更新失败了怎么办?教你如何排除故障解决问题...
  13. 腾讯社交广告大赛 —— 特征与模型介绍
  14. ADSL上网全攻略——故障解决
  15. 计算机配置有哪10个,win10配置有什么要求 win10配置要求及特点介绍【图文】
  16. 计算机无法传输文件,qq无法传输文件_电脑文件无法通过QQ发送怎么办
  17. 【剑指offer】一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
  18. NAS私有云存储 - 搭建Nextcloud私有云盘并公网远程访问
  19. 考研英语词汇文章4-Freshman Year
  20. 文献阅读 - Poisson Image Editing

热门文章

  1. 计蒜客习题:蒜厂年会
  2. 人活着最重要的是什么
  3. 国际上的三大标准组织
  4. c++: Logger日志信息
  5. SAP凭证的类别和记账码
  6. 实用的网站你值得来看
  7. A* Search Algorithm
  8. mongodb中地理位置信息的存储和查询
  9. python框架sanic_Python Web框架Sanic框架初识
  10. Python爬虫:短视频平台无水印下载(上)