Group equivariant capsule networks(组等变胶囊网络) 论文翻译

摘要

我们提出了组等变胶囊网络,这是一个向胶囊网络概念引入保证的等方差和不变性的框架。我们的工作可以分为两部分。首先,我们介绍了一种在组的元素上定义的通过协议算法的通用路由,并证明了输出姿势向量的等方差以及输出激活的不变性在某些条件下成立。其次,我们将所得的等变胶囊网络与群卷积网络领域的工作联系起来。通过这种联系,我们可以直观地了解这两种方法之间的关系,并能够在一个深度神经网络体系结构中结合这两种方法的优势。结果框架允许对组卷积运算符进行稀疏评估,提供对特定等方差和不变性属性的控制,并且可以使用协议路由而不是池化操作。另外,它能够提供可解释且等变的表示向量作为输出胶囊,从而使物体存在的证据与姿态无关。

1. 简介

卷积神经网络严重依赖于平移下的卷积算子的等方差。权重在不同的空间位置之间共享,这减少了参数的数量,并与图像数据中经常发生的基础平移转换很好地配对。因此自然会进行大量研究,以开发其他潜在的转换和对称性,并提供在这些转换下具有等方差或不变性的深度神经网络模型(请参见图1)。此外,等方差和不变性是有用的属性,目的在于产生能够消除变化因素的数据表示形式:当通过改变一个因素来转换给定的输入示例时,我们通常旨在使一种表示形式的输入项具有等价性,而在其他表示形式的输入中保持不变性。旨在提供这种设置的宽松版本的最近的一系列方法是胶囊网络。

图1:具有等变姿态向量和不变协议概念的胶囊动态路由任务。 具有这些属性的图层可用于构建视点不变的体系结构,从而消除变化的因素。
我们的工作侧重于获得胶囊网络的形式化版本,以保证这些属性,并将它们与Cohen和Welling [2016]的群等变量卷积结合在一起,后者还根据组内变换提供可证明的等方差性质。在下文中,在我们详细概述我们的贡献之前,我们将对Hinton等人和Sabour等人的提出的胶囊网络做一下简短的介绍。

1.1 胶囊网络

胶囊网络[Hinton等人,2011]和最近提出的协议协议路由[Sabour等人,2017]代表了用于视觉任务的深度神经网络的不同范例。 他们的目的是使能力从物体存在的证据中解脱出来,这在视觉任务的背景下也被称为视点等距和不变性。 这是通过将一层的输出编码为姿势矢量和激活的元组来完成的。 此外,它们受到人类视觉的启发,并检测数据中出现的线性层次关系。 最新进展描述了一种通过协议动态路由的方法,该方法可迭代计算如何将数据从一层路由到下一层。 一个胶囊层接收n个姿势矩阵,然后通过可训练的线性变换,j对其进行变换,以为第j个输出胶囊的姿势投下n个选票:

 投票用于通过加权平均的变体为输出姿势计算建议。 然后,使用投票和提案之间的距离来迭代地优化权重。 最后,将协议值计算为输出激活,该激活值将对投票对输出姿势达成的共识程度进行编码。 胶囊层输出一组元组(M,a),每个元组包含姿势矩阵和一个输出胶囊的一致性(作为激活)。

1.2 动机与贡献

一般的胶囊网络不具有保证等方差或不变性,这对于保证解缠结的表示和视点不变性至关重要。我们确定了两个问题,这些问题阻止了当前胶囊体系结构中的精确等方性:首先,选票的平均发生在向量空间中,而姿势的基础空间是多方面的。向量空间表示的表决平均不会在流形上产生等方均值估计。其次,胶囊层使用在空间矢量场域中的局部接收场上定义的可训练变换内核,其中接收场坐标与姿势无关。它们导致非等价投票,因此导致非等价输出姿势。在这项工作中,我们为这些问题提出了可能的解决方案。
我们的贡献可以分为以下几个部分。首先,我们介绍分组等变胶囊层,这是一种特殊的胶囊层,其姿态矢量是组(G,◦)的元素(请参阅第2节)。鉴于此限制,我们提供了一种通过协议算法进行动态路由的一般方案,并表明在某些条件下,从G变换得到的等方差和不变性在数学上得到保证。其次,我们解决了聚集在胶囊网络中的局部接受区域上的问题(参见第3节)。第三,我们将具有组卷积的胶囊网络组合在一起,并展示如何利用组胶囊层来构建卷积神经网络,该神经网络继承有保证的等式和不变性,并产生解缠结的表示形式(参见第4节)。最后,我们将此组合架构应用于MNIST数据集,作为我们框架的概念应用证明,并通过实验验证了属性。

2. 组等变胶囊

我们从组胶囊层的基本定义以及我们要保证的属性开始。 给定一个Lie群(G,◦),我们通过一组函数元组来正式描述具有m个输出囊的组囊层

在此,函数Lp计算输出姿势矢量,而函数La计算给定输入姿势矢量P =(p1,...,pn)∈Gn和输入激活a∈Rn的输出激活。  由于我们的目标是在群定律下实现全局不变性和局部等差,因此我们为单个群状胶囊层定义了这两个属性(请参见图1)。 首先,关于组法则的应用,计算一层输出姿态矢量的函数对于组律是左等变的

其次,在群律的应用下,计算一层激活的函数是不变的

由于等方差是传递性的,因此可以推断出满足这些属性的堆叠层将为合并操作保留这两个属性。 因此,如果我们在这些层的序列(例如整个深度网络)的输入上应用G进行的变换,则不会更改所得的输出激活,而是会生成通过相同变换进行变换的输出姿态向量。 总结起来,可以满足局部等变量和全局不变的胶囊网络的愿景。

2.1 组胶囊层

我们根据协议将组胶囊层功能定义为迭代路由的输出,类似于Sabour等人提出的方法。 [2017]。 给定通用加权平均运算Mand距离度量δ的整个算法如算法1所示。

通常,通过将可训练的组元素ti,j应用于输入姿势向量pi(使用组定律◦)来投票,其中i和j分别是输入和输出胶囊的索引。 然后,迭代计算一致性:首先,通过使用加权平均算子M获得新的姿势候选者。第二,将投票姿势候选者之间的负偏移δ距离用于权重更新。 最后,通过平均投票与新姿势之间的负距离来计算一致性。 可以选择函数σ为某些缩放和平移非线性,例如具有可训练的α和β的σ(x)= sigmoid(α·x +β),或者作为输出胶囊尺寸上的softmax。

M和δ的性质  对于以下定理,我们需要定义M和δ的特定属性。 平均运算应将以值x =(x1,...,xn)∈Rn加权的组(G,◦)中的n个元素映射到这些值的某种加权平均值 G.除了闭包,根据群法,M应该是左等变的,正式地:

以及在输入的排列下不变。 此外,需要选择距离量度δ,以使变换g∈G保持δ距离:

鉴于这些初步知识,我们可以制定以下两个定理。

定理1.令M为在g∈G的左应用下等价的加权平均运算,在M的应用下使G闭合。 此外,选择δ,使得所有g∈G都保持δ距离。 然后,算法1定义的函数Lp(P,a)=(ˆp1,...,ˆpm)在输入端向量P∈Gn的g∈G左应用下为等变:

证明。 该定理通过使用M,δ保和组性质的等方差对算法的内环进行归纳。 附录中提供了完整的证明。

定理2。给定与定理1相同的条件。然后,算法1定义的函数La(P,a)=(ˆa1,...,ˆam)在输入姿态g∈G的联合左应用下不变。 向量P∈Gn:

证明。 通过应用定理1和δ距离保留得出结果。 附录中提供了完整的证明。
给定这两个定理(以及第3节中提出的方法),我们能够通过这些层的组合来构建一个深组胶囊网络,从而保证输出激活的全局不变性和位姿矢量的均匀性。

2.2 有用团体的例子

给定所提出的算法,必须根据所选的组和元素表示来选择M和δ。通过使用二维旋转组SO(2),可以将所提出的框架规范地应用于图像。我们选择将G的元素表示为二维单位向量,将M的元素表示为重新归一化的向量,将Euclidean,加权平均值和δ的元素表示为负标量积。更高维的组还包括三维旋转组SO(3)以及一般可逆矩阵组GL(n,R)。组胶囊的其他潜在有趣的应用是翻译组。在附录中可以找到有关它们以及其他组的进一步讨论。
集团产品。应当指出,使用组的直接乘积可以使我们将框架应用于组组合。给定两组(G,◦G)和(H,◦H),我们可以构造直接乘积组(G,◦G)×(H,◦H)=(G×H,◦),其中(g1, h1)◦(g2,h2)=(g1◦Gg2,h1◦Hh2)。因此,例如,乘积SO(2)×(R2,+)再次是一个组。因此,定理1和2也适用于这些组合。结果,姿势矢量为每个组包含独立的姿势,从而使信息在各个姿势之间不被纠缠。

3. 组胶囊的空间聚集

本节介绍了我们提出的用于组胶囊网络的空间聚集方法。 如前所述,当前的胶囊网络执行胶囊的空间聚集,这不会导致等变姿势。 当改变胶囊网络的输入时,不仅较深的姿势矢量相应地改变。 由于已计算出姿势的向量场,因此这些姿势向量在Rn中的位置也可能会根据变换而改变,并使用归纳表示的概念进行正式建模[Cohen等人,2018]。 但是,为局部接收场的固定位置定义了可训练的变换t,而这些位置不可知。 因此,用于计算票数的姿势向量和可训练变换的组成取决于输入变换,这防止了等方差和不变性。
形式上,可以通过以下方式描述在局部感受野上的胶囊层中计算的票数vi:

其中xi是接收场位置,p(xi)在位置xi处的输入姿态,t(xi)在位置xi处的可训练变换,g在输入变换中。 可以看出,由于p(·)和t(·)的匹配随g的变化,我们没有收到等价投票的集合vi。 可以在图2a和2b中找到有关2×2块和G = SO(2)上的聚合的上述问题的可视示例(以及等方差的反示例)。

图2:2×2块SO(2)胶囊的空间聚集示例。 图(a)显示了非旋转输入的行为。 由此产生的票数完全一致,指向最高。 图(b)显示了将输入旋转π/ 2时的行为,其中,根据输入旋转,我们获得了姿态矢量p(·)和变换t(·)在元素上的不同匹配。 图(c)显示了采用建议的内核对齐方式的行为。 可以看出,p和t再次匹配,结果是与(a)中相同的全姿态一致,均等变幅姿态指向左侧。

姿势对齐转换内核。 作为解决方案,我们建议在将恒定位置xi用作可训练变换生成器t(·)的输入之前,根据姿势对齐它们。 给定局部姿势矢量p1,...,我们可以计算出p = M(p1,..,pn,1),这是当前接收场的平均姿势矢量。 。 。 ,pn。 变换后的和未变换的输入的平均姿势因变换g而不同:¯p= g◦q。 这是由于M的等方差,置换下M的不变性以及先前各层的等方差性质所导致的,这意味着应用于输入的旋转会直接转换为更深层中的姿势矢量。 因此,我们可以将反平均姿势¯p-1=¯q-1◦g-1应用于t的恒定输入位置x并计算票数为

如图2c中的示例所示。 使用这种构造,我们将归纳表示等效地用作p(·)和t(·)的输入,从而导致p(·)和t(·)的组合独立于g。 注意,对于所有输入变换,¯q-1∈G都是常数,因此不会引起进一步的问题。 实际上,我们使用两层MLP来计算t(·),它将归一化的位置映射到n·m个转换(每个位置n个输入胶囊和m个输出胶囊)。 提出的方法也可以理解为姿势对齐的可训练的,连续的内核窗口,该窗口从G生成变换。它类似于在不规则域中用于稀疏数据聚合的技术[Gilmer et al。,2017]。 由于不需要交换性,因此它也适用于非阿贝尔族(例如SO(3))。 另外一个好处是,当使用MLP生成器而不是直接优化变换t时,我们在训练过程中观察到了明显更快的收敛性。

4. 分组胶囊和分组卷积

姿势向量和激活的新获得的属性使我们能够将组等变胶囊网络与组等变卷积网络领域的方法结合起来。 我们表明,我们可以构建稀疏的组卷积网络,该网络从组的胶囊部分继承根据组律的激活不变性。 这些网络不使用组的常规离散化,而是评估固定组的任意组元素的卷积。 所提出的方法提高了群卷积的理论效率,改善了我们的胶囊网络的定性性能,并且仍然能够提供纠缠的信息。 接下来,在介绍组合架构之前,我们将简短介绍群卷积。

组卷机。 组卷积(G-convs)是为组(G,◦)的元素定义的广义卷积/相关算子(此处为具有基础流形的李群):

对于K个输入特征信号,其在组律的应用下表现为等变◦[Cohen and Welling,2016,Cohen et al。,2018]。 作者表明,它们可用于构建组等变量卷积神经网络,该网络应用这些层的堆栈以获得等变量架构。 但是,与胶囊网络相比,它们不直接计算解缠结的表示,而我们希望通过与胶囊网络的组合来实现。

图3:(a)胶囊和群卷积的组合方案。 通过动态路由计算的姿势用于评估组卷积。 通过计算的协议对输出进行加权。 胶囊激活的不变性继承到组卷积的输出特征图。 (b)实现稀疏群卷积。 在使用连续核函数ψ进行聚合之前,使用计算出的姿态Lp转换局部感受野。

4.1 稀疏群卷积

所提出方法的直觉是将我们的群胶囊网络解释为群等变网络的稀疏树表示。为每个元素g∈G定义了组G上的组卷积层[fψ](g)的输出特征图。相反,我们的组胶囊层的输出是一组元组(g,a),其中组元素g(姿势向量)和激活a,可以解释为G-conv层输出的稀疏索引/值表示。在这种情况下,姿势g是根据层1的姿势通过协议路由计算得出的,它是关于位置g上层1 +1的特征图内容相关性的假设。现在,我们可以稀疏地评估组卷积的特征图输出,并可以使用来自胶囊的一致性值来衰减或放大所得的特征图内容,从而考虑捕获的姿态协方差。图3a显示了此想法的方案。
我们证明,当使用姿势矢量输出评估组元素g的G-conv层时,我们通过证明以下定理从胶囊激活中继承不变性:
定理3。给定的姿态矢量输出组G的组胶囊层的Lp(p,a),输入信号f:G→R和滤波器ψ:G→R。然后,在以下条件下,组卷积[fψψ]是不变的联合

证明。 不变性来自定理1,特征图上的群律应用定义和群属性。 附录中提供了完整的证明。

结果告诉我们,当我们将网络中的每个胶囊与在特征图上执行姿态归一化卷积的运算符配对时,我们得到的激活在根据G进行变换时是不变的。我们可以进一步走了一步:给定一个组卷积层在产品组中,我们可以将胶囊输出姿势用作一组的指标,并密集地评估另一组的卷积,从而导致密集维度的等方差(紧随组卷积的等方差)和胶囊索引的维度的不变性。这导致我们的概念证明应用了二维旋转和平移。我们在附录中提供了更多的正式细节和证明。
卷积的计算可以通过使用胶囊的姿势矢量对本地输入进行逆变换来进行,如图3b所示。在实践中,可以通过使用Henriques和Vedaldi [2017]提出的网格扭曲方法或通过使用基于空间图的卷积算子来实现。来自Fey等。 [2018]。此外,我们可以使用路由算法中迭代计算出的权重,按照特征图上的协议进行池化:代替对空间聚合使用max或average运算符,可以使用路由权重对特征图内容进行加权,从而动态地聚合特征图内容。结合起来。

5. 相关工作

已经介绍了提供具有特定等方差性质的深度神经网络的不同方法。一种方法是在不同旋转的滤波器上共享权重,或者通过变换来大量增加输入[Yanzhao等,2017; Weiler等,2018]。一组相关但更通用的方法是组卷积网络[Cohen and Welling,2016,Dieleman et al。,2016]及其应用,例如SO(3)中的球形CNN [Cohen et al。,2018]和可转向的CNN。 SO(2)[Cohen and Welling,2017],两者都导致特殊的卷积实现。
胶囊网络由Hinton等人介绍。 [2011]。最近,提出了用于胶囊网络的动态路由算法[Sabour等,2017; Hinton等,2018]。我们的工作建立在胶囊网络的方法和愿景之上,并将它们与群体等变网络联系起来。
进一步的方法包括谐波网络[Worrall等,2017],其使用圆形谐波作为滤波器组的基础,以及矢量场网络[Marcos等,2017]。这些方法集中于二维旋转等方差。虽然我们选择了一个与他们的方法相似的实验,但我们的工作旨在为不同的群体建立一个更笼统的框架,

6. 实验

我们提供概念验证实验,以验证和可视化前面部分中显示的理论特性。 作为我们框架的一个实例,我们选择了一种在不同MNIST数据集上进行旋转等变分类的体系结构[LeCun等,1998]。

6.1 实验和训练细节

初始姿势提取我们尚未解决的一个重要主题是群组胶囊网络的首次姿势提取。我们需要从网络的原始输入中提取出具有激活a的姿态向量p∈G,而又不消除等式12和13的等值和不变性。我们的图像解决方案是使用Sobel算子简单地计算局部梯度并取梯度的长度作为激活。对于零梯度的情况,我们需要确保只有零输入的胶囊也产生零一致性和未定义的姿态向量。
卷积算子作为卷积实现,我们选择了Fey等人提出的基于样条的卷积算子。 [2018]。尽管离散二维或三维卷积算子也是适用的,但此变体允许我们在对信号f进行组变换后省略网格的重采样。原因是B样条函数的连续定义范围。由于将图像表示为网格图,因此这些内核使我们能够通过变换边缘上给定的相对位置来轻松地变换局部邻域。
动态路由与Sabour等人的方法相反。 [2017],我们不在输出胶囊尺寸上使用softmax,而是在每个权重上分别使用S形函数。乙状结肠功能使网络可以将信息路由到多个输出胶囊,甚至根本没有输出胶囊。此外,我们使用两次迭代的计算姿势提议。
体系结构和参数我们的规范体系结构由五个胶囊层组成,其中每一层以步幅2聚集来自2×2空间块的胶囊。学习到的变换在空间位置上共享。我们使用第2节中描述的路由过程和第3节中描述的空间聚集方法。我们还将每个胶囊与第4节中所述的姿态索引卷积与每层后的ReLU非线性配对,从而形成CNN体系结构,在姿势向量的引导下成为稀疏的CNN组。对于五个胶囊层中的每一个,每个空间位置的输出胶囊的数量分别为16、32、32、64和10。总体而言,该架构包含235k可训练参数(胶囊为145k,CNN为90k)。该体系结构产生两组分类输出:最后一个胶囊层的一致性值以及卷积部分的softmax输出。我们使用Hinton等人提出的价差损失。 [2018]的胶囊部分和卷积部分的标准交叉熵损失并将其加起来。我们训练了45个时代的模型。有关更多详细信息,请参阅Github1上的实现。

表1:(a)我们架构中各个部分的消融实验,包括没有诱导姿势矢量的CNN,等变胶囊网络和组合架构。 所有MNIST实验均使用随机旋转的训练和测试数据进行。 (b)三种情况下的平均姿态提取误差:简单地将初始姿态向量平均为基线,我们的胶囊架构没有重建损失,并且模型相同,但有重建损失。

6.2 结果

等方差性质和准确性。 通过在非旋转的MNIST图像上训练我们的网络并在随机旋转了π/ 2倍数的图像上对其进行测试,我们确定了体系结构的等方差和不变性。我们可以确认我们达到了完全相同的精度,就好像我们对非旋转测试集进行了评估(99.02%)。我们还获得了相同的输出激活和等变姿态向量,偶尔出现小于0.0001的小数值误差,这证实了等距和不变性。对于封装和卷积输出,这是正确的。当我们考虑任意旋转进行测试时,在非旋转图像上训练的网络的准确性为89.12%,与标准CNN相比,这是一个不错的概括结果。对于完全随机旋转的训练和测试集,我们使用三个数据集进行了消融研究。这些包括具有50k训练示例的标准MNIST数据集和具有10k / 50k训练/测试划分的专用MNIST-rot数据集[Larochelle et al。,2007]。此外,我们复制了Sabour等人的实验。 [2017]在affNIST数据集2上,对MNIST进行了修改,将小的随机仿射变换应用于图像。我们接受了MNIST的填充和翻译(未旋转)MNIST培训,并在affNIST上进行了测试。所有结果示于表1a。我们选择没有胶囊部分信息的CNN架构作为基线(*)。没有诱导姿势,网络相当于传统的CNN,类似于Fey等人提出的网格实验。 [2018]。当在非旋转MNIST上进行训练时,它可以达到99.13%的测试准确度,并且弱化到只有58.79%的测试准确度的旋转测试集。为了训练旋转数据,结果汇总在表中。
结果表明,将胶囊与卷积相结合的性能明显优于单独的两个部件。胶囊网络提供的姿势矢量可引导CNN,从而大大提高CNN的旋转不变性。在Weiler等人获得的旋转MNIST分类中,我们还没有达到99.29%的最新水平。 [2018]。在affNIST实验中,我们超过了Sabour等人的79%的结果。 [2017]的参数要少得多(23.5万对680万)。

制图表达。 我们分别在表1b和图4中提供了对MNIST训练模型的生成表示的定量和定性分析。我们通过将每个MNIST测试示例旋转一个随机角度来测量平均姿态误差,并计算了预测姿态与预期姿态之间的距离。我们将有无重构损失的胶囊网络的结果(参见下一段)与分层平均局部位姿向量的幼稚方法进行了比较。胶囊姿态要精确得多,因为它们并不均等地依赖于所有局部姿态,而主要取决于可以通过检测到的物体的存在来解释的姿态。应当指出,姿势提取不是直接监督的-网络仅使用区分性的类注释(和重建损失)进行训练。与Sabour等类似。 [2017],我们观察到使用额外的重建损失会改善提取的表示。在图4a中,我们显示了11个随机测试样本的输出姿势,每个样本以π/ 4步旋转。可以看出,在大多数情况下会产生等变输出姿势。底行显示错误情况,其中模棱两可的模式会产生错误的姿势。我们在附录中为不同的MNIST类提供了更详细的分析。图4b显示了第一(顶部)和第二(底部)胶囊层之后的姿势。

图4:可视化输出姿势(a),内部姿势(b)和重构(c)。 (a)可以看出,网络产生了等变的输出姿态向量。 最下面一行显示了一种罕见的错误情况,其中对称导致错误的姿势。 (b)内部姿势的行为几乎相等,我们可以看到由于离散化和图像重采样的变化而引起的差异。 (c)原始测试样品在左侧。 然后,示出了旋转表示姿势矢量之后的重建。 对于重建,我们选择了视觉上正确的重建样本,但情况并非总是如此。

重建。 为了进一步验证解缠结,我们还复制了Sabour等人的自动编码器实验。 [2017]通过将三层MLP附加到卷积输出,协议输出以及构成和训练它来重构输入图像。 示例重建可以在图4c中看到。 为了验证旋转的解缠结,我们在将π/ 4旋转应用于输出姿势矢量之后,提供了图像的重构。 可以看出,我们对结果图像的方向进行了细粒度的控制。 但是,并非所有表示都正确重建。 我们选择了视觉上正确的显示。

7. 局限性

我们方法的局限性是由于胶囊姿势限制为具有适当M和δ的一组元素。 因此,与原始胶囊网络相反,不再可以提取任意姿势向量。 但是,通过乘积组,如果我们可以找到该组的M和δ,则可以合并多个组并获得具有内部纠缠信息的更通用的姿态向量。 对于Lie组,等价的Karcher均值的实现对于M来说是足够的运算符。它被定义为流形上的点,该点使所有加权测地距离的总和最小化[Nielsen and Bhatia,2012]。 但是,对于每个组,都有不同数量的可能的实现,在深度神经网络体系结构中只有少数几种可行的实现。 寻找合适的候选人并对其进行评估是我们未来工作的一部分。

8. 结论

我们提出了组等变量胶囊网络,它提供了可证明的等方差和不变性。 它们包括通过协议算法进行路由的方案,空间聚合方法以及集成组卷积的能力。 我们证明了相关属性,并通过概念验证实验对其进行了确认,同时表明我们的体系结构提供了解缠结的姿势矢量。 此外,我们提供了一个示例,说明如何使用引导姿势构造稀疏组等变CNN。 未来的工作将包括将拟议的框架应用于其他更高维度的组,以在保持保证的同时更接近原始胶囊网络的表达能力。

致谢

本文的部分工作已由Deutsche Forschungsgemeinschaft(DFG)在合作研究中心SFB 876(通过资源受限分析提供信息)中的项目B2和A6进行了支持。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值