图卷积网络(GCN)和池化

一、说明

GCN(Graph Convolutional Network)是一种用于图形数据处理和机器学习的神经网络架构。GCN 可以在图形中捕获节点之间的关系,从而能够更好地处理图形数据。GCN 可以沿着图形上的边缘执行滤波器操作,将每个节点的特征向量进行卷积处理,从而改变节点的特征表示。GCN 的应用领域包括社交网络分析、推荐系统、化学和生物信息学等。

二、GCN网挑战是什么?

        在社交网络中,朋友联系可以通过社交图实现。

        在语音识别中,音素Yi和声学模型xi形成HMM(语音识别图)。

        即使在CNN上,输入图像也可以建模为图形。例如,下图是 5 × 5 图像的图表。每个节点代表一个像素,对于 3 × 3 滤波器的情况,每个节点都连接到其八个直接邻居。

        尽管以这种方式表示图像是矫枉过正的,但很大一部分机器学习 (ML) 问题对于通过图形建模来说是非常自然和有效的。特别是,当相邻节点之间的关系是不规则和高维的时,我们需要明确定义它们才能有效地解决它们。在CNN中,我们在欧几里得空间工作。权重如何与输入要素(像素)相关联已明确定义。

        但图表并非如此。例如,下面的图表是相同的,即使它在空间上看起来不同。

        通常,神经网络 (NN) 采用输入 x 来预测 z

        这就引出了神经网络如何直接处理图的挑战。

        在GCN(图卷积网络)中,NN的输入将是图形。此外,它不是推断单个 z,而是推断图形中每个节点 i 的值 zi。为了对Zi进行预测,GCN在计算中同时利用了Xi及其相邻节点。

让我们更详细一点。

三、图卷积网络 (GCN)

        GCN的一般思想是在图上应用卷积。GCN 没有将 2-D 数组作为输入,而是将图形作为输入。

        下面的第一个图(第一行)是我们所知道的NN,第二个图是GCN,其中包含四个节点作为输入的图形。

        在第一个 NN 中,它包含多个密集层(全连接层)。x 是第一层的输入,zi 是第 i 层的输出。对于每一层,我们将z(或第一层的x)与权重矩阵W相乘,并将输出传递给激活函数σ,例如ReLU。GCN非常相似,但σ的输入是ÂHⁱWⁱ而不是Wizi。即 σWizi) v.s. σÂHⁱWⁱ),其中 zi 和 Hⁱ 分别是 NN 和 GCN 最后一个隐藏层的输出向量。但请注意,Wⁱ 和 Wi 是不同的,并且具有不同的尺寸。对于 GCN 中的第一层,X 包含一个节点数组,而不是单个节点 xX 将被编码为矩阵,每行包含节点的特征。

        那么什么是 Â?GCN 引入了邻接矩阵 A。如果节点 i 和 j 连接,则 中的元素 Aij 等于 1。否则,它将为零。所以 Â 表示节点的邻居。但我们将再进行一次调整,以表明所有节点都是自连接的。这表明隐藏层中节点的输出取决于其自身及其邻居。因此,我们将 A 的所有对角线元素转换为 1 以形成 Â。 在数学上, 等于 A + I。

        这就涉及到要σ的隐藏层的输出(ÂHⁱWⁱ)。如果我们忽略W一秒钟,对于隐藏层中的每个节点,ÂHⁱ将每个节点上的特征与其邻居相加。

        但是,如果我们对隐藏层输出的范围没有一定的控制,我们可能会在 NN 中面临递减或爆炸问题。具体来说,GCN希望对输出特征向量进行归一化以保持输出特征向量的比例。一种可能性是用 D̂⁻¹ 进行多个 Â,其中 D̂ 是测量每个节点度数的对角线节点度数矩阵。在高层次上,与其将自己与邻居相加,不如将总和乘以反向 D̂⁻¹ 来取平均值。具体来说,D̂ 是一个对角矩阵,每个对角线元素 D̂ii 计算相应节点 i 的边数。每个隐藏层的输出变为σ(D̂⁻¹ÂHⁱWⁱ),而不是σÂHⁱWⁱ)。

        让我们在我们的示例中计算 D̂。对于无向图,节点的度数计为边在该节点处终止的次数。因此,自循环将计数两次。在我们的示例中,节点 0 有 2 条连接到其邻居的边和一个自环路。它的度数等于 4(即 2 + 2)。对于节点 3,其度数等于 5 (3 + 2)。

D̂⁻¹ 等于

        下图总结了到目前为止讨论的模型。在此示例中,它有 3 个隐藏层,对于每个隐藏层,它将其输出计算为 σ (D̂⁻¹ÂHⁱWⁱ)。用于从最后一层输出计算隐藏层输出的方程称为传播规则

        除了使用σ(D̂⁻¹ÂHⁱWⁱ)之外,还有其他选择。实际上,传播规则可以概括为:

        不同的f选择导致模型的不同变体。作为预览,GCN论文应用了下面的传播规则

        Â  D̂⁻¹ 的计算方式与以前相同。但是,让我们推迟稍后的讨论,转而使用一个示例。让我们用Zachary的空手道俱乐部网络问题来演示它。

扎卡里的空手道俱乐部

        有一个空手道俱乐部有两个主要利益相关者:教练(Hi先生)和管理员。不幸的是,他们之间的争端导致它分裂成两个俱乐部。原始成员需要选择一个方面并选择加入哪一方。他们的决定将基于他们与 Hi 先生或管理员的关系。这还包括他们与与其关联的成员的连接程度。下图是成员之间表示连接的社交图。

来源:维基百科(成员#从1开始)

        让我们再组织一下图表,蓝色和红色是会员将加入哪个俱乐部的基本事实(Hi先生的俱乐部在下面用红色标记)。

成员 # 从 0 开始

        为了找到俱乐部会员资格,我们在下面应用了两个隐藏层,Hⁱ⁺¹ = σ(D̂⁻¹ÂHⁱWⁱ)。输入将是上面的社交图(没有俱乐部标签),最后一个隐藏层将是输出。

        最后一个隐藏层为每个节点输出 2 个标量潜在特征,我们使用这些值来表示一个节点。好的部分是,在这个例子中,即使没有训练,我们也可以仅基于社交图来计算潜在表示。我们使用 W⁰ 运行模型进行一次迭代,W¹ 使用正态分布随机初始化。但是我们不打算执行梯度下降来更新W。对于 X,我们只是使用单位矩阵,因为没有节点特征(因为我们事先不知道这些特征)。

        最后,我们使用输出潜在特征作为 x 和 y 坐标绘制每个节点。

此模型使用 σ(D̂⁻¹ÂHⁱWⁱ) 作为传播规则

        如图所示,当我们用其基本事实(蓝色表示 Hi 俱乐部,红色表示管理员)为每个节点着色时,生成的潜在特征与一个人属于哪个俱乐部高度相关。简而言之,我们只是在输入社交图谱上应用聚类。直观地说,我们的示例生成了与其相邻特征相似的潜在特征,因为隐藏层正在对其相邻特征进行潜在特征的平均化。该算法通过生成与其邻居相关的潜在因素,设法将邻居聚类在一起。

        让我们考虑一个用于分类或聚类的半监督问题,其中每个类或聚类只标记一个数据点。一旦计算出每个节点的潜在特征,我们就可以计算出未标记数据和标记数据之间的距离。然后,我们找到已知标记数据的最近邻居,对未标记的数据进行分类或聚类。

        到目前为止讨论的所有传播规则都是可微分的。对于半监督或无监督问题,如果需要,我们可以使用反向传播来使用标记数据来训练权重。(对于我们的最后一个示例,即使没有额外的培训,结果也很好。作为演示,下面的 GCN 模型经过 300 次迭代的训练。在此模型中,每个类仅提供一个标签。随着训练的进行,我们看到属于相同真实值类的节点如何开始聚类在一起。

四、光谱图卷积

        工程问题可以在空间域或频谱域(又称频域)中解决。例如,在信号处理中,我们应用傅里叶变换将音频输入从时域转换为频域,并应用低通滤波器来消除高频噪声。在卷积中,可以使用空间或光谱方法定义这些滤波器。将哪个域用于特定步骤取决于设计过滤器的难易程度以及执行操作的难易程度。

        在深度学习中,研究人员还从空间或光谱域进行卷积。例如,在上一节中,我们应用了σ(D̂⁻¹ÂHⁱWⁱ)形式的空间图卷积。

        但GCN实际上是一个频谱图卷积。它是谱图卷积的局部一阶近似,传播规则如下。

导致此新传播规则的过程可能非常漫长。但是彻底理解它以使用它并不是很重要。特别是,新规则与以前的规则非常相似。我们只是添加了更多的数学理由。请随意快速浏览接下来的两个部分。

五、光谱图卷积

        但是,它需要一些数学概念,方程和一些研究论文来解释频谱图卷积。由于其复杂性,我们将仅显示高级步骤。

        卷积滤波器是平移不变的,允许权重共享(相同的滤波器在输入上滑动)。在空间域中工作时,它可以独立于其空间位置识别相同的要素。图形没有明确的空间概念或空间平移的数学定义。这就引出了关于空间图过滤器所基于的数学基础的问题。

        另一方面,频谱图卷积基于频谱图理论。它提供了一个数学框架来设计具有平移不变属性的运算符(过滤器)。这并不意味着空间图过滤器是非科学的。但有时,他们可能会回到经验结果来证明理由。

        在高层次上,通过在输入信号x上应用滤波器gθ,在傅里叶域中定义频谱图卷积。

以前,我们使用邻接矩阵 A 对图进行建模,并使用对角节点度矩阵 D 对其进行归一化。在谱图理论下,无向图由归一化图拉普拉斯矩阵L表示,定义为

        L 是一个实对称的正半定矩阵。但是对于 N×N 矩阵,如果它是正半定的,则它具有 N 个正交特征向量。(我们将跳过此处的证明。简而言之,这些 N 个独立向量构成了可以对角化矩阵的基础,即 L 可以分解为 L = UΛUT,如下所示,其中 U 包含 L 的特征向量,Λ 是包含相应特征值的对角矩阵。这些特征向量也称为图傅里叶模态,对应的特征值是图的频率。

        拉普拉斯量由傅里叶基 U 对角化,谱卷积将定义为具有 U 的线性算子。具体来说,x 上的图傅里叶变换定义为

这里,图卷积算子在傅里叶域中定义。它是图x与傅里叶空间中的滤波器的乘法。即

*G g 表示使用滤波器 g 对 x 执行频谱卷积

如果我们将过滤器表示为

那么图卷积可以简化为:

谱卷积神经网络假设滤波器 gθ 是一个充满可学习参数 Θkij 的对角矩阵。Θkij 包含图层 k 的参数,用于将第 i个输入要素映射到第 j个输出要素。对于层 k,隐藏层输出的输出为

这是频谱图卷积的数学框架。

        光谱图卷积的不足之处

        虽然谱图理论具有具有明确定义的平移属性的运算符,但计算L的特征向量是计算昂贵的。我们希望避免这种情况。另一个缺点是这些过滤器通常没有本地化。我们可能不会只访问每个节点的第 k个最近邻居。它的复杂性随着图形的大小而增加,并且不可扩展。事实上,为了有效地计算节点的输出,我们应该跳过有限数量的邻居,比如从中心节点最多跳 K 个。这导致了将近似应用于频谱图卷积的研究,例如ChebNet和GCN中的卷积,使得过滤器是本地化的。而由于这个问题,空间图卷积近年来也受到了更多的关注。

        切博网

        那么我们如何在光谱图卷积中找到局部滤波器呢?切比雪夫光谱CNN(ChebNet)使用切比雪夫多项式Tkx)高达K阶的截断展开来近似滤波器gθ。

        具有定义滤波器 gθ 的图 x 的卷积变为:

        这是 K 局部的,因为它是拉普拉斯算中的 K 次多项式。它仅取决于距离中心节点最多 K 步的节点(详细信息)。这意味着它位于空间中并且无论图形大小如何都可以很好地缩放。甚至ChebNet和GCN也是从频谱图卷积开始的,它们应用近似,使其滤波器被定位。

        因为 Ti(L̂) 可以写成:

        卷积变为

        因此,我们不需要计算特征向量,它是局部的。

六、GCN模型

        GCN通过假设K = 1和λmax = 2来引入ChebNet的一阶近似。等式变为

        为了减少自由参数的数量并避免过度拟合,GCN 假设 θ = θ−θ₁,方程变为

        但是下面的 L.H.S. 项的特征值在 [0, 2] 范围内,为了避免爆炸/消失问题,应用了一个重整化技巧,导致下面的 R.H.S. 项。

        最后,GCN 的传播规则为

(本节中的公式学分:来源 1 和 2。

        接下来,我们将进入空间图卷积。

七、空间图卷积

        不同的空间图卷积依赖于不同的聚合器来从每个节点的邻居那里收集信息。从概念上讲,我们也可以将其视为消息传递。

        如果没有频谱图卷积中的近似值,空间图卷积通常更具可扩展性,因为它们的过滤器是本地化的。主要挑战是定义CNN的局部不变性,这些CNN与具有不同数量邻居的中心节点一起工作。在接下来的几节中,我们将快速概述不同的空间图卷积方法。我们可能会提出有时可能需要您连接点的方程式。但为了不进一步延长文章,请参阅个别论文以了解详细信息。

        消息传递神经网络 (MPNN)

        MPNN 概述了空间图卷积的通用消息传递框架。它沿边缘将信息(消息)从一个节点传递到另一个节点,并重复 K 步,让信息在图中传播。下面的等式是节点 v 的第 k层的隐藏特征表示。 这取决于 v 及其相邻要素在前一层中的隐藏要素以及与其相邻要素的边要素。 U 和 M 函数的不同选择将导致模型的不同变体。

        可以将最后一个隐藏层中节点的潜在表示传递给输出层以执行节点级预测。或者,它可以传递给具有可学习参数的读出函数 R,以执行图形级预测。

        例如,在药物发现中,图形表示以原子为节点,化学键为边缘的化合物。我们可能想对这种化合物是否可以阻碍癌细胞的生长或致癌进行分类。因此,我们可以在进行图级预测时用上面的等式进行读数。

        扩散卷积神经网络 (DCNN)

        DCNN将图卷积视为扩散过程。它将信息从一个节点传输到其邻居之一,概率转换矩阵 P 等于 D⁻¹A。这个过程将重复K次,以便信息分布达到平衡。第 k 步的隐藏表示 H k 将从 P计算但不是从最后一个隐藏表示计算的。

DCNN 将 H⁽¹⁾、H⁽²⁾、· · ·、H⁽K⁾ 连接在一起,形成最终的模型输出。

        图同构网络 (GIN)

        然而,GIN声称MPNN方法中的图嵌入无法区分不同的图结构。一个好的方案应该区分不同的图结构,并将它们映射到嵌入空间中的不同潜在特征。为了解决这个问题,GIN引入了一个可学习的参数εk来调整中心节点的权重。

        图贤者

        社交影响者有很多联系。对于具有许多边的节点的图形,卷积可能无法很好地缩放。GraphSage 使用采样为每个节点获取固定数量的邻居,以便传递消息,而不是所有相邻节点。

这是公式:

        或者,我们可以先计算邻居的聚合值。例如,我们可以使用 LSTM 聚合器来计算邻居的表示形式。然后我们将值与中心节点连接起来并应用密集层。否则,我们可以将 W 应用于所有邻居,后跟一个激活函数和一个最大池。

        采样

        FastGCN进一步完善了采样算法。FastGCN 不是对每个节点的邻居进行采样,而是使用重要性采样来减少方差。它从反映其与其他节点的连接程度的分布 q 中对节点 (u) 进行采样。然后,应用重要性抽样从u估计节点v的损失梯度。

        图注意力网络 (GAT)

        GAT 使用注意力来学习消息传递中两个连接节点之间的相对权重。首先,GAT 计算节点对 i 和 j 的注意力。得到的向量 Whi(hi 是节点 i 的隐藏表示)和 Whj 被连接起来 (|| 运算符)并与可学习向量 a 相乘。他们的注意力,测量他们之间的连接强度,然后用softmax函数计算。

然后,节点 i 的隐藏表示由计算的注意力α加权,最终结果为

        混合模型网络

        MoNet 使用节点伪坐标来确定节点与其邻居之间的相对位置。假设节点 y 是节点 x 的邻居。首先,计算伪坐标 ux, y) 的 d 维向量如下。MoNet论文使用节点的度数(连接数)作为伪坐标,然后用全连接网络进一步变换它们。

Modified from source

        一旦计算出两个节点之间的相对位置,权重函数就会将相对位置映射到这两个节点之间的相对权重。该权重函数 w 由可学习参数 θ 参数化,并由 J 个分量组成:

        在MoNet中,权重函数定义为:

where μⱼ and Σ are trainable parameters for a Gaussian.

        我们来总结一下。图像的坐标系 (x, y) 在欧几里得空间中定义,输出像素值为 f(x, y)。通过 MoNet,上面的权重函数使我们能够将概念扩展到非欧几里得空间,并应用可在不同位置工作的共享过滤器。下面是在 f 上应用卷积滤波器 g 的详细方程。

        MoNet 可以通过 u 和权重函数的不同选择进行推广。下图显示了如何使用特定的 u 和 w 将不同的 GNN 视为 MoNet。

        大规模可学习图卷积网络 (LGCN)

        在每个 LGCL 层中,它为中心节点的邻居的每个输入特征通道选择并排序最大的 k 值。具有中心节点的特征,它形成了一个(k+1)×3矩阵。然后应用 CNN 过滤器。在下图中,应用了两个滤波器来创建具有 5 个输出通道的新节点表示。

从源代码修改

LGCN应用多层LGCL,如下图所示。

        输入节点使用图形嵌入层转换为低维表示。在某些情况下,它可以简单地使用如下所示的线性变换。

        然后是两个具有跳过串联连接的LGCL层以产生输出,即LGCL的输入和输出连接在一起。最后,使用全连接层对每个节点进行分类。

八、池化

        在下图中,我们应用卷积层和 ReLU 为每个节点生成潜在表示。

        但在其他应用中,我们感兴趣的是生成图形的表示。例如,考虑一个样本 (G, y),其中 G 是图形,y 是它的类。作为一个分类问题,我们读取 G 并预测 y — 图的表示。在这种情况下,可以应用池化来生成更粗的图形,该图形可以通过读出操作进一步减少。这类似于传统的CNN,我们应用最大池来降低空间分辨率。

        通常,池化和读数是相似的,在数学上,可以概括为:

        CNN

        如果有一种一致的方法将图中的节点映射到欧几里得空间,那么在应用过滤器时,哪个权重应该与特定节点相关联就不会有歧义。因此,对于空间图卷积,挑战在于如何一致地为节点分配权重。

        下面的两个图形在拓扑上相似,但下面的两个红色边除外。如果两个图中的节点具有相似的网络拓扑,我们将它们的颜色相似。例如,节点 D 和 2 都显示为橙色。

        当我们应用卷积过滤器时,两个图都应该为相应的节点生成类似的潜在特征。一种方法是按分配的颜色(例如,按 RGB 值)对节点进行排序,并相应地分配相应的权重。

        DGCNN解决了如何按顺序读取图形并以一致顺序关联权重的相同问题。因此,它引入了 SortPooling 层,该层按颜色对图形节点进行排序,以便可以在这些有序节点上训练神经网络。

        通过根据拓扑以一致的方式呈现图形,一维卷积和密集层将更容易训练。例如,下面的图形是同构的,将以相同的方式呈现在 SortPooling 层之后的 NN 中。

        那么我们如何在DGCNN中为节点着色呢?它使用Weisfeiler-Lehman算法。

        这个概念与我们第一个针对Zachary空手道俱乐部的聚类示例非常相似。但我们不会在这里详细介绍。请参考DGCNN文件。基本上,它根据网络拓扑学习节点的网络嵌入(签名)。它将节点的颜色与其直接邻居连接起来,然后按字典顺序对其进行排序以分配新颜色。具有相同签名的节点将被分配相同的颜色。重复该过程,直到颜色收敛或 h 次迭代后。最后,具有相同颜色的节点在图形中共享相同的结构角色。然后,最后一个卷积层中的颜色将用于对节点进行排序。因此,对图形节点施加了一致的排序。排序后,DGCNN 会截断或扩展节点数组。这支持具有不同节点数的图形。

差异池

        DiffPool基于生成粗图的分层概念。它学习一个带有元素 i 的软聚类分配矩阵 Sl,j 包含层 l 中的节点 i 被聚类并分配给粗图中下一个分层层中的节点 j 的概率。

然后,此软赋值可用于计算下一个分层层的新节点嵌入和邻接矩阵。

方程的来源

        由 Sl 生成

该模型是可微的,目标是学习生成ZS的GNN模型。

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

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

相关文章

中国艺术孙溟㠭篆刻作品《活着》

人人为生活挣扎着,做着不想做的事,说着不想说的话,为生活低头弯腰委屈求全人生苦多甜少,何时了!何时了!甜来人生到头了…… 孙溟㠭篆刻作品《活着》 孙溟㠭篆刻作品《活着》 孙溟㠭篆刻作品《活着》 文/九钵

python3GUI--我的翻译器By:PyQt5(附下载地址)

文章目录 一.前言二.展示1.主界面2.段落翻译3.单词翻译 三.设计1.UI设计2.软件设计3.参考 四.总结 一.前言 很早之前写过一篇python3GUI–翻译器By:PyQt5(附源码) ,但是发现相关引擎…

设计模式之单例模式

单例模式 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点 引子:读取配置文件 很多地方要用到,如果每次都new 一个对象的话,会浪费内存资源。 改装成饿汉式(饿汉式有线程并发问题&#xff0c…

【计算机网络】11、网桥(bridge)、集线器(hub)、交换机(switch)、路由器(router)、网关(gateway)

文章目录 一、网桥(bridge)二、集线器(hub)三、交换机(switch)四、路由器(router)五、网关(gateway) 对于hub,一个包过来后,直接将包转发到其他口。 对于桥&…

【Linux命令200例】cp用于复制文件和目录(常用)

🏆作者简介,黑夜开发者,全栈领域新星创作者✌,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆本文已收录于专栏:Linux命令大全。 🏆本专栏我们会通过具体的系统的命令讲解加上鲜…

SpringBoot项目增加logback日志文件

一、简介 在开发和调试过程中,日志是一项非常重要的工具。它不仅可以帮助我们快速定位和解决问题,还可以记录和监控系统的运行状态。Spring Boot默认提供了一套简单易用且功能强大的日志框架logback,本文将介绍如何在Spring Boot项目中配置和…

Python web实战之 Django 的 ORM 框架详解

本文关键词:Python、Django、ORM。 概要 在 Python Web 开发中,ORM(Object-Relational Mapping,对象关系映射)是一个非常重要的概念。ORM 框架可以让我们不用编写 SQL 语句,就能够使用对象的方式来操作数据…

8.3 作业 c高级

1.递归实现&#xff0c;输入一个数&#xff0c;输出这个数的每一位&#xff1a; #include<myhead.h>void print_digit(int num) {if(num<10){printf("%d",num);puts("");}else{print_digit(num/10); //递归打印除最后一位外的数printf("%…

【数据结构】二叉树、二叉搜索树、平衡二叉树、红黑树、B树、B+树

概述 二叉树&#xff08;Binary Tree&#xff09;&#xff1a;每个节点最多有两个子节点&#xff08;左子节点和右子节点&#xff09;&#xff0c;没有限制节点的顺序。特点是简单直观&#xff0c;易于实现&#xff0c;但查找效率较低。 二叉搜索树&#xff08;Binary Search…

华为数通HCIP-PIM原理与配置

组播网络概念 组播网络由组播源&#xff0c;组播组成员与组播路由器组成。 组播源的主要作用是发送组播数据。 组播组成员的主要作用是接收组播数据&#xff0c;因此需要通过IGMP让组播网络感知组成员位置与加组信息。 组播路由器的主要作用是将数据从组播源发送到组播组成员。…

Flutter 添加 example流程

一、已有Flutter工程&#xff08;命令&#xff09;添加 example 1、cd 工程(flutter_plugin ,是自己创建的)根目录 例: flutter create example 执行命令创建example PS&#xff1a;cd example 后执行flutter doctor 后就可以看到效果 2、如果需要指定iOS/Android 语言,请添加…

Qt应用开发(基础篇)——数值微调输入框QAbstractSpinBox、QSpinBox、QDoubleSpinBox

目录 一、前言 二、QAbstractSpinBox类 1、accelerated 2、acceptableInput 3、alignment 4、buttonSymbols 5、correctionMode 6、frame 7、keyboardTracking 8、readOnly 9、showGroupSeparator 10、specialValueText 11、text 12、wrapping 13、信号 二、Q…

微信小程序 - 解析富文本插件版们

一、html2wxml 插件版 https://gitee.com/qwqoffice/html2wxml 申请使用注意事项 插件版本解析服务是由 QwqOffice 完成&#xff0c;存在不稳定因素&#xff0c;如对稳定性有很高的要求&#xff0c;请自行搭建解析服务&#xff0c;或在自家服务器上直接完成解析。对于有关插…

【Linux】 UDP网络套接字编程

&#x1f34e;作者&#xff1a;阿润菜菜 &#x1f4d6;专栏&#xff1a;Linux系统网络编程 文章目录 一、网络通信的本质&#xff08;port标识的进程间通信&#xff09;二、传输层协议UDP/TCP认识传输层协议UDP/TCP网络字节序问题&#xff08;规定大端&#xff09; 三、socket编…

VGG卷积神经网络-笔记

VGG卷积神经网络-笔记 VGG是当前最流行的CNN模型之一&#xff0c; 2014年由Simonyan和Zisserman提出&#xff0c; 其命名来源于论文作者所在的实验室Visual Geometry Group。 测试结果为&#xff1a; 通过运行结果可以发现&#xff0c;在眼疾筛查数据集iChallenge-PM上使用VGG…

Prometheus中的关键设计

1、标准先行&#xff0c;注重生态 Prometheus 最重要的规范就是指标命名方式&#xff0c;数据格式简单易读。比如&#xff0c;对于应用层面的监控&#xff0c;可以要求必须具备这几个信息。 指标名称 metric Prometheus 内置建立的规范就是叫 metric&#xff08;即 __name__…

C++ 用指针处理数组元素

指针加减运算的特点使得指针特别合适于处理存储在一段连续内存空间中的同类数据。而数组恰好是具有一定顺序关系的若干同类型变量的集合体&#xff0c;数组元素的存储在物理上也是连续的&#xff0c;数组名就是数组存储的首地址。这样&#xff0c;便可以使用指针来对数组及其元…

使用docker 搭建nginx + tomcat 集群

创建3个Tomcat容器&#xff0c;端口分别映射到 8080,8081,8082&#xff0c;使用数据卷挂载&#xff0c;分别将宿主机目录下的 /opt/module/docker/tomcat3/ROOT1/&#xff0c;/opt/module/docker/tomcat3/ROOT2/&#xff0c;/opt/module/docker/tomcat3/ROOT2/ 挂载到 容器内部…

Gitignore忽略文件

默认情况下&#xff0c;Git会监视我们项目中的所有内容&#xff0c;但是有些内容比如mode_modules中的内容&#xff0c;我们不希望他被Git所管理。 我们可以在我们项目目录中添加一个 .gitignore 文件来设置那些需要git忽略的文件。

rest-apiV2.0.0升级为simplest-api开源框架生态之simplest-jpa发布

什么是 simplest simplest 追求存粹简单和极致。 旨在为项目快速开发提供一系列的基础能力&#xff0c;方便用户根据项目需求快速进行功能拓展 不在去关心一些繁琐。重复工作&#xff0c;而是把重点聚焦到业务。 前言 程序 10 年。作为一个多年程序。深知每个项目和程序&a…