没有合适的资源?快使用搜索试试~ 我知道了~
562推荐系统中大词汇分类特征的多粒度量化嵌入学习摘要王正康wckang@ucsd.edu加州大学圣地亚哥分校郑志远,陈婷,易新阳,林东,洪立灿,陈晓。迟{zcheng,iamtingchen,xinyang,dongl,lichan,edchi}@google.com谷歌推荐系统模型通常通过嵌入表示各种稀疏特征,如用户、项目和分类特征标准方法是将每个唯一特征值映射到嵌入向量。生成的嵌入表的大小随着词汇表的大小线性增长。因此,大的词汇量不可避免地导致巨大的嵌入表,产生两个严重的问题:(i)使模型在资源受限的环境中难以处理;(ii)引起过拟合问题。在本文中,我们试图学习高度紧凑的嵌入大词汇稀疏功能的推荐系统(recsys)。首先,我们证明了新的微分积量化(DPQ)方法可以推广到recsys问题。此外,为了更好地处理recsys中常见的幂律数据分布,我们提出了一种多粒度量化嵌入(MGQE)技术,该技术可以为不频繁项学习更紧凑的嵌入。 我们试图提供一个新的角度来提高推荐性能与紧凑的模型大小。在三个推荐任务和两个数据集上的大量实验表明,我们可以达到相当的效果或更好的性能,仅为原始模型大小的20%ACM参考格式:康旺成,程志远,陈婷,易新阳,林东,洪立灿,陈晓。气。2020.推荐系统中大词汇分类特征的多粒度量化嵌入学习。在2020年网络会议(WWW '20 Companion)的配套程序中,2020年4月20日至24日,台北 , 台 湾 。 ACM , 美 国 纽 约 州 纽 约 市 , 5 页 。https://doi.org/10.1145/3366424.33834161介绍在过去的二十年里,分类特征的表示学习一直是一个非常活跃的研究领域[2,13,14]。 虽然独热编码非常强大,但学习分类特征的高效嵌入是一项挑战,特别是当稀疏特征的词汇量很大,并且训练数据高度偏向流行项目时。嵌入表的大小随着词汇表的大小线性增长,导致两个严重的问题:(i)使得模型在资源受限的环境中难以服务;(ii)由于过度参数化而导致过拟合问题。即使工业也是如此。在Googl e完成的工作。本文在知识共享署名4.0国际(CC-BY 4.0)许可下发布作者保留在其个人和公司网站上以适当的署名传播作品的权利WWW©2020 IW 3C 2(国际万维网大会委员会),在知识共享CC-BY 4.0许可下发布。ACM ISBN 978-1-4503-7024-0/20/04。https://doi.org/10.1145/3366424.3383416培训服务图1:在训练和服务期间DPQ嵌入查找过程的说明完整的嵌入被引入以帮助训练,并且在服务期间被丢弃推荐系统具有相当足够的计算能力。例如,在最近关于YouTubeRecommendation [16]的工作中,它揭示了数千万个参数仅用于学习YouTube视频ID的嵌入。为了减少嵌入的模型大小,已经有一些关于嵌入压缩的工作,例如哈希技巧[15],低秩因子分解[11]和量化[6]。另一方面,为了学习更好的躯干和尾部项嵌入,有一系列工作试图将更多的嵌入容量分配给频繁单词,并减少不太频繁单词的容量,从而减少对罕见单词的过拟合[1,4]。受这两条工作线的启发,我们试图提出一个紧凑的嵌入方案与可变容量。此外,这些努力中的许多都集中在自然语言理解任务上。推荐任务的嵌入压缩问题仍有待充分研究。在本文中,我们证明了基于量化的嵌入压缩方法微分积量化(DPQ)[6]可以推广到recsys任务。此外,我们提出了多粒度量化嵌入(MGQE)扩展DPQ与可变嵌入能力,以适应高度倾斜的数据分布在recsys任务。与完整模型相比,MGQE显著减小了模型大小,并具有同等或更好的性能。项目项目查找欧氏空间查找查找查找WWWW.- C. Kang等人563∈J∈联系我们联系我们[] ∈◦J联系我们()~~~变量K~[]K变量D~≥ ≥ ≥ ≥ ≥≥[][]mi=1 Vi=V,Vi对于i<$j,Vj=m,m是组数,V1DK1KD??~D()[]()||||||1.1微分乘积量化(DPQ)[6]是最近的端到端嵌入压缩方法,其基于称为KD编码[5]的高度紧凑的编码方案不像一个热恩-将项映射到部分利用的汉明空间的编码(即,正:V0,1 n),KD编码函数被定义为:. .,KD.例如,当K=3且D=4时,项可以被编码为(1-2-3-1)。而不是采用预先定义的分配(例如,独热编码)或随机映射(例如,散列技巧[15]),DPQ中的编码函数<$是可重构的,并且可以用目标任务进行端到端训练,这允许将相似代码自适应分配给语义相似的项目。在本文中,我们专注于DPQ [6]的矢量量化变体,因为我们发现基于softmax的变体在我们的初步研究中效果不在培训期间,DPQ旨在学习词汇。该模型保持嵌入向量e=e(1);. ;e(D)每个项目的Rd,其中D是子项目空间和e(i)Rd/D是第i个子空间中的嵌入向量。在第i个子空间中,该模型还保持K个可学习的质心嵌入c(i)Rd/D,其中j =1,.,K. KD代码是COM-通过一个产品量化过程,它包含两个过程如下。在第一个编码过程中,我们找到每个子空间中最近质心的索引:<$(e)=(argmin <$e(1)− c(1)<$,.,argmin <$e(D)− c(D)<$)。尾 项 的 紧 凑 嵌 入 为 此 , 我 们 提 出 了多 粒 度 量 化 嵌 入(MGQE),它可以为不同的项目学习不同容量的嵌入。MGQE采用量化嵌入DPQ作为其底层嵌入方案有两个原因:(1)DPQ是一种高度紧凑的端到端嵌入学习方法,并且实现了优异的压缩性能;(2)我们发现量化编码方案(即, KD编码[5])在支持不同容量(例如,改变D和K)。2.1基于频率的划分第一个问题是如何将项目划分为几个组,我们为这些组分配不同的嵌入容量。我们采用一种直观的方法,根据频率对项目进行分区(即, 一个项目在训练集中出现多少次)。 直觉是,受欢迎的项目经常出现在训练集中,并且有更多相关的观察结果,因此我们可能需要大量的容量来学习细粒度的嵌入。基于频率的分区最近已被用于NLP模型[1,4],尽管我们的工作在域中不同(即,推荐模型)和底层嵌入方法(量化嵌入)。我们首先为项目分配升序ID,从最流行的到最不流行的。然后,我们将频率排序的词汇V分成多层分区V =(V1,V2,...,Vm),其中包含最受欢迎的项目,Vm包含最不受欢迎的项目kkkk项目.当我们考虑通常遵循的推荐数据集时,然后,解码函数基于代码简单地检索质心嵌入,并将它们连接为最终嵌入:f k1,...,k=c(1);. ; c(D),其中k1,.,k=дe是为物料计算的KD代码尽管由于argmin运算,整个编码/解码过程fD是不可微的 DPQ解决了这个问题,并使用直通估计器使过程完全可区分[3]。在服务时间,丢弃嵌入向量e,因为我们只需要存储代码(k1,.,kD)对于每个项目和质心低幂律分布,通常我们有V1V2<<. < Vm。 分区是基于数据集统计信息的启发式设置的,如[1,4]所示。2.2具有量化嵌入的多粒度容量KD编码方案在模型大小方面非常灵活,因为我们可以通过调整D(子空间的数量)或K(质心的数量)来改变嵌入容量。 因此,我们可以通过以下公式直接导出多粒度容量分配的两个变体:{c(i)}.我们直接将解码函数f应用于改变K或D。具体地说,我们不使用单个K和D,获取最终嵌入的代码因此,我们只需要nD记录K位以存储每个项目的代码分配,以及K Dd D32= 32Kd比特以存储质心嵌入。通常,代码分配是主要术语,因为它随着词汇量n线性增长。图1描述了DPQ中的查找过程2多颗粒量化包埋通过较低的固有维数D和量化表示,DPQ显著减小了模型大小。然而,通过为每个用户/项目分配相同的代码容量,DPQ没有意识到典型recsys数据集中的高度偏斜的幂律分布,其中一些流行的项目占训练数据的主导地位,而大多数项目(即长尾项)很少观察到。在这种情况下,向所有项目分配相同的嵌入容量是次优的,因为由于数据稀疏性和高嵌入维度,这可能导致对不频繁的用户/项目的过拟合这促使我们通过学习更多的东西来区别对待频繁和不频繁的项目通过使用向量来扩展DPQ以表示每个组的容量分配:K=K1,.,m和D=D1,...,DM 其中K1K2...Km和D1D2...DM。然后,我们学习DPQ嵌入与Ki和Di的项目在Vi。为了简单起见,我们考虑两种变体:(1):使用固定数量的子空间具有可变(2):对于每组使用固定数目的质心K,其中变量D用于每组。通过这种方式,我们为具有不同流行度的项目分配多粒度嵌入容量(和存储空间)。一个简单的例子:假设我们有m=2,D=4,K=16, 8的MGQE嵌入,我们将创建一个DPQ嵌入表,其中D=4和K=16用于V1中的项,以及另一个DPQ嵌入表,其中D=4和K=8用于V2中的项。当检索一个项目的嵌入时,我们首先检查它属于哪个组(V1或V2),然后在相应的DPQ嵌入表中查找然而,上述两种变体的潜在缺点是,我们需要维护一个私有的质心嵌入表,推荐系统中大词汇分类特征的多粒度量化嵌入学习WWW564~~siond,子空间的数量D,中心面的可变数量K←i=1~K~()()××算法1MGQE中的分组嵌入查找过程。超参数:分区V =(V1,V2,...,Vm),embedding dimen-*初始化一个DPQ嵌入类,使用D和K输入:一批物品S=(s1,s2,.. . (B)把S分成m组G1,G2,.. . Gmmrd ingtothepartitionV~190%(用于培训)和10%(用于评估)。我们试图建立一个预测模型来估计看不见的应用程序对的匹配分数。3.2主干推荐模型由于量化嵌入是一种通用的方法,可以直接取代现有的基于梯度下降的嵌入层,Ei←MGQE_embeding_lookup(Gi,Ki)E连接(E1,., Em)重新排序E,使E的第i行是项si的嵌入returnE ∈RB×d修正模型作为测试我们假设的骨干模型:广义矩阵分解(GMF)[9]通过引入用于加权潜在维度的学习线性层扩展了传统矩阵分解;神经矩阵分解(NeuMF)[9]对每一个组,这增加了模型大小(O(.MKid))用于b通过多层感知器(MLP)的用户和项目嵌入;自训练和服务。因此,我们提出了一个多粒度的计划与质心之间共享组。也就是说,我们用D和K维护单个DPQ嵌入表。 对于第i个组中的项目,它只能使用前K个i质心,而不是所有K个质心。通过这种方式,我们实现了多粒度嵌入的灵活性,通过改变K,无需额外存储成本。此外,与DPQ相比,我们进一步减小了模型大小,因为我们仅需要DlogKii> 1位来存储尾项(其占大多数项)的代码分配。我们将这种变体称为共享变量,.默认情况下,我们采用具有共享质心和不同数量的质心(共享,变量K)的变体。然而,作为嵌入查找过程(例如,质心em-要查询的bedding表,使用Vi中的项目的第一个Ki质心,等等)由于同一组别内的项目的处理方法相同,我们建议按组别处理项目具体来说,对于一批物品,我们首先根据它们所属的组将它们分成m组。然后,我们通过检索DPQ嵌入的m个查询来获得每个组的嵌入 由于组的数量m通常很小,我们发现MGQE的这种实现提供了与普通DPQ类似的训练速度。算法1总结了MGQE的查找过程。3实验3.1数据集我们使用两个数据集来评估个性化和非个性化推荐任务:MovieLens-1 M,一个广泛使用的评估协同过滤算法的基准[7] 。该数据集包括6,040 个用户和 3,416 个项目,稀疏度为94.44%。与[8,10]一样,我们将所有评级视为观察到的隐式反馈实例,并根据时间戳对反馈进行排序。对于每个用户,我们保留他们的最后两个动作,并将它们分别放入验证集和测试集。其余的都用于模型训练。应用到应用相关性(AAR ),在Google Play商店中收集的应用到应用相关性数据集,用于评估非个性化的项目到项目推荐[12]。该数据集包括超过1700万个由人类评分员评估的应用程序到应用程序的相关性得分每一对都是唯一的,相关性得分的范围从-100到100,表明一对移动应用程序的相关程度。 该相关性数据集也是高度稀疏的,稀疏度为99.98%。我们随机将1我们在DPQ中的嵌入查找过程中增加了一个附加参数Ki,这意味着我们在搜索最近的质心时只使用前Ki个质心注意顺序推荐(SASRec)[10]是顺序推荐任务的最先进方法,它采用多个自我注意块来捕获用户行为历史中的顺序动态,并在每个时间步预测下一个对于所有方法,嵌入维数d被设置为64其他超参数的设置如相应论文中所建议的3.3推荐任务我们对三个代表性的推荐任务进行实验:任务1:个性化项目推荐,一个传统的任务试图估计用户-项目交互,因此可以用于为用户生成个性化推荐(例如, 任务2:顺序推荐,顺序推荐考虑用户的动作历史中的顺序动态,并且寻求预测用户将与之交互的下一个项目;任务3:项目到项目推荐,非个性化推荐任务,其寻求估计项目到项目的相关性并且通常用于推荐相关产品(例如,产品页面上的“相关产品”)。3.4压缩方法为了测试我们的嵌入压缩技术的有效性我们将它们与三个基线进行比较:全嵌入(FE),这是一种传统的方法,它学习一个完整的嵌入矩阵,其中每行代表一个项目的嵌入;低秩分解(LRF)。一个经典的方法来减少矩阵中的参数我们将嵌入矩阵分解为两个大小为n r和r d的矩阵;标量量化(SQ),一种经典的两步量化技术对于嵌入矩阵中的每个维度,SQ记录最小值和最大值,并将范围均匀量化到2 b个桶中,其中b是位数;可微积量化(DPQ),DPQ [6]学习子空间质心并将嵌入量化到最近的质心。为了公平比较,我们使用TemsorFlow实现所有方法。默认情况下,所有方法的嵌入维数d =64,DPQ的质心数K =256。MGQE采用两层划分,我们将前10%的项视为头项,其余为尾项。对于头部项,质心的数量K1被设置为256,而对于尾部项,质心的数量K2=64为了减少差异,所有对于i=1→m,推荐模型,我们包括三个代表性的建议,WWWW.- C. Kang等人565会傅FLRQDP平方QEMG8.007.757.507.257.006.756.508.0207.819187.6177.4167.2157.01431.5031.2531.0030.7530.5030.2530.0029.7529.500.00.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0模型大小(a) 任务1:MovieLens(GMF)0.00.10.20.30.40.50.60.70.80.91.0版模型大小(b) 任务1:MovieLens(NeuMF)0.00.10.20.30.40.50.60.70.80.91.0版模型大小(c) 任务2:MovieLens(SASRec)0.00.10.20.30.40.50.60.70.80.91.0版模型大小(d) 任务3:AAR(转基因食品)图2:不同模型大小的嵌入压缩方法的性能0.3250.3000.2750.2500.2250.2000.1755 10 1520时代(a) 任务1:转基因食品0.3500.3250.3000.2750.2500.2250.2005 10 1520时代(b) 任务1:NeuMF1.21.00.80.60.40 50 100150时代(c) 任务2:SASRec200图3:在Movielens上的三个推荐模型上MGQE和完全嵌入(FE)的训练损失报告的数字是10次实验结果的平均值3.5评估指标对于个性化推荐问题,我们采用Hit Rate@K来评估推荐性能[8,9]。Hit Rate@K计算地面实况下一个项目在前K个推荐项目中的时间分数请注意,由于每个用户只有一个测试项,因此Hit Rate@10相当于Recall@10,并且与Precision@10成比例。 对于AAR数据集上的相关性估计问题,我们采用均方根误差(RMSE)来评估模型的性能。我们使用服务期间存储模型所需的位数来评估模型大小。完全嵌入的模型大小被用作基线(即,100%),并且压缩方法的报告的模型大小被相应地归一化3.6压缩的结果和讨论图2显示了四个任务中对于完全嵌入,我们改变维数d来调整其模型大小。对于标量量化,我们改变每个维度的比特数。对于DPQ/MGQE,我们改变子空间D的数量。我们可以看到,全嵌入的性能随着模型尺寸的减小而显著下降,这表明直接降低维度并不是压缩推荐模型的有效方法。 在模型大小相同的情况下,MGQE具有最好的性能;在推荐性能相同的情况下,MGQE具有最小的模型大小。因此,MGQE是一种有效的嵌入学习和压缩方法,可以用于实现更好的性能和压缩推荐模型。基于对三种推荐模型(GMF,NeuMF,SASRec)应用嵌入压缩方法的结果,两个数据集(MovieLens和AAR),我们发现(1)DPQ在大多数情况下匹配在所有情况下都匹配(有时提高)全嵌入的性能。这验证了量化嵌入能够在匹配甚至提高模型性能的同时减小模型大小。此外,我们发现MGQE在不同压缩比下通常优于基线。这验证了MGQE在recsys任务中优于其他压缩方法。3.7收敛由于MGQE可以直接替换整个嵌入层,因此研究MGQE的训练以检查优化过程是否与原始过程相同或相似是很重要通过这样做,我们可以检查一些潜在的问题,例如由于离散和紧凑的嵌入结构而导致的不稳定训练或收敛速度慢。图3显示了MGQE在MovieLens数据集上的三个推荐模型上的训练曲线,并与完全嵌入进行了比较。 与我们的其他实验一样,我们使用默认的超参数(例如,学习率、批量大小等)最初是为完全嵌入而设计的我们可以看到,MGQE的训练过程是稳定的,并且非常接近全嵌入的训练过程这表明MGQE在收敛轨迹方面与完全嵌入的行为4结论和今后的工作本文研究了推荐系统的嵌入压缩问题,提出了多粒度量化嵌入(MGQE)方法来压缩大词汇量的分类特征。MGQE采用可微量化表示来减小模型规模,并通过减少尾项的质心来进一步减少存储空间MGQE是一种通用方法ML会傅RFQDP平方GQEMGQE会傅FLRQDP平方MGQEDPQSQ充分FeMGQEFeMGQEFeMGQEHR@10(%)损失HR@10(%)损失HR@10(%)损失RMSE推荐系统中大词汇分类特征的多粒度量化嵌入学习WWW566其可用于替换现有推荐模型中的嵌入层,并针对目标任务进行端到端我们针对三种不同的推荐任务,对三种具有代表性的推荐模型进行了大量的压缩实验。我们的研究结果表明,MGQE优于基线,并达到了完整模型的性能与近20%的完整模型的大小。在未来,我们计划研究(i)用于多粒度容量分配的学习细(iii)推荐模型的量化神经网络权重引用[1] Alexei Baevski和Michael Auli2019年。神经语言建模的自适应输入表示在第七届国际会议上学习表示,ICLR 2019,新奥尔良,洛杉矶,美国,2019年5月6日至9日。https://openreview.net/forum? ID=ByxZX20qFQ[2] 约瑟芬·本吉奥,让·杜夏姆,帕斯卡·文森特。两千一种神经概率语言模型。 在Advances in Neural Information Processing Systems 13 中 , Papers from NeuralInformation Processing Systems (NIPS )2000 ,Denver ,CO ,USA 。 932- 938http://papers.nips.cc/paper/1839-a-neural-probabilistic-language-model[3] Yoellow Bengio,Nicholas Léonard,and Aaron C.考维尔2013年。通过条件计算的随机神经元来估计或消除干扰。CoRRabs/1308.3432(2013)。 http://arxiv.org/abs/1308.3432[4] 帕 特 里 克 ·HChen , Si Si , Yang Li , Ciprian Chelba , and Cho-JuiHsieh.2018年GroupReduce:Block-Wise Low-Rank Approximation for NeuralLanguage Model Shrink-ing. 在神经信息处理系统的进展31:2018年神经信息处理系统年会,NeurIPS 2018,2018年12月3日至8日,加拿大蒙特利尔。11011-11021.http://papers.nips.cc/paper/8295-groupreduce-block-wise-low-rank-approximation-for-neural-language-model-shrinking[5] Ting Chen,Martin Renqiang Min,and Yizhou Sun. 2018.学习K路D维离散码的紧凑嵌入表示。第35届国际机器学习会议论文集,ICML 2018,斯德哥尔摩,瑞典,2018年7月10日至15日。853-862 http://proceedings.mlr.press/v80/chen18g.html[6] 陈 婷 和 孙 一 舟 2019 年 。 用 于 端 到 端 嵌 入 压 缩 的 可 微 积 量 化 。CoRRabs/1908.09756(2019)。http://arxiv.org/abs/1908.09756[7] F. Maxwell Harper和Joseph A.康斯坦2016年。MovieLens数据集:历史和背景。TiiS5,4(2016),19:1https://doi.org/10.1145/2827872[8] Ruining He,Wang-Cheng Kang,and Julian J.麦考利2017年。基于翻译的建议 第十一届ACM推荐系统会议论文集,RecSys 2017,意大利科莫,2017年8月27日至31日。161-169. https://doi.org/10。1145/3109859.3109882[9] Xiangnan He,Lizi Liao,Hanwang Zhang,Liliang Nie,Xia Hu,and Tat-Seng Chua. 2017年。神经协同过滤第26届万维网国际会议论文集,WWW2017 , 澳 大 利 亚 珀 斯 , 2017 年 4 月 3 日 至 7 日 。173- 182.https://doi.org/10.1145/3038912.3052569[10] 作者:J.麦考利2018年自我注意顺序推荐。在IEEE数据挖掘国际会议,ICDM2018,新加坡,2018年11月17日至20日。197-206. https://doi.org/10.1109/ICDM.2018.00035[11] Zhenzhong Lan , Mingda Chen , Sebastian Goodman , Kevin Gimpel ,Piyush Sharma,and Radu Soricut. 2019年。ALBERT:A Lite BERT for Self-Supervised Learning-ing of Language Representations. CoRRabs/1909.11942(2019)。arXiv:1909.11942http://arxiv.org/abs/1909.11942[12] 格雷格·林登布伦特·史密斯和杰里米·约克2003年。 Amazon.com推荐:项目 到 项 目 协 同 过 滤 。 IEEE Internet Computing7 , 1 ( 2003 ) , 76-80.https://doi.org/10.1109/MIC.2003.1167344[13] Tomas Mikolov,Ilya Sutskever,Kai Chen,Gregory S.科拉多和杰弗里·迪恩。2013.词和短语的分布式表示及其组合性。在神经信息处理系统的进展26:27神经信息处理系统年会2013。2013年12月5日至8日在美国内华达州太 浩 湖 举 行 的 会 议 记 录 3111- 3119 http://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality[14] David E Rumelhart,Geoffrey E Hinton,and Ronald J Williams.一九八六年通过反向传播误差学习表示Nature323,6088(1986),533.[15] 基利安Q Weinberger,Anirban Dasgupta,John Langford,Alexander J.Smola,and Josh Attenberg.2009年用于大规模多任务学习的特征散列第26届机器学习国际年会论文集,ICML 2009,蒙特利尔,魁北克,加拿大,2009年6月14日至18日。1113-1120。网 址 ://doi. 1553374.1553516[16] Xinyang Yi , Ji Yang , Lichan Hong , Derek Zhiyuan Cheng , LukaszHeldt,Aditee Kumthekar,Zhe Zhao,Li Wei,and Ed H.气。2019. 采样偏差校正用于大型语料库项目推荐的神经建模 第13届ACM推荐系统会议论文集,RecSys 2017 , 丹麦哥 本 哈 根 , 2019 年 9 月 16 日 至 20 日 。 269-277 。https://doi.org/10.1145/3298689.3346996
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功