Aggregation-Based Graph Convolutional Hashing for Unsupervised Cross-Modal Retrieval-程序员宅基地

技术标签: cnn  深度学习  论文精读  神经网络  

Aggregation-Based Graph Convolutional Hashing for Unsupervised Cross-Modal Retrieval

【IEEE TRANSACTIONS ON MULTIMEDIA, VOL. 24, 2022】TMM

基于聚合的图卷积哈希的无监督跨模态检索


Abstract

本文的提出动机/现存的问题:
1)尽管监督方法取得了巨大的成功,但现有的无监督哈希方法仍然存在缺乏 可靠的学习指导(learning guidance)跨模态异构(cross-modal discrepancy) 的问题。
2)单个相似性度量很难全面地表示数据关系。

本文提出:基于聚合的图卷积哈希(AGCH)
1)考虑到单个相似性度量很难全面地表示数据关系,开发了一种高效的聚合策略,利用多个度量来构建更精确的亲和矩阵(affinity matrix)用于学习。具体来说,采用各种相似性度量从不同角度挖掘多模态的结构信息,然后将获得的信息汇总生成联合相似矩阵
2)此外,设计了一种新的深度模型来学习不同模态的统一二值码,其中的关键组件包括:

  • 特定模态编码器modality-specific encoders:任务是学习每个单独模态的特征嵌入
  • 图卷积网络GCNs:利用GCNs进一步挖掘数据的语义结构
  • 融合模块fusion module:用融合模块来关联不同的模态

Introduction

跨模态哈希CMH和基于图的哈希

跨模态哈希CMH包括监督和非监督方法。

监督CMH方法直接利用 预先标注的标签预先获得的相似关系 作为学习所需哈希码的统一指导。
然而在现实世界中,标记大规模数据集是一项艰巨的工作,这是非常耗时的,并且需要专业知识。

无监督CMH方法在没有语义标签的情况下,通过利用 训练数据的底层几何结构 生成二值码,因此获得的性能竞争力较差。
但是在实际应用中,它比监督方法更实用,因为不需要手工注释。

基于图的哈希(Graph-based hashing) 一直是一个长期的研究兴趣,传统上以 亲和图(affinity graphs)【邻接图】 作为学习的指导。


存在问题

尽管有很多方法都有很好的效果,但是用于无监督搜索的深度哈希很少被考虑。
本文主要研究在无监督跨模态环境下的检索任务。为了追求高质量的哈希码和函数,需要考虑两个问题。
1)reliable supervisory guidance. 如何获得可靠的学习监督指导。
2)heterogeneity problem.由于不同媒体类型的数据通常位于不同的特征空间中,因此具有特定的特征,需要解决异构性问题。

解决——基于聚合的图卷积哈希AGCH

为了解决上述问题,提出了新的深度CMH模型——基于聚合的图卷积哈希AGCH,用于大规模无监督异构数据检索。

基于聚合的相似矩阵构造——全面获取语义

一方面,为了全面获取语义,提出了一种新的基于聚合的相似矩阵构造方法
具体来说,由于多模态数据从不同角度描述对象,并具有不同的统计特性,因此它们通常包含互补和多样的信息。为了充分利用这一点,本文自适应地将嵌入每个单独模态中的内在信息结合起来,以实现对数据项关系的全面理解。

此外,与以前仅从一个角度(即根据单个基于距离的度量)利用数据关系的方法不同,我们通过各种度量来监督它,以利用多模态数据中包含的丰富结构信息。鉴于此获得了一个可靠的监督信号,用于以较小的偏差进行学习。

新的深度模型——处理数据异构性

另一方面,为了处理数据的异构性,建立了一个新的深度模型。
该模型由多个子网络组成,每个子网络用于一个模态来学习特定模态的哈希函数。
每个子网络都以深度网络作为数据编码器,并进一步采用 图卷积网络(GCN)来深入探索底层邻域结构,有利于判别二值码的学习。

提出了一个 融合模块fusion module 来连接每个模态,以学习统一的二值表示。

设计了一个 有效的目标函数 来保持模态内和模态间的一致性。

贡献

  • 本文首次尝试使用各种基于距离的相似性度量来构建亲和图。此外,合并了来自不同模态的不同和互补的关系,通过这些信息可以很好地捕捉到内在的语义结构,更好地表示多模态数据之间的相似关系。
  • 这也是第一项将GCN应用于无监督哈希学习的工作。我们的模型能够保持模态内和模态间的一致性以及不同模态之间的相互作用。更重要的是,它在学习过程中充分考虑了邻接关系。结果获得了高质量的二进制表示。
  • 在三个基准数据集上进行的大量实验结果证明了所提出的AGCH算法的有效性。

Related Work

Hashing

Graph Convolutional Network


Method

A. Notation and Problem Definition符号及问题定义

  • 黑色大写字母( Q Q Q)用于表示矩阵

  • 黑色小写字母( q q q)表示向量

  • Q i ∗ Q_{i*} Qi Q ∗ j Q_{*j} Qj分别表示 Q Q Q的第 i i i行和第 j j j

  • Q i j Q_{ij} Qij是矩阵 Q Q Q的位置 ( i , j ) (i, j) (i,j)处的元素

  • Q Q Q的转置和逆分别表示为 Q T {Q^T} QT Q − 1 Q^{-1} Q1

  • ∥ ⋅ ∥ F {\parallel \cdot \parallel}_F F表示向量或矩阵的Frobenius范数

  • s i g n ( ⋅ ) sign(\cdot) sign()是一个元素级的符号函数,定义为

  • s i g n ( x ) = { 1 x > 0 − 1 x ≤ 0 sign(x)=\begin{cases} 1 & x>0 \\ -1 & x≤0 \end{cases} sign(x)={ 11x0x0

  • 两个向量 x i x_i xi x j x_j xj之间的Cosine距离为

  • c o s ( x i , x j ) = x i T x j ∥ x i ∥ 2 ∥ x j ∥ 2 cos(x_i, x_j) = \frac{x_i^T x_j}{ {\parallel x_i \parallel}_2 {\parallel x_j \parallel}_2} cos(xi,xj)=xi2xj2xiTxj

  • 其中 ∥ ⋅ ∥ 2 {\parallel \cdot \parallel}_2 2代表 l 2 l_2 l2范数

  • 符号 ⊙ \odot 表示哈达玛矩阵乘积(即逐元素乘积),其定义如下:

  • 在这里插入图片描述

  • 假设 O = { o i } i = 1 n O=\{o_i\}_{i=1}^n O={ oi}i=1n是具有 n n n个成对实例的多模态数据集, o i = ( o i v , o i t ) o_i=(o_i^v, o_i^t) oi=(oiv,oit),其中 o i v ∈ R d 1 o_i^v∈\mathbb{R}^{d_1} oivRd1 o i t ∈ R d 2 o_i^t∈\mathbb{R}^{d_2} oitRd2表示第 i i i个数据点对的 d 1 d_1 d1图像特征向量 d 2 d_2 d2文本特征向量

给定训练数据,我们方法的最终目的是学习图像和文本的特定模态投影函数 f ( o v ; θ v ) f(o^v; \theta_v) f(ov;θv) g ( o t ; θ t ) g(o^t; \theta_t) g(ot;θt),其中 θ v \theta_v θv θ t \theta_t θt是网络参数,并获得统一的二值表示 B = [ b 1 , b 2 , … , b n ] ∈ { − 1 , 1 } c × n B=[b_1,b_2,\dots,b_n]∈\{-1, 1\}^{c×n} B=[b1,b2,,bn]{ 1,1}c×n,其中 b i b_i bi是第 i i i个实例的二值码, c c c是代码长度。

原则上,通过嵌入函数学习的 b i b_i bi b j b_j bj有望准确地保持原始多模态空间中的相似性。


B. Framework架构

在这里插入图片描述

如图1所示,我们的模型是一个端到端的学习框架,包含四个主要组件:

  • 图像编码器
  • 图像GCN
  • 文本编码器
  • 文本GCN

还有一个用于生成 模态不变二值嵌入(modal-invariant binary embeddings) 的融合模块。

在每个epoch中,沿着图像编码器的分层处理,来自训练集的图像 o v o^v ov首先被转换为非线性特征 f v ∈ R d e 1 × m f_v \in \mathbb{R}^{d_{e1}\times m} fvRde1×m,这些非线性特征被进一步送到哈希层以生成特定模态的二值表示 B v ∈ { 1 , − 1 } c × m B^v \in \{1, -1\}^{c \times m} Bv{ 1,1}c×m,其中 c c c m m m 分别代表 code lengthbatch size
文本编码器的任务是提取高级特征 f t ∈ R d e 2 × m f_t \in \mathbb{R}^{d_{e2}\times m} ftRde2×m并相应地生成输入文本 o t o^t ot的哈希码 B t ∈ { 1 , − 1 } c × m B^t \in \{1, -1\}^{c \times m} Bt{ 1,1}c×m
二进制的生成过程表示如下:
在这里插入图片描述

其中 θ v \theta_v θv θ t \theta_t θt是它们相应网络的权重参数。这个过程也被用来为测试阶段的查询生成二值表示。

此外,在训练阶段, s i g n ( ⋅ ) sign(\cdot) sign()函数会导致棘手的反向传播梯度问题,为了避免这种情况,将其替换为 t a n h ( ⋅ ) tanh(\cdot) tanh()函数。

在下一阶段,来自两种模态的高级非线性特征 f v f^v fv f t f^t ft将被聚合,然后嵌入到融合分支中,以获得不同模态的统一二值码 B h ∈ { 1 , − 1 } c × m B^h \in \{1, -1\}^{c \times m} Bh{ 1,1}c×m
在这里插入图片描述

其中 ⊗ \otimes 是连接操作(concatenation operation), θ h \theta_h θh表示子网络的参数。

通过融合分支的非线性操作,自适应地选择来自多个来源的有意义的信息忽略或抑制不相关的信息,该方法可以获得更有效和更具有代表性的二值表示。

同时 f v f^v fv f t f^t ft以及邻接矩阵 A ~ \tilde{A} A~被送到相应的GCN模块中以获得更多的结构语义。每一层的图卷积过程如下所示:
在这里插入图片描述

  • D ~ i i = ∑ j A ~ i j \tilde{D}_{ii} = \sum_j \tilde{A}_{ij} D~ii=jA~ij W ( l ) k W^k_{(l)} W(l)k作为第 l l l 层第 k k k 个模态的卷积滤波器。
  • σ ( l ) \sigma_{(l)} σ(l)是第 l l l 个GCN层的激活函数。
  • H ( l − 1 ) k ∈ R d l − 1 × m H^k_{(l-1)} \in \mathbb{R}^{d_{l-1} \times m} H(l1)kRdl1×m H ( l ) k ∈ R d l × m H^k_{(l)} \in \mathbb{R}^{d_{l} \times m} H(l)kRdl×m分别表示相应的输入和输出。
  • 在每个GCN的第一层(即 l = 1 l=1 l=1), H ( l − 1 ) k H^k_{(l-1)} H(l1)k表示从对应编码器的倒数第二层提取的特征,即 f v f^v fv f t f^t ft

通过GCN模块,我们可以得到二值码:
在这里插入图片描述

其中 θ g v \theta_{gv} θgv θ g t \theta_{gt} θgt分别是图像GCN和文本GCN的权重参数。

通过公式(6)和(7),我们可以看出,对于一个节点,通过一个图卷积层,即通过加权求和将该节点的邻居连接起来,新的特征被分配给该节点,这意味着鼓励相邻节点的特征更接近。结果所获得的二值码反映了特征空间中固有的空间关系。
此外,还施加了一种有效的亲和矩阵构建策略和相应的相似性约束来优化学习过程,如下所述。


C. Similarity Construction

在无监督跨模态学习中,现有的方法通常利用预先训练的深度神经网络提取非线性特征来构建亲和矩阵,并通过逼近它来学习二值码,这已被证明是可行的。

受这些工作启发,我们提出了一种基于聚合的亲和矩阵构建方案

一、获取原始高级非线性特征

  • 对于每个batch中的第 i i i对的图像,我们将其输入到在ImageNet上预训练的Alexnet中,并从倒数第二层(fc-7)提取 d v d_v dv维表示 Z i ∗ v = [ Z i 1 v , Z i 2 v , … , Z i d v v ] ∈ R d v × m Z^v_{i*} = [Z^v_{i1}, Z^v_{i2}, \dots, Z^v_{id_v}] \in \mathbb{R}^{d_v \times m} Ziv=[Zi1v,Zi2v,,Zidvv]Rdv×m作为其原始高级表示。
  • 对于它在对中的对应文本,我们直接使用它的 d t d_t dt维BoW特征或者原始LDA主题向量作为描述符,表示为 Z i ∗ t = [ Z i 1 t , Z i 2 t , … , Z i d t t ] ∈ R d t × m Z^t_{i*} = [Z^t_{i1}, Z^t_{i2}, \dots, Z^t_{id_t}] \in \mathbb{R}^{d_t \times m} Zit=[Zi1t,Zi2t,,Zidtt]Rdt×m.

将这些特征标准化并将它们集成在一起:
在这里插入图片描述

  • 其中 Z ~ i ∗ v \tilde Z^v_{i*} Z~iv Z ~ i ∗ t \tilde Z^t_{i*} Z~it分别是归一化的 Z i ∗ v Z^v_{i*} Ziv Z i ∗ t Z^t_{i*} Zit
  • γ v \gamma_v γv γ t \gamma_t γt是调节两种模态重要性的权重参数。【由于图像和文本从不同角度描述数据,并且具有不同的统计特性,因此有必要对两种模态采用不同的权重,以自适应地融合来自不同模态的信息。】

二、构建亲和矩阵

在获得原始的高级非线性特征后,我们利用这些特征构建亲和矩阵作为监督信号。
具体来说,我们首先计算这些样本的内积,以量化它们之间的相似性,其定义如下:
在这里插入图片描述

其等效于原始特征之间的余弦相似性的线性组合
在这里插入图片描述

一般来说, C i j C_{ij} Cij越大, Z i ∗ Z_{i*} Zi Z j ∗ Z_{j*} Zj就越相似。

通过利用来自不同模态的融合信息来构建相似性矩阵,假设各种来源(即多模态)携带的补充或补充信息可以相互增强和弥补,我们可以获得更可靠的信息。

尽管如此,仍然有改进的余地。

问题一:单一的余弦测度不足以挖掘足够的结构语义。

  • 某些维度上具有较大差异的两个归一化向量的内积: a = [ 0.5 , 0.5 , 0.5 , 0.5 , 0 ] a=[0.5, 0.5, 0.5, 0.5, 0] a=[0.5,0.5,0.5,0.5,0] b = [ 0.3 , 0.5 , 0.7 , 0.4 , 0.1 ] b=[0.3, 0.5, 0.7, 0.4, 0.1] b=[0.3,0.5,0.7,0.4,0.1] a ⋅ b = 0.95 a \cdot b = 0.95 ab=0.95
  • 与具有小方差的其他对的内积: a = [ 0.5 , 0.5 , 0.5 , 0.5 , 0 ] a=[0.5, 0.5, 0.5, 0.5, 0] a=[0.5,0.5,0.5,0.5,0] c = [ 0.5 , 0.5 , 0.5 , 0.5 , 0 ] c=[0.5, 0.5, 0.5, 0.5, 0] c=[0.5,0.5,0.5,0.5,0] a ⋅ c = 1 a \cdot c = 1 ac=1

这两个内积非常相似。在这种情况下,不能很好地区分实例之间的相似性。

问题二:只考虑非零值可能会忽略有用的信息。
此外,这种方法只考虑两个参与向量的公共非零维,这可能会忽略许多可能有用的信息。举个简单例子,如果一个向量在一个维度上有一个零值,那么无论另一个向量在此维度上有什么值,它们之间的乘积总是零。

为了解决这些问题,我们引入了一个基于数据项之间维度差异的辅助矩阵,以弥补余弦相似性度量的不足。
将辅助矩阵表示为 D D D,并将其与余弦相似性进行聚合,定义如下:
在这里插入图片描述

在实践中,可以 采用许多计算数据之间差异的距离度量来构造 D D D ,例如欧几里得距离、马氏距离等。
在这项工作中,我们使用了基于欧几里得距离的相似性,然后有:
在这里插入图片描述

其中 ρ \rho ρ是个缩放参数。
直观的说,通过从不同角度评估实体来组合相似性信息可以有利于捕获潜在的相似性关系。

此外,这种相似性构建方法有效地弥补了余弦相似性的不足,从而进一步区分了样本点之间的相似性,从而为学习任务提供了更强大的监督信号。例如,根据该方案,a和b的相似性为 0.95 × 0.92 = 0.874 0.95 \times 0.92 = 0.874 0.95×0.92=0.874 ρ \rho ρ=4),而a和c的值为1。这样,a和c被区分开来。

此外,这个矩阵还作为公式(6)中的邻接矩阵 A ~ \tilde A A~用作图卷积运算。
在下面的量化过程中,进一步调节 S = 2 S − 1 S = 2S - 1 S=2S1,给出灵活的量化区域。

【一些现有工作指出,就测量文本数据的相似性而言,余弦相似性是最优的,而基于欧几里得距离的相似性度量对图像数据更好。】我们的方法与该方案不冲突,我们将两个度量都用于相似性度量以可靠的评估样本点之间的关系,加强了该方案。


D. Objective Function

为了确保待学习的二值码严格保持相似关系,定义了以下目标函数,通过重构相似度矩阵来保持模态内的亲和性:
在这里插入图片描述

GCN模块用于为图像和文本编码器的特征提供强大的结构关系,有利于精确的哈希码和嵌入函数的学习。目标函数更新如下:
在这里插入图片描述

在多模态设置中,数据实例来自不同特征空间中表示的不同模态。为了实现有效的跨模态检索,必须将有相同语义结构的异构数据关联起来。
模态间相似性被认为是不同模态的实例之间的相似性。为了保持模态间的一致性,推导出以下损失函数:
在这里插入图片描述

最终目标函数是前面提到的三个单独损失函数的集合,如下所示:
在这里插入图片描述

来自不同模态的特定模态表示 B v , B t B^v, B^t Bv,Bt 通过统一表示 b h b^h bh 进行对齐,并且GCN模块进一步赋予这些嵌入足够的邻域信息。此外,这些二值描述符以及相应嵌入函数的更新是以协作的方式进行的。换句话说,它们在学习过程中是相互作用的。鉴于此,可以有效地弥合模态差距,并可以很好地保持学习二值码和哈希函数的质量。

此外,二值表示 B k , k ∈ { v , t , h , g v , g t } B^k, k \in \{v, t, h, g_v, g_t\} Bk,k{ v,t,h,gv,gt} 都是归一化的。为了简单起见,在损失函数中省略了这个过程。


E. Optimization Algorithm

公式(15)通过交替更新网络参数 θ k , ( k ∈ { v , t , h , g v , g t } ) \theta_k, (k \in \{v, t, h, g_v, g_t\}) θk,(k{ v,t,h,gv,gt})。具体来说,在五个参数中的四个固定的情况下,通过反向传播算法更新另一个参数。

算法1总结了整体优化方案。
在这里插入图片描述


F. Extensions

1)Out-of-Sample
一旦模型经过训练,我们就可以使用它轻松地为任何新的查询样本生成哈希码。具体地说,给定一个查询 o i k ∈ R d k × 1 , k ∈ { v , t } o_i^k \in \mathbb{R}^{d_k \times 1}, k \in \{v, t\} oikRdk×1,k{ v,t},我们可以通过以下公式得到它的哈希码:
在这里插入图片描述

2)More Modalities
通过为每个新模态添加新的子网络并稍微修改目标函数方程(16),所提出的方法也可以很容易地扩展到具有更多模态的情况。
在这里插入图片描述

其中 p p p 表示第 p p p 个模态,高阶相似性矩阵 S S S 可以稍微通过调整我们在等式(12)中定义的高阶相似结构来获得。
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44162361/article/details/131089025

智能推荐

hdu 1229 还是A+B(水)-程序员宅基地

文章浏览阅读122次。还是A+BTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 24568Accepted Submission(s): 11729Problem Description读入两个小于10000的正整数A和B,计算A+B。...

http客户端Feign——日志配置_feign 日志设置-程序员宅基地

文章浏览阅读419次。HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息。FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据。BASIC:仅记录请求的方法,URL以及响应状态码和执行时间。NONE:不记录任何日志信息,这是默认值。配置Feign日志有两种方式;方式二:java代码实现。注解中声明则代表某服务。方式一:配置文件方式。_feign 日志设置

[转载]将容器管理的持久性 Bean 用于面向服务的体系结构-程序员宅基地

文章浏览阅读155次。将容器管理的持久性 Bean 用于面向服务的体系结构本文将介绍如何使用 IBM WebSphere Process Server 对容器管理的持久性 (CMP) Bean的连接和持久性逻辑加以控制,使其可以存储在非关系数据库..._javax.ejb.objectnotfoundexception: no such entity!

基础java练习题(递归)_java 递归例题-程序员宅基地

文章浏览阅读1.5k次。基础java练习题一、递归实现跳台阶从第一级跳到第n级,有多少种跳法一次可跳一级,也可跳两级。还能跳三级import java.math.BigDecimal;import java.util.Scanner;public class Main{ public static void main(String[]args){ Scanner reader=new Scanner(System.in); while(reader.hasNext()){ _java 递归例题

面向对象程序设计(荣誉)实验一 String_对存储在string数组内的所有以字符‘a’开始并以字符‘e’结尾的单词做加密处理。-程序员宅基地

文章浏览阅读1.5k次,点赞6次,收藏6次。目录1.串应用- 计算一个串的最长的真前后缀题目描述输入输出样例输入样例输出题解2.字符串替换(string)题目描述输入输出样例输入样例输出题解3.可重叠子串 (Ver. I)题目描述输入输出样例输入样例输出题解4.字符串操作(string)题目描述输入输出样例输入样例输出题解1.串应用- 计算一个串的最长的真前后缀题目描述给定一个串,如ABCDAB,则ABCDAB的真前缀有:{ A, AB,ABC, ABCD, ABCDA }ABCDAB的真后缀有:{ B, AB,DAB, CDAB, BCDAB_对存储在string数组内的所有以字符‘a’开始并以字符‘e’结尾的单词做加密处理。

算法设计与问题求解/西安交通大学本科课程MOOC/C_算法设计与问题求解西安交通大学-程序员宅基地

文章浏览阅读68次。西安交通大学/算法设计与问题求解/树与二叉树/MOOC_算法设计与问题求解西安交通大学

随便推点

[Vue warn]: Computed property “totalPrice“ was assigned to but it has no setter._computed property "totalprice" was assigned to but-程序员宅基地

文章浏览阅读1.6k次。问题:在Vue项目中出现如下错误提示:[Vue warn]: Computed property "totalPrice" was assigned to but it has no setter. (found in <Anonymous>)代码:<input v-model="totalPrice"/>原因:v-model命令,因Vue 的双向数据绑定原理 , 会自动操作 totalPrice, 对其进行set 操作而 totalPrice 作为计..._computed property "totalprice" was assigned to but it has no setter.

basic1003-我要通过!13行搞定:也许是全网最奇葩解法_basic 1003 case 1-程序员宅基地

文章浏览阅读60次。十分暴力而简洁的解决方式:读取P和T的位置并自动生成唯一正确答案,将题给测点与之对比,不一样就给我爬!_basic 1003 case 1

服务器浏览war文件,详解将Web项目War包部署到Tomcat服务器基本步骤-程序员宅基地

文章浏览阅读422次。原标题:详解将Web项目War包部署到Tomcat服务器基本步骤详解将Web项目War包部署到Tomcat服务器基本步骤1 War包War包一般是在进行Web开发时,通常是一个网站Project下的所有源码的集合,里面包含前台HTML/CSS/JS的代码,也包含Java的代码。当开发人员在自己的开发机器上调试所有代码并通过后,为了交给测试人员测试和未来进行产品发布,都需要将开发人员的源码打包成Wa..._/opt/bosssoft/war/medical-web.war/web-inf/web.xml of module medical-web.war.

python组成三位无重复数字_python组合无重复三位数的实例-程序员宅基地

文章浏览阅读3k次,点赞3次,收藏13次。# -*- coding: utf-8 -*-# 简述:这里有四个数字,分别是:1、2、3、4#提问:能组成多少个互不相同且无重复数字的三位数?各是多少?def f(n):list=[]count=0for i in range(1,n+1):for j in range(1, n+1):for k in range(1, n+1):if i!=j and j!=k and i!=k:list.a..._python求从0到9任意组合成三位数数字不能重复并输出

ElementUl中的el-table怎样吧0和1改变为男和女_elementui table 性别-程序员宅基地

文章浏览阅读1k次,点赞3次,收藏2次。<el-table-column prop="studentSex" label="性别" :formatter="sex"></el-table-column>然后就在vue的methods中写方法就OK了methods: { sex(row,index){ if(row.studentSex == 1){ return '男'; }else{ return '女'; }..._elementui table 性别

java文件操作之移动文件到指定的目录_java中怎么将pro.txt移动到design_mode_code根目录下-程序员宅基地

文章浏览阅读1.1k次。java文件操作之移动文件到指定的目录_java中怎么将pro.txt移动到design_mode_code根目录下

推荐文章

热门文章

相关标签