CN112463215B - 数据处理方法、装置、计算机可读存储介质和计算机设备 - Google Patents

数据处理方法、装置、计算机可读存储介质和计算机设备 Download PDF

Info

Publication number
CN112463215B
CN112463215B CN201910849207.9A CN201910849207A CN112463215B CN 112463215 B CN112463215 B CN 112463215B CN 201910849207 A CN201910849207 A CN 201910849207A CN 112463215 B CN112463215 B CN 112463215B
Authority
CN
China
Prior art keywords
target
row
matrix
element set
index
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910849207.9A
Other languages
English (en)
Other versions
CN112463215A (zh
Inventor
高品
孙仕杰
魏万敬
于东海
涂小刚
李本利
李永安
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910849207.9A priority Critical patent/CN112463215B/zh
Publication of CN112463215A publication Critical patent/CN112463215A/zh
Application granted granted Critical
Publication of CN112463215B publication Critical patent/CN112463215B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)

Abstract

本申请涉及一种数据处理方法、装置、计算机可读存储介质和计算机设备,所述方法包括:获取目标矩阵对应的矩阵索引,以及所述目标矩阵中所选择的目标行的行索引;所述矩阵索引用于查找所述目标矩阵,所述行索引用于从所述目标矩阵中查找所述目标行;获取目标向量;根据所述矩阵索引及所述行索引获取所述目标矩阵中对应的目标行的元素,将所述目标行的元素与所述目标向量进行运算。本申请提供的方案可以节约运算的时间,从而提高了数据处理的效率。

Description

数据处理方法、装置、计算机可读存储介质和计算机设备
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据处理方法、装置、计算机可读存储介质和计算机设备。
背景技术
随着计算机技术的发展,云计算,大数据,移动互联网,人工智能,5G等技术蓬勃兴起。而在这些技术中,需要对大量的数据进行计算处理,例如机器学习、科学计算以及各种信息处理等。在对数据进行处理的过程中,经常会遇到需要对数据矩阵进行运算的情况。
然而,目前的数据处理方法,存在效率低下的问题。
发明内容
基于此,有必要针对效率低下的技术问题,提供一种数据处理方法、装置、计算机可读存储介质和计算机设备。
一种数据处理方法,应用于计算机设备的运算过程,包括:
获取目标矩阵对应的矩阵索引,以及所述目标矩阵中所选择的目标行的行索引;所述矩阵索引用于查找所述目标矩阵,所述行索引用于从所述目标矩阵中查找所述目标行;
获取目标向量;
根据所述矩阵索引及所述行索引获取所述目标矩阵中对应的目标行的元素,将所述目标行的元素与所述目标向量进行运算。
一种数据处理方法,应用于计算机设备的运算过程,包括:
将训练数据输入网络表示学习模型,通过所述网络表示学习模型将所述训练数据转换为目标矩阵;
通过所述网络表示学习模型获取所述目标矩阵对应的矩阵索引,以及所述目标矩阵中所选择的目标行的行索引;所述矩阵索引用于查找所述目标矩阵,所述行索引用于从所述目标矩阵中查找所述目标行;
通过所述网络表示学习模型获取目标向量;
通过所述网络表示学习模型根据所述矩阵索引及所述行索引获取所述目标矩阵中对应的目标行的元素,将所述目标行的元素与所述目标向量进行运算。
一种数据处理装置,应用于计算机设备的运算过程,所述装置包括:
索引获取模块,用于获取目标矩阵对应的矩阵索引,以及所述目标矩阵中所选择的目标行的行索引;所述矩阵索引用于查找所述目标矩阵,所述行索引用于从所述目标矩阵中查找所述目标行;
目标向量获取模块,用于获取目标向量;
运算模块,用于根据所述矩阵索引及所述行索引获取所述目标矩阵中对应的目标行的元素,将所述目标行的元素与所述目标向量进行运算。
一种数据处理装置,应用于计算机设备的运算过程,所述装置包括:
转换模块,用于将训练数据输入网络表示学习模型,通过所述网络表示学习模型将所述训练数据转换为目标矩阵;
索引获取模块,用于通过所述网络表示学习模型获取所述目标矩阵对应的矩阵索引,以及所述目标矩阵中所选择的目标行的行索引;所述矩阵索引用于查找所述目标矩阵,所述行索引用于从所述目标矩阵中查找所述目标行;
目标向量获取模块,用于通过所述网络表示学习模型获取目标向量;
运算模块,用于通过所述网络表示学习模型根据所述矩阵索引及所述行索引获取所述目标矩阵中对应的目标行的元素,将所述目标行的元素与所述目标向量进行运算。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述方法的步骤。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述方法的步骤。
上述数据处理方法、装置、计算机可读存储介质和计算机设备,获取目标矩阵对应的矩阵索引,以及目标矩阵中所选择的目标行的行索引,获取目标向量,根据矩阵索引及行索引可以获取到目标矩阵中对应的目标行的元素,再将目标行的元素与目标向量进行运算,通过矩阵索引可以查找到目标矩阵,再通过行索引可以查找到目标矩阵中的目标行,将查找到的目标行的元素与目标向量进行运算,避免了对目标矩阵中的目标行进行拷贝,再将拷贝后的目标行的元素与目标向量进行运算,从而节约了运算的时间,提高了数据处理的效率。
附图说明
图1为一个实施例中数据处理方法的应用环境图;
图2为一个实施例中数据处理方法的流程示意图;
图3为一个实施例中生成索引的示意图;
图4为一个实施例中运算步骤的流程示意图;
图5为一个实施例中运算的示意图;
图6为一个实施例中第一元素集合与第二元素集合相乘的示意图;
图7为一个实施例中划分数量确定步骤的流程示意图;
图8为另一个实施例中运算步骤的流程示意图;
图9为另一个实施例中数据处理的流程示意图;
图10为另一个实施例中数据处理的流程示意图;
图11a为一个实施例中数据处理装置的结构框图;
图11b为另一个实施例中数据处理装置的结构框图;
图12为另一个实施例中数据处理装置的结构框图;
图13为一个实施例中计算机设备的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为一个实施例中数据处理方法的应用环境图。参照图1,该数据处理方法应用于计算机设备110的运算过程中。计算机设备可以是终端、也可以是服务器,还可以是其他设备,不限于此。终端具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
如图2所示,在一个实施例中,提供了一种数据处理方法,应用于计算机设备的运算过程。该数据处理方法可以应用于计算机设备的CPU(central processing unit,中央处理器)的运算过程,也可以应用于计算机设备的GPU(Graphics Processing Unit,图像处理器)的运算过程,还可以应用于计算机设备的FPU(Float Point Unit,浮点运算器),不限于此。
参照图2,该数据处理方法具体包括如下步骤:
S202,获取目标矩阵对应的矩阵索引,以及目标矩阵中所选择的目标行的行索引;矩阵索引用于查找目标矩阵,行索引用于从目标矩阵中查找目标行。
矩阵指的是一个按照长方阵列排列的复数或实数集合。复数指的是形如a+bi(a,b均为实数)的数,其中a称为实部,b称为虚部,i称为虚数单位。实数包括了有理数和无理数。矩阵中的复数或实数可以作为矩阵的元素。目标矩阵指的是获取的与目标向量进行运算的矩阵。目标矩阵包括了至少一个元素。
当目标矩阵中仅包括一个元素时,目标矩阵为一阶矩阵,即1×1矩阵,表示该矩阵为一行一列的矩阵。当目标矩阵包括了至少两个元素时,例如,目标矩阵为二阶矩阵时,即2×2矩阵,表示该矩阵为两行两列的矩阵;目标矩阵为3×4矩阵时,表示该矩阵为三行四列的矩阵;目标矩阵为1×5矩阵时,即该矩阵为行矩阵(行向量),表示该矩阵为一行五列的矩阵;目标矩阵为6×1矩阵时,即该矩阵为列矩阵(列向量),表示该矩阵为六行一列的矩阵。
计算机设备获取业务数据,将该业务数据转换为对应的目标矩阵。业务数据可包括富媒体数据、图像数据或文本数据等。富媒体数据可包括用户的社交网络数据、用户的行为特征数据。图像数据可包括图像像素点数据。文本数据可包括文章数据或文娱数据等,不限于此。
目标矩阵可以是稠密矩阵,也可以是稀疏矩阵,还可以是其他矩阵,不限于此。其中,稠密矩阵指的是稠密度大于或等于第一稠密度阈值的矩阵,稀疏矩阵指的是稠密度小于或等于第二稠密度阈值的矩阵,第一稠密度阈值大于第二稠密度阈值,稠密度指的是矩阵中的非零元素的数量与矩阵中的所有元素的数量的比值。
第一稠密度阈值和第二稠密度阈值可以根据用户需要进行设定。例如,第一稠密度阈值为90%,当矩阵中包含的非零元素的数量占总数量大于或等于90%,即稠密度大于或等于90%时,该矩阵为稠密矩阵。又如,第二稠密度为5%,当矩阵中包含的非零元素的数量占总数量小于或等于5%,即稠密度小于或等于5%时,该矩阵为稀疏矩阵。
目标行指的是目标矩阵中被选中的行。在目标矩阵中所选择的目标行的数量并不限定,可以是一行,也可以是多行。索引指的是指向对象的逻辑指针。矩阵索引指的是指向目标矩阵的逻辑指针。矩阵索引指向的对象为目标矩阵,通过矩阵索引可以查找到目标矩阵。行索引指的是指向目标行的逻辑指针。行索引指向的对象为目标行,通过行索引可以查找到目标行。
矩阵索引可以是目标矩阵的标识,目标矩阵的标识可以是名称、数字、字母、图像等,如目标矩阵的索引可以是字母M,通过字母M可以查找到目标矩阵。矩阵索引还可以是目标矩阵的字节地址,通过该字节地址可以查找到目标矩阵。矩阵索引还可以是其他的表示形式,不限于此。
同样地,行索引可以是目标行的标识,目标行的标识可以是名称、数字、字母、图像等,如目标行的索引可以是数字03,通过数字03可以查找到目标行,即目标矩阵中的第三行。行索引还可以是行索引的字节地址,通过该字节地址可以查找到目标行。行索引还可以是其他的标示形式,不限于此。
在计算机设备中,可以存储有多个矩阵,每个矩阵中也可以包括多行。因此,矩阵索引通常唯一标示目标矩阵,而行索引通常可以在目标矩阵中唯一标示目标行。
在一个实施例中,目标矩阵可以用于表示图像各个像素点的像素值。例如,当图像的分辨率为600*800时,表示图像的每一行包含了600个像素点,每一列包含了800个像素点,获取图像的各个像素点的像素值,并生成600×800的目标矩阵,即目标矩阵中的每一个元素表示图像中对应位置的像素点的像素值。
在一个实施例中,目标矩阵可以用于表示用户的社交网络。例如,用户A的社交网络包含了好友B、好友C和好友D,统计用户A分别与好友B、好友C和好友D的相关度、亲密度、活跃度,并生成3×3的目标矩阵。在该3×3的目标矩阵中,每一行代表了一个好友的相关度、亲密度和活跃度,每一列代表了一个维度中各个好友的数据。
在一个实施例中,目标矩阵可以用于表示用户的行为特征。例如,分别统计用户A、用户B和用户C的上网时长、上网时刻、经常使用的软件、喜欢下载的软件,并生成3×4的目标矩阵,每一行代表了一个用户的上网时长、上网时刻、经常使用的软件和喜欢下载的软件,每一列代表了每一个行为特征中各个用户的具体数据,如上网时长中60表示用户一天的上网时长为60分钟。
需要指出的是,目标矩阵还可以用于其他领域,例如,目标矩阵可以用于表示公众号的特征、城市的综合实力、细胞的特征,等等,不限于此。
S204,获取目标向量。
目标向量指的是获取的与目标矩阵进行运算的向量。目标向量可以是行向量,也可以是列向量,还可以是由多个行向量或者多个列向量组成的向量,不限于此。其中,行向量指的是仅有一行元素的矩阵,如1×5矩阵,表示该矩阵为一行五列的矩阵。列向量指的是仅有一列元素的矩阵,如6×1矩阵,表示该矩阵为六行一列的矩阵。
可选地,目标向量可以从目标矩阵中获取,也可以从其他矩阵中获取,还可以是用户提供的向量,不限于此。
在一个实施例中,当目标矩阵表示图像各个像素点的像素值时,目标向量可以是滤波信号,计算机设备将目标向量和目标矩阵的目标行的元素进行运算可以对图像进行滤波处理;目标向量还可以是美颜数据,计算机设备将目标向量和目标矩阵的目标行的元素进行运算可以对图像进行美颜处理;目标向量还可以是虚化信号,计算机设备将目标向量和目标矩阵的目标行的元素进行运算可以对图像进行虚化处理,不限于此。
在一个实施例中,当目标矩阵表示用户的社交网络时,目标向量可以是目标矩阵中的行向量,即用户的社交网络中的一个用户的数据,也可以是其他矩阵中的行向量,即除用户的社交网络之外的其他用户的数据。例如,目标矩阵表示用户A的社交网络,目标矩阵的目标行表示好友B、好友C和好友D的相关度、亲密度、活跃度,目标向量表示用户E的相关度、亲密度、活跃度,将目标矩阵的目标行的元素和目标向量进行运算,计算机设备可以对目标矩阵进行更新,也就是说,通过用户E对用户A的社交网络进行更新。
在一个实施例中,当目标矩阵表示用户的行为特征时,目标向量可以是其他的行为特征。例如,目标矩阵表示用户A、用户B和用户C的上网时长、上网时刻、经常使用的软件、喜欢下载的软件,目标向量表示消耗的流量,计算机设备将目标矩阵的目标行的元素和目标向量进行运算,可以对目标矩阵进行更新,也就是说,对用户的行为特征进行更新。
需要指出的是,目标向量还可以用于其他领域,例如,目标向量可以用于表示公众号的特征、城市的综合实力、细胞的特征,等等,不限于此。
S206,根据矩阵索引及行索引获取目标矩阵中对应的目标行的元素,将目标行的元素与目标向量进行运算。
目标矩阵中包含至少一行目标行,目标行中包含至少一个元素。元素的数值代表一个数据,例如,当目标矩阵表示图像各个像素点的像素值时,元素表示像素值;当目标矩阵表示用户的社交网络时,元素可以是相关度、亲密度、活跃度等;当目标矩阵表示用户的行为特征时,元素可以是用户的上网时长、上网时刻、经常使用的软件、喜欢下载的软件等,不限于此。
具体地,计算机设备根据矩阵索引可以查找到目标矩阵,再根据行索引可以从目标矩阵中查找到目标行,并获取目标行中的元素,将目标行的元素与目标向量进行运算。
例如,目标矩阵的矩阵索引为M,目标行的行索引为01、03和05,目标向量为N。计算机设备根据矩阵索引M可以查找到目标矩阵,再根据行索引01、03和05可以查找到目标矩阵中的目标行,即目标矩阵的第1行、第3行和第5行。获取第1行、第3行和第5行中的元素,并将第1行、第3行和第5行的元素与目标向量N进行运算。
在一个实施例中,查找目标矩阵的方法,包括:将矩阵索引与计算机设备中存储的各个矩阵的索引进行匹配;将匹配成功的矩阵作为目标矩阵。
可以理解的是,在计算机设备中,存储有多个矩阵以及多个矩阵的索引,从多个矩阵中查找到目标矩阵,可以将获取到的矩阵索引与计算机设备中存储的各个索引进行匹配。当匹配成功时,表示与矩阵索引相匹配的矩阵为目标矩阵。
例如,获取到的矩阵索引为C,计算机设备中存储有矩阵A、B、C和D,索引分别为A、B、C和D,将矩阵索引与各个矩阵的索引进行匹配,则匹配到矩阵C,矩阵C为目标矩阵。
在一个实施例中,查找目标行的方法,包括:将行索引与目标矩阵中的每一行的索引进行匹配;将匹配成功的行作为目标行。
在目标矩阵中,可以对每一行生成对应的索引,如对每一行进行编号。当获取到目标行的行索引时,可以将行索引与目标矩阵中的每一行的索引逐一进行匹配。当匹配成功时,表示与行索引相匹配的行是目标行。
例如,目标矩阵中包含10行,按照从上到下的顺序对每一行进行编号,即目标矩阵的行的索引从01至10,目标行的行索引为03和05,将行索引03、05分别与目标矩阵中的行的索引进行匹配,则匹配到第三行和第五行是目标行。
将目标行的元素与目标向量进行运算,包括加法运算、减法运算、乘法运算、除法运算等,不限于此。
上述数据处理方法,获取目标矩阵对应的矩阵索引,以及目标矩阵中所选择的目标行的行索引,获取目标向量,根据矩阵索引及行索引可以获取到目标矩阵中对应的目标行的元素,再将目标行的元素与目标向量进行运算,通过矩阵索引可以查找到目标矩阵,再通过行索引可以查找到目标矩阵中的目标行,将查找到的目标行的元素与目标向量进行运算,避免了对目标矩阵中的目标行进行拷贝,再将拷贝后的目标行的元素与目标向量进行运算,从而节约了运算的时间,提高了数据处理的效率。
在一个实施例中,获取一百万点数据的目标矩阵以及对应的目标向量,利用传统的运算方法,如Tensorflow实现的LINE算法进行运算,需要62ms;利用上述数据处理方法进行运算,仅需要12ms,大大节约了运算的时间,从而提高了运算的效率。
在一个实施例中,上述数据处理方法还包括:获取目标矩阵的标识;根据目标矩阵的标识生成矩阵索引;从目标矩阵中确定目标行,并获取目标行的标识;根据目标行的标识生成行索引。
可选地,目标矩阵可以通过用户输入获取的,还可以通过网络表示学习算法将网络中各个节点的数据转换为目标矩阵,不限于此。其中,网络表示学习算法可以将网络中各个节点的数据转换为目标矩阵,并且能够保持原有网络的相关结构和特征。例如,用户的社交网络中的各个节点表示用户的各个好友,当用户与好友的关系较亲密时,则目标矩阵中该好友对应的元素的数值可以较高;当用户与好友的关系较疏远时,则目标矩阵中该好友对应的元素的数值可以较低。
计算机设备获取到目标矩阵的标识之后,可以根据目标矩阵的标识生成目标矩阵的矩阵索引。例如,目标矩阵的标识为M,则生成的矩阵索引可以为M。例如,目标矩阵的标识为1120,则生成的矩阵索引可以为1120。进一步地,计算机设备可以将目标矩阵的标识进行编码,得到矩阵索引。例如,目标矩阵的标识为789,将目标矩阵的标识789进行二进制编码,得到矩阵索引1100010101。
矩阵索引还可以是字节地址、链接地址、各种标识,如字母、字符串、图像等,不限于此。通过矩阵索引可以从计算机的存储设备中查找到目标矩阵。一般地,矩阵索引在计算机的存储设备中具有唯一性。
当目标矩阵中仅有一行时,将该行确定为目标行;当目标矩阵中包括至少两行时,从目标矩阵中选择至少一行作为目标行。获取目标行的标识,根据目标行的标识生成行索引。例如,从目标矩阵中确定3行目标行,3行目标行的标识分别为01,05,10,则生成的3行目标行对应的行索引可以分别为01,05,10。进一步地,计算机设备可以将目标行的标识进行编码,得到行索引。例如,目标行的标识为05,将目标行的标识05进行二进制编码,得到矩阵索引0101。
行索引还可以是字节地址、链接地址、各种标识,如字母、字符串、图像等,不限于此。通过行索引可以从目标矩阵中查找到目标行。一般地,行索引在目标矩阵中具有唯一性。
在一个实施例中,如图3所示,302为目标矩阵,生成目标矩阵302的矩阵索引为304,即标识M,通过M可以从计算机设备中唯一查找到目标矩阵302。目标矩阵302包括100行,从目标矩阵中确定目标行,即第1行、第3行、第4行和第98行,生成每一个目标行的行索引306,即标识01、03、04和98,通过各个行索引可以从目标矩阵中查找到目标行,从而获取目标行中所包含的元素。
上述数据处理方法,获取目标矩阵的标识,根据目标矩阵的标识生成矩阵索引;从目标矩阵中确定目标行,并获取目标行的标识;根据目标行的标识生成行索引,根据矩阵索引和行索引即可获取到目标矩阵中目标行的元素,避免了对目标行进行拷贝,再将拷贝后的目标行的元素与目标向量进行运算,从而节约了运算的时间,提高了数据处理的效率。
在另一个实施例中,目标矩阵可以预先生成矩阵索引,并且目标矩阵中的每一行可以预先生成行索引,从计算机的存储设备中确定目标矩阵之后,可以直接获取目标矩阵对应的矩阵索引;从目标矩阵中确定目标行之后,可以直接获取目标行对应的行索引。
在一个实施例中,从目标矩阵中确定目标行,包括:遍历目标矩阵中的各个元素;当目标矩阵中存在非零元素时,将非零元素所在的行作为候选行;从各个候选行中确定目标行。
遍历指的是依次对目标矩阵中的各个元素做一次且仅做一次访问。非零元素指的是数值不是零的元素。候选行指的是存在非零元素的行。
可以理解的是,零与任何数相乘都等于零。当目标矩阵中的某一行的元素均为零元素时,将该行与目标向量进行相乘之后,得到的依旧为均是零元素的行。因此,将非零元素所在的行作为候选行,从各个候选行中确定目标行。
上述数据处理方法,遍历目标矩阵中的各个元素,当目标矩阵中存在非零元素时,将非零元素所在的行作为候选行,从各个候选行中确定目标行,避免了将均为非零元素的行作为目标行,并与目标向量进行相乘,即避免了不必要的运算,节约了运算的时间,进一步提高了运算的效率。
在一个实施例中,从各个候选行中确定目标行,包括:统计各个候选行的非零元素的数量;当候选行的非零元素的数量大于数量阈值时,将候选行作为目标行。
可以理解的是,非零元素通常表示具体的数据,而零元素通常表示不包含任何数据。例如,非零元素80可以表示用户与好友的亲密度为80,当未查找到用户与好友的亲密度或者用户与好友的亲密度为空时,可以用零元素表示,即0。因此,统计各个候选行的非零元素的数量,当候选行的非零元素的数量大于或等于数量阈值时,表示该候选行所包含的数据较多,则将该候选行作为目标行。
在本实施例中,通过统计各个候选行的非零元素的数量,将非零元素的数量大于数量阈值的候选行作为目标行,而非零元素的数量小于或等于数量阈值的候选行所携带的数据较少,甚至该候选行中的元素均为零元素,则筛选掉非零元素的数量小于或等于数量阈值的候选行进行运算,可以避免目标向量与均为零元素或者非零元素较少的候选行进行运算,提高了运算结果的效率。
在另外一个实施例中,还可以统计候选行的非零元素的数量占候选行的总元素的数量的比例,当比例大于或等于比例阈值时,将候选行作为目标行。
例如,比例阈值为50%,当候选行中的非零元素的数量为8个,候选行的总元素的数量为10时,则候选行对应的比例为80%,大于比例阈值50%,将该候选行作为目标行。
在一个实施例中,根据矩阵索引及行索引获取目标矩阵中对应的目标行的元素,包括:根据矩阵索引查找到目标矩阵;根据行索引从目标矩阵中获取目标行的元素。
根据矩阵索引可以查找到目标矩阵,即根据矩阵索引可以获取到目标矩阵中所有行的元素。例如,目标矩阵的矩阵索引为M,目标矩阵是一个3×4矩阵,即三行四列的矩阵,根据矩阵索引M可以获取到目标矩阵中三行的元素,即12个元素。
根据矩阵索引查找到目标矩阵之后,根据行索引可以从目标矩阵中仅获取目标行的元素,可以更加精确地获取目标行的元素。例如,目标矩阵的矩阵索引为M,目标矩阵是一个3×4矩阵,目标行为第3行,行索引为03,则根据行索引03可以从目标矩阵中仅获取第3行的元素。
在一个实施例中,上述方法还包括:获取元素索引;根据元素索引从所述目标行中获取目标元素。
元素索引指的是目标元素的索引,通过元素索引可以查找到目标元素。目标元素指的是与目标向量进行运算的元素。元素索引包括但不限于字节地址、链接地址、各种标识,如字母、字符串、图像等。一般地,元素索引在目标行中具有唯一性。
可以理解的是,当仅需要将目标行中的特定元素与目标向量进行运算时,则获取元素索引,根据元素索引从目标行中获取目标元素。例如,目标矩阵为M,目标矩阵是一个600×800的矩阵,目标行为第100行,元素索引为50至100,即目标元素包括了目标行中第50个至第100个,根据元素索引可以从目标矩阵中的目标行中仅获取第50个至第100个的元素。
上述数据处理方法,根据矩阵索引可以查找到目标矩阵,再根据行索引可以从目标矩阵中仅获取目标行的元素,可以更加精确地获取目标行的元素。
在一个实施例中,如图4所示,将目标行的元素与目标向量进行运算,包括:
S402,获取划分数量,并根据划分数量对目标向量进行划分得到目标向量的各个区间;划分数量指的是每个区间中所包含元素的个数。
当目标向量所包含元素的数量较大时,计算机设备可以将目标向量分成多个区间,将每个区间所包含的元素与目标矩阵的目标行的元素进行运算。例如,目标向量为行向量,目标向量中包含20个元素,将20个元素按照1-20的顺序进行编号,对目标向量进行划分的数量为5,则可以将目标向量划分为4个区间,即第一个区间包括编号1-5的元素,第二个区间包括编号6-10的元素,第三个区间包括编号11-15的元素,第四个区间包括编号16-20的元素。
可以理解的是,每个区间所包含元素的数量至少为一个;每个区间所包含元素的数量可以相同,也可以不同,不限于此。例如,计算机设备获取到的目标向量的第一个区间所包含元素的数量可以为四个,获取到的目标向量的第二个区间所包含元素的数量可以为四个,获取到目标向量的第三个区间所包含元素的数量可以为一个。
在一个实施例中,获取划分数量,可以根据划分数量对整个目标向量进行划分。例如,目标向量中包含100个元素,划分数量为20,则根据划分数量对整个目标向量进行划分,可以划分为5个区间。
在另一个实施例中,获取划分数量,可以根据划分数量获取当前区间;当对当前区间的第一元素集合运算完成,从第一寄存器中移除第一元素集合之后,根据划分数量获取下一区间。例如,目标向量中包含100个元素,划分数量为20,可以根据划分数量获取当前区间,即包括1-20的元素的区间;当对当前区间的第一元素集合运算完成,从第一寄存器中移除第一元素集合之后,再根据划分数量获取下一区间,即包括21-40的元素的区间。以此类推,可以将整个目标向量划分完成。
S404,基于划分数量,从目标向量中获取当前区间的第一元素集合,并将第一元素集合存放至第一寄存器中。
当前区间指的是从目标向量中获取元素的区间。例如,计算机设备从目标向量中获取第一个区间的元素时,则第一个区间为当前区间;计算机设备从目标向量中获取第四个区间的元素时,则第四个区间为当前区间。第一元素集合指的是用于与目标矩阵的第二元素集合进行运算的元素的集合。每个区间所包含元素的数量至少为一个,则第一元素集合所包含元素的数量也至少为一个。
第一寄存器指的是用于存放第一元素集合的寄存器。寄存器位于计算机设备的CPU(Central Processing Unit,中央处理器)中,可以存储数据,如暂存指令、数据和地址。寄存器包括指令寄存器(IR)、程序计数器(PC)、累加器(ACC)等。
可以理解的是,当数据进行运算时,计算机设备需要将数据存放至寄存器中。因此,当目标向量的当前区间的第一元素集合进行运算时,计算机设备需要将第一元素集合存放至第一寄存器中。第一寄存器的容量大于或等于第一元素集合的数据量。例如,第一寄存器的容量为8字节,则第一元素集合的数据量小于或等于8字节。
具体地,基于划分数量,从目标向量中确定当前区间,并获取当前区间的第一元素集合。例如,当划分数量均为4个时,上个区间为第一个区间,则计算机设备从目标向量中确定的当前区间为第二个区间,即获取目标向量的第5个元素至第8个元素的4个元素作为第一元素集合。
在一个实施例中,计算机设备确定当前区间可以按照目标向量从首至尾的顺序进行确定。例如,当上一个区间为第三个区间时,则当前区间为第四个区间。在另外一个实施例中,计算机设备确定当前区间可以按照其他预设条件进行确定,具体地确定方法可以根据用户需要进行设定,在此不做限定。
S406,将第一元素集合与各个目标行中的第二元素集合依次进行运算;第二元素集合包括目标行中与当前区间对应的元素。
第二元素集合指的是用于与目标向量的第一元素集合进行运算的元素的集合。
当目标矩阵的目标行的元素与目标向量进行运算时,是计算机设备将目标矩阵中的每一个元素与目标向量中对应的元素进行运算。例如,目标矩阵中的目标行的第一个元素与目标向量中的第一个元素相对应,目标矩阵中的目标行的第n个元素与目标向量中的第n个元素相对应。因此,目标矩阵中的目标行所包含元素的数量与目标向量中所包含元素的数量相同;目标矩阵的列数目与目标向量的列数目相同;第二元素集合所包含元素的数量与第一元素集合所包含元素的数量相同。
当目标矩阵中所选择的目标行的数量为一行时,则计算机设备将第一元素集合与目标行中的第二元素集合进行运算。当目标矩阵中所选择的目标行的数量为至少两行时,则计算机设备将第一元素集合与各个目标行中的第二元素集合依次进行运算。
具体地,计算机设备将第一元素集合存放至第一寄存器之后,将第一元素集合与目标矩阵中的其中一个目标行的第二元素集合进行运算,运算完成之后,将第一元素集合与目标矩阵中的下一个目标行的第二元素集合进行运算。以此类推,计算机设备将第一元素集合与目标矩阵中的所有目标行的第二元素集合运算完成之后,从第一寄存器中移除第一元素集合。
在传统的矩阵与向量进行运算的方法中,通常是将向量和矩阵的每一行分割为若干部分,将向量的第一部分与矩阵的第一行的第一部分进行运算,运算完成之后将向量的第二部分与矩阵的第二行的第二部分进行运算。以此类推,将向量与矩阵的第一行运算完成之后,再将向量与矩阵的第二行进行运算,以此类推,将向量与矩阵的所有行进行运算。
而在本申请中,计算机设备将第一元素集合存放至第一寄存器中,将第一元素集合与各个目标行中的第二元素集合依次进行运算,运算完成之后才从第一寄存器中移除第一元素集合,避免了反复将同一区间的第一元素集合存放至第一寄存器中,提高了第一寄存器中的数据重用,从而节约了计算的时间,进一步提高了数据处理的效率。
S408,从第一寄存器中移除第一元素集合,并基于划分数量从目标向量中获取下一区间的第一元素集合。
当第一寄存器中的第一元素集合与各个目标行中的第二元素集合依次运算完成之后,从第一寄存器中移除第一元素集合。其中,移除的方式可以是将第一元素集合移出至内存中,也可以将第一元素集合进行删除处理,不限于此。
计算机设备将第一元素集合移除之后,第一寄存器中可以存放新的数据。基于划分数量,从目标向量中获取下一区间的第一元素集合。例如,当前区间为第一个区间,每个区间所包含元素的数量均为4个,则当前区间的第一元素集合所包含元素为目标向量中的第1个元素至第4个元素,下一区间的第一元素集合所包含元素为目标向量中的第5个元素至第8个元素。
S410,将下一区间的第一元素集合作为当前区间的第一元素集合,返回执行将第一元素集合存放至第一寄存器中步骤,直到目标行的所有元素和目标向量中的所有元素运算完成。
具体地,计算机设备获取到下一区间的第一元素集合之后,将下一区间的第一元素集合作为当前区间的第一元素集合,并将当前区间的第一元素集合存放至第一寄存器中;将第一元素集合与各个目标行中的第二元素集合依次进行运算;从第一寄存器中移除第一元素集合。以此类推,计算机设备可以将目标向量中所包含的所有元素与目标矩阵的所有目标行所包含的所有元素进行运算。
如图5所示,计算机设备根据矩阵索引304,即M查找到目标矩阵,再根据行索引306,即01、03、04和98分别查找到目标行502、目标行504、目标行506和目标行508。目标向量为512,计算机设备获取划分数量,基于划分数量,从目标向量中获取当前区间的第一元素集合514,并将第一元素集合存放至第一寄存器中,如第一寄存器可以是YMM寄存器。计算机设备根据矩阵索引304和行索引306从各个目标行中获取第一元素集合对应的第二元素集合510,将第一元素集合与各个目标行中的第二元素集合依次进行运算。
具体地,计算机设备获取目标行502中第一元素集合对应的第二元素集合,获取第一寄存器中存放的第一元素集合514,将目标行502中第一元素集合对应的第二元素集合与第一元素集合514进行运算。运算完成之后,计算机设备获取目标504中第一元素集合对应的第二元素集合与第一元素集合514进行运算。运算完成之后,计算机设备获取目标506中第一元素集合对应的第二元素集合与第一元素集合514进行运算。运算完成之后,计算机设备获取目标508中第一元素集合对应的第二元素集合与第一元素集合514进行运算。直到所有目标行对应的第二元素集合510运算完成之后,计算机设备从第一寄存器中移除第一元素集合514,并基于划分数量从目标向量512中获取下一个区间的第一元素集合。计算机设备将下一区间的第一元素集合作为当前区间的第一元素集合,并将第一元素集合存放至第一寄存器中,将第一元素集合与各个目标行中的第二元素集合依次进行运算。以此类推,直到目标行502、504、506和508的所有元素和目标向量412中的所有元素运算完成。
在一个实施例中,如图6所示,第一元素集合为604,包含目标向量的四个元素,即1、2、3和4,第二元素集合为602,包含目标行中的四个元素,即1、2、3和4,计算机设备将第一元素集合的元素与第二元素集合的元素进行运算,例如可以进行相乘。其中,“*=”为赋值运算符,当a*=b时,等同于a=a*b。
在另一个实施例中,当目标向量存储在内存中时,计算机设备访问目标向量需要将目标向量存放至缓存中。计算机设备将目标向量与目标矩阵的目标行所包含的元素进行运算时,需要将目标向量的各个第一元素集合存放至第一寄存器中,并将第一元素集合与各个目标行中的第二元素集合依次进行运算,运算完成之后才将第一元素集合从第一寄存器中移除,避免了反复将同一区间的第一元素集合存放至第一寄存器中,同时也避免了反复从缓存中读取同一个第一元素集合,提高了第一寄存器的数据重用,也降低了读取缓存中数据的频率,从而节约了运算的时间,进一步提高了数据处理的效率。
上述数据处理方法,计算机设备将目标向量的当前区间的第一元素集合存放至第一寄存器中,将当前区间的第一元素集合与各个目标行中的第二元素集合依次进行运算,运算完成之后从第一寄存器中移除当前区间的第一元素集合,避免了反复将同一区间的第一元素集合存放至第一寄存器中,提高了第一寄存器中的数据重用,降低了读取缓存中数据的频率,从而节约了运算的时间,进一步提高了数据处理的效率。
在一个实施例中,划分数量的确定方式,包括:
S702,获取目标矩阵或目标向量的数据类型;目标矩阵的数据类型与目标向量的数据类型相同。
数据类型指的是目标矩阵或目标向量的数据的类型。例如,目标矩阵和目标向量的数据类型可以为float(单精度浮点型)、double(双精度浮点型)、int(整数类型)、char(字符类型)等,不限于此。
可以理解的是,目标矩阵中的目标行的元素与目标向量进行运算,相同数据类型的目标矩阵和目标向量可以进行运算,因此目标矩阵的数据类型与目标向量的数据类型相同。
S704,根据数据类型获取对应的单位字节数。
字节(Byte)是计算机信息技术中用于计量存储容量的一种计量单位,作为一个单位来处理的一个二进制数字串。比特(Bit)指的是二进制数字中的位,信息量的度量单位,为信息量的最小单位。例如,一个八位的字节01001100,包含八位的二进制数,即包含了八比特;一个四位的字节1001,包含了四位的二进制数,即包含了四比特。
单位字节数指的是构成一个数据类型所需的字节数,例如,一个数据类型为float的数据包含4个字节,则数据类型float对应的单位字节数为4;一个数据类型为double的数据包含8个字节,则数据类型double对应的单位字节数为8。在一个实施例中,一个元素可以用单位字节数进行表示,即一个元素对应一个数据类型的数据。在其他实施例中,一个元素也可以用单位字节数的整数倍进行表示,如一个元素对应两个数据类型的数据,一个元素对应三个数据类型的数据,不限于此。
S706,获取第一寄存器的容量。
第一寄存器用于存放目标向量的第一元素集合。第一寄存器可以是指令寄存器(IR)、程序计数器(PC)、累加器(ACC)等。第一寄存器的容量指的是可以存放的最大数据量。例如,一个64位的第一寄存器,可以存放8字节的数据,每一个字节包含了8位的数据;一个128位的第一寄存器,可以存放16字节的数据,每一个字节包含了8位的数据。
S708,基于第一寄存器的容量和数据类型的单位字节数确定划分数量。
具体地,计算机设备将第一寄存器的容量除以数据类型的单位字节数,可以确定划分数量。
例如,128位的第一寄存器的容量为16字节,即第一寄存器可以存放16字节的数据,当目标矩阵和目标向量的数据类型均为float时,一个float数据表示一个元素,则数据类型的单位字节数为4,根据公式:T=寄存器容量/4=16/4=4,即划分数量可以为4。其中,T表示划分数量,也表示第一寄存器中可以存放的元素的数量。可选地,第一寄存器也可以存放数量少于4个且大于1个的元素。
上述数据处理方法,计算机设备获取目标矩阵或目标向量的数据类型,根据数据类型获取对应的单位字节数,获取第一寄存器的容量,并基于第一寄存器的容量和单位字节数确定划分数量,可以更加精确地确定每次进行运算的元素的数量,避免了获取过多的元素而无法存放至寄存器的问题,提高了运算的准确性。
在一个实施例中,将第一元素集合与各个目标行中的第二元素集合依次进行运算,包括:
S802,基于划分数量,从各个目标行中获取当前行的当前区间的第二元素集合存入缓存中;第二元素集合的元素数量与第一元素集合的元素数量相同。
缓存(Cache)指的是位于计算机设备的CPU中的高速存储部件。缓存的容量大于寄存器,访问速度快于内存。当访问内存中的数据时,需要首先将数据从内存中存放至缓存中,在缓存中获取数据。当前行指的是从目标矩阵中获取元素所在的行;当前区间指的是从目标行中获取元素所在的区间。例如,计算机设备获取目标矩阵中的元素为第三行中第1个至第4个的元素,每个区间所包含元素的数量均为4个,则当前行为第三行,当前区间为第一个区间。
可以理解的是,划分数量,也可以对目标行进行划分。根据划分数量对每一个目标行进行划分得到目标行的各个区间。
在一个实施例中,根据划分数量对整个目标行进行划分。例如,目标行中包含50个元素,划分数量为10,则根据数量对整个目标行进行划分,可以划分为5个区间。
在另一个实施例中,根据划分数量获取各个目标行的当前区间;当对各个目标行的当前区间的第二元素集合均运算完成之后,根据划分数量获取各个目标行的下一区间。例如,每一个目标行中包含100个元素,划分数量为20,可以根据划分数量获取各个目标行的当前区间,即包括1-20的元素的区间;当对各个目标行的当前区间的第二元素集合均运算完成之后,再根据划分数量获取各个目标行的下一区间,即包括21-40的元素的区间。以此类推,可以将每一个目标行划分完成。
当目标矩阵中的目标行的数量为一行时,则基于划分数量,计算机设备从目标行中获取档当前区间的第二元素集合,并将第二元素集合存入缓存中。
当目标矩阵中的目标行的数量为至少两行时,则首先确定当前行,再从当前行中确定当前区间,目标行中的当前区间与目标向量中的当前区间相对应。
在一个实施例中,可以通过调用预取指令将当前行的当前区间的第二元素集合存入缓存中。其中,预取指令(PREFETCH指令)可以将要使用到的数据从内存中提前存入缓存中,以减少访问内存时的延迟。
S804,将缓存中上一行的当前区间的第二元素集合存入第二寄存器中。
第二寄存器指的是用于存储第二元素集合的寄存器。寄存器位于计算机设备的CPU(Central Processing Unit,中央处理器)中,可以存储数据,如暂存指令、数据和地址。
可以理解的是,在计算机设备的CPU中,当数据进行运算时,需要将数据存放至寄存器中。因此,当目标矩阵的目标行中的第二元素集合与目标向量的第一元素集合进行运算时,需要将第二元素集合存入第二寄存器中。
在缓存中,存储有多个目标行的当前区间的第二元素集合,如上一行的当前区间的第二元素集合和当前行的当前区间的第二元素集合。当将当前行的当前区间的第二元素集合存入缓存中后,可以从缓存中获取上一行的当前区间的第二元素集合,并存入第二寄存器中。当上一行的当前区间的第二元素集合与目标向量的第一元素集合运算完成之后,移除上一行的当前区间的第二元素集合,可以直接从缓存中获取当前行的当前区间的第二元素集合,并存入第二寄存器中,当前行的第二元素集合即可与目标向量的第一元素集合进行运算,节约了运算的时间,进一步提高了数据处理的效率。
在一个实施例中,可以通过第一线程从各个目标行中获取当前行的当前区间的第二元素集合存入缓存中;通过第二线程将缓存中上一行的当前区间的第二元素集合存入第二寄存器中。
线程指的是计算机设备中可以进行运算调度的运作单位,第一进程中可以包括至少一个线程。第一线程指的是用于从各个目标行中获取当前行的当前区间的第二元素集合存入缓存中的线程;第二线程指的是用于将缓存中上一行的当前区间的第二元素集合存入第二寄存器中的线程。第一线程和第二线程可独立工作。
在一个实施例中,第一线程和第二线程可以同时进行工作,即从各个目标行中获取当前行的当前区间的第二元素集合存入缓存中,同时也将缓存中上一行的当前区间的第二元素集合存入第二寄存器中。在其他实施例中,第一线程和第二线程也可以按照顺序进行工作,例如,先通过第一线程从各个目标行中获取当前行的当前区间的第二元素集合存入缓存中,再通过第二线程将缓存中上一行的当前区间的第二元素集合存入第二寄存器中,不限于此。
S806,从第一寄存器中获取第一元素集合,从第二寄存器中获取上一行的当前区间的第二元素集合,并将第一元素集合和第二元素集合进行运算。
第一元素集合存放在第一寄存器中,第二元素集合存放在第二寄存器中,计算机的运算单元从第一寄存器中获取第一元素集合,从第二寄存器中获取上一行的当前区间的第二元素集合,并将第一元素集合和第二元素集合进行运算。
S808,将下一行作为当前行,返回执行基于划分数量,从各个目标行中获取当前行的当前区间的第二元素集合存入缓存中步骤,直到所有目标行中对应的第二元素集合运算完成。
当第一寄存器中的第一元素集合与第二寄存器中的第二元素集合计算完成之后,将下一行作为当前行,基于划分数量,从各个目标行中获取当前行的当前区间的第二元素集合存入缓存中;将缓存中上一行的当前区间的第二元素集合存入第二寄存器中。而目标向量的当前区间的第一元素集合仍存放在第一寄存器中,直到当前区间的第一元素集合与所有目标行的对应区间的第二元素集合运算完成之后,才将当前区间的第一元素集合移除,将下一区间的第一元素集合存放至第一寄存器中,避免了反复将目标向量的同一个数据存放至第一寄存器中,提高了第一寄存器中的数据重用,节约了运算的时间,进一步提高了数据处理的效率。
在一个实施例中,当目标矩阵的列数目为H,目标矩阵中包含的目标行的数目为B,目标向量的列数目也为H。
计算机设备获取目标矩阵或目标向量的数据类型,根据数据类型获取对应的单位字节数,获取第一寄存器的容量,基于第一寄存器的容量和数据类型的单位字节数确定划分数量。例如,目标矩阵和目标向量的数据类型均为float,则数据类型的单位字节数为4,可以根据公式T=寄存器容量/4,得到划分数量。
初始化列变量ColumnIndex和行变量RowIndex,即ColumnIndex=0,RowIndex=0。
从目标向量中获取[ColumnIndex,ColumnIndex+T)区间的元素作为当前区间的第一元素集合,并将当前区间的第一元素集合[ColumnIndex,ColumnIndex+T)存放至第一寄存器中。
计算机设备调用预取指令从各个目标行中获取当前行的当前区间的第二元素集合,即获取第RowIndex+1个目标行的[ColumnIndex,ColumnIndex+T)区间的元素作为第二元素集合,并将当前行的当前区间的第二元素集合[ColumnIndex,ColumnIndex+T)存放至缓存中。
计算机设备从缓存中获取上一行的当前区间的第二元素集合,即第RowIndex个目标行的第二元素集合[ColumnIndex,ColumnIndex+T)存入第二寄存器中。
计算机设备从第一寄存器中获取目标向量的第一元素集合[ColumnIndex,ColumnIndex+T),从第二寄存器中获取上一行的当前区间的第二元素集合[ColumnIndex,ColumnIndex+T),并将第一元素集合和第二元素集合进行运算。
运算完成之后,将RowIndex增加1,返回执行获取第RowIndex+1个目标行的[ColumnIndex,ColumnIndex+T)区间的元素作为第二元素集合步骤,直到所有目标行中对应的第二元素集合运算完成。
当目标向量的当前区间的第一元素集合[ColumnIndex,ColumnIndex+T)与所有目标行中对应的第二元素集合[ColumnIndex,ColumnIndex+T)均运算完成之后,ColumnIndex增加T,返回执行从目标向量中获取[ColumnIndex,ColumnIndex+T)区间的元素作为当前区间的第一元素集合步骤,直到所有目标行的所有元素和目标向量中的所有元素运算完成。
在一个实施例中,上述方法还包括:获取第一元素集合与第二元素集合进行运算得到的运算结果;根据运算结果更新目标矩阵中的目标行的元素。
当第一元素集合的数量为一个时,即整个目标向量为第一元素集合,且当目标矩阵的目标行的数量为一行时,整个目标行为第二元素集合,则第一元素集合与第二元素集合进行运算得到的运算结果为一个,可以将该运算结果更新目标矩阵中的目标行的元素。
当第一元素集合的数量为至少两个时,则第一元素集合与第二元素集合进行运算可以得到多个子运算结果,根据所有子运算结果生成运算结果,并对目标矩阵中的目标行的元素进行更新。
在一个实施例中,获取目标行对应的子运算结果,根据目标行对应的子运算结果对目标行的元素进行更新。
目标行对应的子运算结果,即是目标行中的第二元素集合对应的子运算结果,根据目标行对应的各个子运算结果对目标行的元素进行更新。
例如,目标行包含100个元素,目标行中的每个第二元素集合均包含10个元素,第一元素集合也均包含10个元素集合,计算机设备将各个第一元素集合与目标行中对应的第二元素集合进行运算,可以得到10个子结果,每个子结果包含了10个元素。将10个子结果按照目标行中的第二元素集合的顺序,可以生成包含100个元素的行矩阵,并根据该行矩阵对目标行进行更新。
在一个实施例中,计算机设备对目标矩阵中的目标行的元素进行更新,可以将目标行中的元素替换成对应的运算结果。
在一个实施例中,当目标矩阵表示用户A的社交网路,目标向量表示用户B时,计算机设备将目标矩阵的目标行所包含的元素与目标向量进行运算,根据得到的运算结果对目标矩阵进行更新,更新之后的社交网络体现了用户B对用户A的社交网络的影响,可以更加准确地表示出用户A的社交网络的关系。
在一个实施例中,当目标矩阵表示用户的行为特征网络,目标向量表示其他的行为特征时,计算机设备将目标矩阵的目标行所包含的元素与目标向量进行运算,根据得到的运算结果对目标矩阵进行更新,更新之后的目标矩阵体现了其他的行为特征对用户的行为特征网络的影响,可以更加准确地表示出用户的行为特征网络的关系。
上述数据处理方法,计算机设备获取第一元素集合与第二元素集合进行运算的运算结果,根据运算结果更新目标矩阵中的目标行的元素,则更新之后的目标矩阵可以更加准确地表示出对象中各个节点的关系。
在一个实施例中,上述方法还包括:当计算机设备中存在至少两个第一寄存器时,将至少两个第一寄存器中的第一元素集合与对应的目标行中的第二元素集合同时进行运算;一个第一寄存器中的第一元素集合对应一个目标行中的第二元素集合。
可以理解的是,当计算机设备中存在至少两个第一寄存器时,不同的第一寄存器存放不同的第一元素集合,且第一元素集合与目标行中对应的第二元素集合进行运算,因此,第二寄存器的数量与第一寄存器的数量相同。
当计算机设备中存在至少两个第一寄存器时,则将每一个第一寄存器中的第一元素集合与对应的第二元素集合同时进行运算。在一个实施例中,计算机设备可以获取SIMD(Single Instruction Multiple Data,单指令多数据流)指令,根据SIMD指令将每一个第一寄存器中的第一元素集合与对应的第二元素集合同时进行运算。
例如,计算机设备中存在两个第一寄存器,即第一寄存器A和第一寄存器B,也存在两个第二寄存器,即第二寄存器C和第二寄存器D,第一寄存器A中存放的第一元素集合与第二寄存器C中存放的第二元素集合相对应,第一寄存器B中存放的第一元素集合与第二寄存器D中存放的第二元素集合相对应,则将第一寄存器A中的第一元素集合与第二寄存器C中的第二元素集合进行运算,同时也将第一寄存器B中的第一元素集合与第二寄存器D中的第二元素集合进行运算,可以大大提高运算的效率,从而提高了数据处理的效率。
上述数据处理方法,当计算机设备中存在至少两个第一寄存器时,将至少两个第一寄存器中的第一元素集合与对应的第二元素集合同时进行运算,可以大大提高运算的效率,从而提高了数据处理的效率。
在一个实施例中,当计算机设备中存在至少两个第一寄存器时,将至少两个第一寄存器中的第一元素集合与对应的目标行的第二元素集合同时进行运算的方式,包括:当计算机设备中存在至少两个第一寄存器时,从至少两个第一寄存器中获取至少两个第一元素集合;获取至少两个第一元素集合对应的至少两个第二元素集合;第一元素集合对应一个第二元素集合;将至少两个第一元素集合与对应的第二元素集合同时进行运算。
当计算机设备中存在至少两个第一寄存器时,从目标向量中获取至少两个第一元素集合,并存放至对应的第一寄存器中。当运算时,从至少两个第一寄存器中获取至少两个第一元素集合,并从至少两个第二寄存器中获取至少两个第二元素集合,将至少两个第一元素集合与对应的第二元素集合同时进行运算。其中,一个第一元素集合对应一个第二元素集合,即一个第一寄存器对应一个第二寄存器,第一寄存器的数量与第二寄存器的数量相同。
上述数据处理方法,当计算机设备中存在至少两个第一寄存器时,从至少两个第一寄存器中获取至少两个第一元素集合,获取至少两个第二元素集合,将至少两个第一元素集合与对应的第二元素集合同时进行运算,可以大大提高运算的效率,从而提高了数据处理的效率。
在一个具体的实施例中,如图9所示,数据处理方法包括以下步骤:
S902,获取目标矩阵;生成目标矩阵的矩阵索引。
S904,遍历目标矩阵中的各个元素;当目标矩阵中存在非零元素时,将非零元素所在的行作为候选行。
S906,统计各个候选行的非零元素的数量;当候选行的非零元素的数量大于数量阈值时,将候选行作为目标行;生成目标行的行索引。
S908,获取目标向量;根据矩阵索引及行索引获取目标矩阵中对应的目标行的元素。
S910,获取目标矩阵或目标向量的数据类型;目标矩阵的数据类型与目标向量的数据类型相同;根据数据类型获取对应的单位字节数;获取第一寄存器的容量;基于第一寄存器的容量和数据类型的单位字节数确定划分数量。
S912,判断第一寄存器的数量。
S914,当计算机设备中存在一个第一寄存器时,基于划分数量,从目标向量中获取当前区间的第一元素集合,并将第一元素集合存放至第一寄存器中。
S916,基于划分数量,从各个目标行中获取当前行的当前区间的第二元素集合存入缓存中;第二元素集合的元素数量与第一元素集合的元素数量相同;将缓存中上一行的当前区间的第二元素集合存入第二寄存器中;从第一寄存器中获取第一元素集合,从第二寄存器中获取上一行的当前区间的第二元素集合,并将第一元素集合和第二元素集合进行运算;将下一行作为当前行,返回执行基于划分数量,从各个目标行中获取当前行的当前区间的第二元素集合存入缓存中步骤,直到所有目标行中对应的第二元素集合运算完成。
S918,从第一寄存器中移除第一元素集合,并基于划分数量从目标向量中获取下一区间的第一元素集合;将下一区间的第一元素集合作为当前区间的第一元素集合,返回执行将第一元素集合存放至第一寄存器中步骤,直到目标行的所有元素和目标向量中的所有元素运算完成。
S920,当计算机设备中存在至少两个第一寄存器时,从至少两个第一寄存器中获取至少两个第一元素集合;获取至少两个第一元素集合对应的至少两个第二元素集合;一个第一元素集合对应一个第二元素集合;将至少两个第一元素集合与对应的第二元素集合同时进行运算;一个第一寄存器中的第一元素集合对应一个目标行中的第二元素集合。
S922,获取第一元素集合与第二元素集合进行运算得到的运算结果;根据运算结果更新目标矩阵中的目标行的元素。
在本实施例中,计算机设备获取目标矩阵对应的矩阵索引,以及目标矩阵中所选择的目标行的行索引,获取目标向量,根据矩阵索引及行索引可以获取到目标矩阵中对应的目标行的元素,再将目标行的元素与目标向量进行运算,避免了对目标矩阵中的目标行进行拷贝,节约了运算的时间,提高了数据处理的效率。
计算机设备将目标向量的当前区间的第一元素集合存放至第一寄存器中,将当前区间的第一元素集合与各个目标行中的第二元素集合依次进行运算,运算完成之后从第一寄存器中移除当前区间的第一元素集合,避免了反复将同一区间的第一元素集合存放至第一寄存器中,提高了第一寄存器中的数据重用,降低了读取缓存中数据的频率,从而节约了运算的时间,进一步提高了数据处理的效率。
计算机设备从各个目标行中获取当前行的当前区间的第二元素集合存入缓存中,从缓存中获取上一行的当前区间的第二元素集合存入第二寄存器中,当上一行的当前区间的第二元素集合与第一元素集合运算完成后,可以直接从缓存中获取当前行的第二元素集合存入第二寄存器中,当前行的第二元素集合即可与目标向量的第一元素集合进行运算,节约了运算的时间,进一步提高了数据处理的效率。
在一个实施例中,如图10所示,一种数据处理方法,应用于计算机设备的运算过程,包括:
S1002,将训练数据输入网络表示学习模型,通过网络表示学习模型将训练数据转换为目标矩阵。
网络表示学习算法可以将网络中各个节点的数据转换为目标矩阵,并且能够保持原有网络的相关结构和特征。例如,用户的社交网络中的各个节点表示用户的各个好友,当用户与好友的关系较亲密时,则目标矩阵中该好友对应的元素的数值可以较高;当用户与好友的关系较疏远时,则目标矩阵中该好友对应的元素的数值可以较低。
网络表示学习模型可以将输入的网络中各个节点的数据转换为目标矩阵,并且能够保持原有网络的相关结构和特征,将目标矩阵与目标向量进行运算,从而对目标矩阵进行更新,输出更新后的目标矩阵。
训练数据指的是用于训练网络表示学习模型的数据,如用户的社交网络、用户行为特征网络、产品特征网络等。将训练数据输入网络表示学习模型中时,网络表示学习模型可以基于网络表示学习算法将网络中的各个节点数据转换为目标矩阵。
S1004,通过网络表示学习模型获取目标矩阵对应的矩阵索引,以及目标矩阵中所选择的目标行的行索引;矩阵索引用于查找目标矩阵,行索引用于从目标矩阵中查找目标行。
S1006,通过网络表示学习模型获取目标向量。
S1008,通过网络表示学习模型根据矩阵索引及行索引获取目标矩阵中对应的目标行的元素,将目标行的元素与目标向量进行运算。
可以理解的是,计算机设备将目标矩阵中的目标行所包含的元素与目标向量进行运算,是网络表示学习模型的训练过程的核心操作,通过网络表示学习模块将输入的训练数据转换为目标矩阵,通过获取目标矩阵对应的矩阵索引,以及目标矩阵中所选择的目标行的行索引,获取目标向量,根据矩阵索引及行索引可以获取到目标矩阵中对应的目标行的元素,再将目标行的元素与目标向量进行运算,通过矩阵索引可以查找到目标矩阵,再通过行索引可以查找到目标矩阵中的目标行,将查找到的目标行的元素与目标向量进行运算,避免了对目标矩阵中的目标行进行拷贝,再将拷贝后的目标行的元素与目标向量进行运算,从而节约了运算的时间,提高了数据处理的效率,从而提高了网络表示学习模型进行训练的效率。
图2、图4、图7至图10为一个实施例中数据处理方法的流程示意图。应该理解的是,虽然图2、图4、图7至图10的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、图4、图7至图10中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图11a所示,提供了一种数据处理装置1100,应用于计算机设备的运算过程,包括:索引获取模块1102、目标向量获取模块1104和运算模块1106,其中:
索引获取模块1102,用于获取目标矩阵对应的矩阵索引,以及目标矩阵中所选择的目标行的行索引;矩阵索引用于查找目标矩阵,行索引用于从目标矩阵中查找目标行。
目标向量获取模块1104,用于获取目标向量。
运算模块1106,用于根据矩阵索引及行索引获取目标矩阵中对应的目标行的元素,将目标行的元素与目标向量进行运算。
上述数据处理装置,获取目标矩阵对应的矩阵索引,以及目标矩阵中所选择的目标行的行索引,获取目标向量,根据矩阵索引及行索引可以获取到目标矩阵中对应的目标行的元素,再将目标行的元素与目标向量进行运算,通过矩阵索引可以查找到目标矩阵,再通过行索引可以查找到目标矩阵中的目标行,将查找到的目标行的元素与目标向量进行运算,避免了对目标矩阵中的目标行进行拷贝,再将拷贝后的目标行的元素与目标向量进行运算,从而节约了运算的时间,提高了数据处理的效率。
在一个实施例中,上述运算模块1106还用于根据矩阵索引查找到目标矩阵;根据行索引从目标矩阵中获取目标行的元素。
在本实施例中,根据矩阵索引可以查找到目标矩阵,再根据行索引可以从目标矩阵中仅获取目标行的元素,可以更加精确地获取目标行的元素。
在一个实施例中,上述运算模块1106还用于获取划分数量,并根据划分数量对目标向量进行划分得到目标向量的各个区间;划分数量指的是每个区间中所包含元素的个数;基于划分数量,从目标向量中获取当前区间的第一元素集合,并将第一元素集合存放至第一寄存器中;将第一元素集合与各个目标行中的第二元素集合依次进行运算;第二元素集合包括目标行中与当前区间对应的元素;从第一寄存器中移除第一元素集合,并基于划分数量从目标向量中获取下一区间的第一元素集合;将下一区间的第一元素集合作为当前区间的第一元素集合,返回执行将第一元素集合存放至第一寄存器中步骤,直到目标行的所有元素和目标向量中的所有元素运算完成。
在本实施例中,将目标向量的当前区间的第一元素集合存放至第一寄存器中,将当前区间的第一元素集合与各个目标行中的第二元素集合依次进行运算,运算完成之后从第一寄存器中移除当前区间的第一元素集合,避免了反复将同一区间的第一元素集合存放至第一寄存器中,提高了第一寄存器中的数据重用,降低了读取缓存中数据的频率,从而节约了运算的时间,进一步提高了数据处理的效率。
在一个实施例中,上述运算模块1106还用于获取目标矩阵或目标向量的数据类型;目标矩阵的数据类型与目标向量的数据类型相同;根据数据类型获取对应的单位字节数;获取第一寄存器的容量;基于第一寄存器的容量和数据类型的单位字节数确定划分数量。
在本实施例中,获取目标矩阵或目标向量的数据类型,根据数据类型获取对应的单位字节数,获取第一寄存器的容量,并基于第一寄存器的容量和单位字节数确定划分数量,可以更加精确地确定每次进行运算的元素的数量,避免了获取过多的元素而无法存放至寄存器的问题,提高了运算的准确性。
在一个实施例中,上述运算模块1106还用于基于划分数量,从各个目标行中获取当前行的当前区间的第二元素集合存入缓存中;第二元素集合的元素数量与第一元素集合的元素数量相同;将缓存中上一行的当前区间的第二元素集合存入第二寄存器中;从第一寄存器中获取第一元素集合,从第二寄存器中获取上一行的当前区间的第二元素集合,并将第一元素集合和第二元素集合进行运算;将下一行作为当前行,返回执行基于划分数量,从各个目标行中获取当前行的当前区间的第二元素集合存入缓存中步骤,直到所有目标行中对应的第二元素集合运算完成。
在本实施例中,从各个目标行中获取当前行的当前区间的第二元素集合存入缓存中,从缓存中获取上一行的当前区间的第二元素集合存入第二寄存器中,当上一行的当前区间的第二元素集合与第一元素集合运算完成后,可以直接从缓存中获取当前行的第二元素集合存入第二寄存器中,当前行的第二元素集合即可与目标向量的第一元素集合进行运算,节约了运算的时间,进一步提高了数据处理的效率。
在一个实施例中,上述运算模块1106还用于当计算机设备中存在至少两个第一寄存器时,将至少两个第一寄存器中的第一元素集合与对应的目标行中的第二元素集合同时进行运算;一个第一寄存器中的第一元素集合对应一个目标行中的第二元素集合。
在本实施例中,当计算机设备中存在至少两个第一寄存器时,将至少两个第一寄存器中的第一元素集合与对应的第二元素集合同时进行运算,可以大大提高运算的效率,从而提高了数据处理的效率。
在一个实施例中,上述运算模块1106还用于当计算机设备中存在至少两个第一寄存器时,从至少两个第一寄存器中获取至少两个第一元素集合;获取至少两个第一元素集合对应的至少两个第二元素集合;一个第一元素集合对应一个第二元素集合;将至少两个第一元素集合与对应的第二元素集合同时进行运算。
在本实施例中,当计算机设备中存在至少两个第一寄存器时,从至少两个第一寄存器中获取至少两个第一元素集合,获取至少两个第二元素集合,将至少两个第一元素集合与对应的第二元素集合同时进行运算,可以大大提高运算的效率,从而提高了数据处理的效率。
在一个实施例中,如图11b所示,上述数据处理装置1100还包括:索引生成模块1108和更新模块1110,其中:
索引生成模块1108,用于获取目标矩阵的标识;根据目标矩阵的标识生成矩阵索引;从目标矩阵中确定目标行,并获取目标行的标识;根据目标行的标识生成行索引。
在本实施例中,获取目标矩阵的标识,根据目标矩阵的标识生成矩阵索引;从目标矩阵中确定目标行,并获取目标行的标识;根据目标行的标识生成行索引,根据矩阵索引和行索引即可获取到目标矩阵中目标行的元素,避免了对目标行进行拷贝,再将拷贝后的目标行的元素与目标向量进行运算,从而节约了运算的时间,提高了数据处理的效率。
在一个实施例中,上述索引生成模块1108还用于遍历目标矩阵中的各个元素;当目标矩阵中存在非零元素时,将非零元素所在的行作为候选行;从各个候选行中确定目标行。
在本实施例中,遍历目标矩阵中的各个元素,当目标矩阵中存在非零元素时,将非零元素所在的行作为候选行,从各个候选行中确定目标行,避免了将均为非零元素的行作为目标行,并与目标向量进行相乘,即避免了不必要的运算,节约了运算的时间,进一步提高了运算的效率。
在一个实施例中,上述索引生成模块1108还用于统计各个候选行的非零元素的数量;当候选行的非零元素的数量大于数量阈值时,将候选行作为目标行。
在本实施例中,通过统计各个候选行的非零元素的数量,将非零元素的数量大于数量阈值的候选行作为目标行,而非零元素的数量小于或等于数量阈值的候选行所携带的数据较少,甚至该候选行中的元素均为零元素,则筛选掉非零元素的数量小于或等于数量阈值的候选行进行运算,可以避免目标向量与均为零元素或者非零元素较少的候选行进行运算,提高了运算结果的效率。
更新模块1110,用于获取第一元素集合与第二元素集合进行运算得到的运算结果;根据运算结果更新目标矩阵中的目标行的元素。
在本实施例中,获取第一元素集合与第二元素集合进行运算的运算结果,根据运算结果更新目标矩阵中的目标行的元素,则更新之后的目标矩阵可以更加准确地表示出对象中各个节点的关系。
在一个实施例中,如图12所示,提供了一种数据处理装置1200,应用于计算机设备的运算过程,包括:转换模块1202、索引获取模块1204、目标向量获取模块1206和运算模块1208,包括:
转换模块1202,用于将训练数据输入网络表示学习模型,通过网络表示学习模型将训练数据转换为目标矩阵。
索引获取模块1204,用于通过所述网络表示学习模型获取目标矩阵对应的矩阵索引,以及目标矩阵中所选择的目标行的行索引;矩阵索引用于查找目标矩阵,行索引用于从目标矩阵中查找目标行。
目标向量获取模块1206,用于通过所述网络表示学习模型获取目标向量。
运算模块1208,用于通过所述网络表示学习模型根据矩阵索引及行索引获取目标矩阵中对应的目标行的元素,将目标行的元素与目标向量进行运算。
上述数据处理装置,通过网络表示学习模块将输入的训练数据转换为目标矩阵,通过获取目标矩阵对应的矩阵索引,以及目标矩阵中所选择的目标行的行索引,获取目标向量,根据矩阵索引及行索引可以获取到目标矩阵中对应的目标行的元素,再将目标行的元素与目标向量进行运算,通过矩阵索引可以查找到目标矩阵,再通过行索引可以查找到目标矩阵中的目标行,将查找到的目标行的元素与目标向量进行运算,避免了对目标矩阵中的目标行进行拷贝,再将拷贝后的目标行的元素与目标向量进行运算,从而节约了运算的时间,提高了数据处理的效率,从而提高了网络表示学习模型进行训练的效率。
图13示出了一个实施例中计算机设备的内部结构图。如图13所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现数据处理方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行数据处理方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的数据处理装置可以实现为一种计算机程序的形式,计算机程序可在如图13所示的计算机设备上运行。计算机设备的存储器中可存储组成该数据处理装置的各个程序模块,比如,图11a所示的索引获取模块、目标向量获取模块和运算模块;又如,图12所示的转换模块、索引获取模块、目标向量获取模块和运算模块。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的数据处理方法中的步骤。
例如,图13所示的计算机设备可以通过如图11a所示的数据处理装置中的索引获取模块执行获取目标矩阵对应的矩阵索引,以及目标矩阵中所选择的目标行的行索引。计算机设备可通过目标向量获取模块执行获取目标向量。计算机设备可通过运算模块执行根据矩阵索引及行索引获取目标矩阵中对应的目标行的元素,将目标行的元素与目标向量进行运算。
又如,图13所示的计算机设备可以通过如图12所示的数据处理装置中的转换模块执行将训练数据输入网络表示学习模型,通过网络表示学习模型将训练数据转换为目标矩阵。计算机设备可通过索引获取模块执行通过所述网络表示学习模型获取目标矩阵对应的矩阵索引,以及目标矩阵中所选择的目标行的行索引。计算机设备可通过目标向量获取模块执行通过所述网络表示学习模型获取目标向量。计算机设备可通过运算模块执行通过所述网络表示学习模型根据矩阵索引及行索引获取目标矩阵中对应的目标行的元素,将目标行的元素与目标向量进行运算。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述数据处理方法的步骤。此处数据处理方法的步骤可以是上述各个实施例的数据处理方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述数据处理方法的步骤。此处数据处理方法的步骤可以是上述各个实施例的数据处理方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (15)

1.一种数据处理方法,应用于计算机设备的运算过程,包括:
获取目标矩阵对应的矩阵索引,以及所述目标矩阵中所选择的目标行的行索引;所述矩阵索引用于查找所述目标矩阵,所述行索引用于从所述目标矩阵中查找所述目标行;
获取目标向量;
根据所述矩阵索引及所述行索引获取所述目标矩阵中对应的目标行的元素,将所述目标行的元素与所述目标向量进行运算。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取目标矩阵的标识;
根据所述目标矩阵的标识生成矩阵索引;
从所述目标矩阵中确定目标行,并获取所述目标行的标识;
根据所述目标行的标识生成行索引。
3.根据权利要求2所述的方法,其特征在于,所述从所述目标矩阵中确定目标行,包括:
遍历所述目标矩阵中的各个元素;
当所述目标矩阵中存在非零元素时,将所述非零元素所在的行作为候选行;
从各个所述候选行中确定目标行。
4.根据权利要求3所述的方法,其特征在于,所述从各个所述候选行中确定目标行,包括:
统计各个所述候选行的非零元素的数量;
当所述候选行的非零元素的数量大于数量阈值时,将所述候选行作为目标行。
5.根据权利要求1所述的方法,其特征在于,所述将所述目标行的元素与所述目标向量进行运算,包括:
获取划分数量,并根据所述划分数量对所述目标向量进行划分得到所述目标向量的各个区间;所述划分数量指的是每个区间中所包含元素的个数;
基于所述划分数量,从所述目标向量中获取当前区间的第一元素集合,并将所述第一元素集合存放至第一寄存器中;
将所述第一元素集合与各个所述目标行中的第二元素集合依次进行运算;所述第二元素集合包括所述目标行中与所述当前区间对应的元素;
从所述第一寄存器中移除所述第一元素集合,并基于所述划分数量从所述目标向量中获取下一区间的第一元素集合;
将所述下一区间的第一元素集合作为当前区间的第一元素集合,返回执行所述将所述第一元素集合存放至第一寄存器中步骤,直到所述目标行的所有元素和所述目标向量中的所有元素运算完成。
6.根据权利要求5所述的方法,其特征在于,所述划分数量的确定方式,包括:
获取所述目标矩阵或所述目标向量的数据类型;所述目标矩阵的数据类型与所述目标向量的数据类型相同;
根据所述数据类型获取对应的单位字节数;
获取第一寄存器的容量;
基于所述第一寄存器的容量和所述数据类型的单位字节数确定划分数量。
7.根据权利要求5所述的方法,其特征在于,所述将所述第一元素集合与各个所述目标行中的第二元素集合依次进行运算,包括:
基于所述划分数量,从各个所述目标行中获取当前行的当前区间的第二元素集合存入缓存中;所述第二元素集合的元素数量与所述第一元素集合的元素数量相同;
将所述缓存中上一行的当前区间的第二元素集合存入第二寄存器中;
从所述第一寄存器中获取所述第一元素集合,从所述第二寄存器中获取上一行的当前区间的第二元素集合,并将所述第一元素集合和所述第二元素集合进行运算;
将下一行作为当前行,返回执行所述基于所述划分数量,从各个所述目标行中获取当前行的当前区间的第二元素集合存入缓存中步骤,直到所有目标行中对应的第二元素集合运算完成。
8.根据权利要求5所述的方法,其特征在于,所述方法还包括:
获取所述第一元素集合与所述第二元素集合进行运算得到的运算结果;
根据所述运算结果更新所述目标矩阵中的目标行的元素。
9.根据权利要求5所述的方法,其特征在于,所述方法还包括:
当所述计算机设备中存在至少两个第一寄存器时,将所述至少两个第一寄存器中的第一元素集合与对应的所述目标行中的第二元素集合同时进行运算;一个第一寄存器中的第一元素集合对应一个目标行中的第二元素集合。
10.根据权利要求9所述的方法,其特征在于,当计算机设备中存在至少两个第一寄存器时,将所述至少两个第一寄存器中的第一元素集合与对应的所述目标行的第二元素集合同时进行运算的方式,包括:
当计算机设备中存在至少两个第一寄存器时,从所述至少两个第一寄存器中获取所述至少两个第一元素集合;
获取所述至少两个第一元素集合对应的至少两个第二元素集合;一个第一元素集合对应一个第二元素集合;
将所述至少两个第一元素集合与对应的第二元素集合同时进行运算。
11.一种数据处理方法,应用于计算机设备的运算过程,包括:
将训练数据输入网络表示学习模型,通过所述网络表示学习模型将所述训练数据转换为目标矩阵;
通过所述网络表示学习模型获取所述目标矩阵对应的矩阵索引,以及所述目标矩阵中所选择的目标行的行索引;所述矩阵索引用于查找所述目标矩阵,所述行索引用于从所述目标矩阵中查找所述目标行;
通过所述网络表示学习模型获取目标向量;
通过所述网络表示学习模型根据所述矩阵索引及所述行索引获取所述目标矩阵中对应的目标行的元素,将所述目标行的元素与所述目标向量进行运算。
12.一种数据处理装置,其特征在于,应用于计算机设备的运算过程,所述装置包括:
索引获取模块,用于获取目标矩阵对应的矩阵索引,以及所述目标矩阵中所选择的目标行的行索引;所述矩阵索引用于查找所述目标矩阵,所述行索引用于从所述目标矩阵中查找所述目标行;
目标向量获取模块,用于获取目标向量;
运算模块,用于根据所述矩阵索引及所述行索引获取所述目标矩阵中对应的目标行的元素,将所述目标行的元素与所述目标向量进行运算。
13.一种数据处理装置,其特征在于,应用于计算机设备的运算过程,所述装置包括:
转换模块,用于将训练数据输入网络表示学习模型,通过所述网络表示学习模型将所述训练数据转换为目标矩阵;
索引获取模块,用于通过所述网络表示学习模型获取所述目标矩阵对应的矩阵索引,以及所述目标矩阵中所选择的目标行的行索引;
目标向量获取模块,用于通过所述网络表示学习模型获取目标向量;
运算模块,用于通过所述网络表示学习模型根据所述矩阵索引及所述行索引获取所述目标矩阵中对应的目标行的元素,将所述目标行的元素与所述目标向量进行运算。
14.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至11中任一项所述方法的步骤。
15.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至11中任一项所述方法的步骤。
CN201910849207.9A 2019-09-09 2019-09-09 数据处理方法、装置、计算机可读存储介质和计算机设备 Active CN112463215B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910849207.9A CN112463215B (zh) 2019-09-09 2019-09-09 数据处理方法、装置、计算机可读存储介质和计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910849207.9A CN112463215B (zh) 2019-09-09 2019-09-09 数据处理方法、装置、计算机可读存储介质和计算机设备

Publications (2)

Publication Number Publication Date
CN112463215A CN112463215A (zh) 2021-03-09
CN112463215B true CN112463215B (zh) 2024-06-07

Family

ID=74807411

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910849207.9A Active CN112463215B (zh) 2019-09-09 2019-09-09 数据处理方法、装置、计算机可读存储介质和计算机设备

Country Status (1)

Country Link
CN (1) CN112463215B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106537330A (zh) * 2014-07-25 2017-03-22 高通股份有限公司 通过向量处理器使用向量寄存器堆中的数据索引化累加器使标量操作并行化,以及相关电路、方法和计算机可读媒体
CN107704433A (zh) * 2016-01-20 2018-02-16 南京艾溪信息科技有限公司 一种矩阵运算指令及其方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106537330A (zh) * 2014-07-25 2017-03-22 高通股份有限公司 通过向量处理器使用向量寄存器堆中的数据索引化累加器使标量操作并行化,以及相关电路、方法和计算机可读媒体
CN107704433A (zh) * 2016-01-20 2018-02-16 南京艾溪信息科技有限公司 一种矩阵运算指令及其方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
金席 ; 高小鹏 ; 龙翔 ; .系统中浮点乘累加PE的设计与实现.计算机工程与应用.2006,(第35期),全文. *

Also Published As

Publication number Publication date
CN112463215A (zh) 2021-03-09

Similar Documents

Publication Publication Date Title
CN106852185B (zh) 基于字典的并行压缩编码器
CN112292816B (zh) 处理核心数据压缩和存储系统
US20180121789A1 (en) Data processing method and apparatus
US8775457B2 (en) Efficient string matching state machine
CN112329954B (zh) 物品召回方法、装置、终端设备及存储介质
CN111159329A (zh) 敏感词检测方法、装置、终端设备和计算机可读存储介质
CN111709415B (zh) 目标检测方法、装置、计算机设备和存储介质
CN110097581B (zh) 基于点云配准icp算法构建k-d树的方法
CN112463215B (zh) 数据处理方法、装置、计算机可读存储介质和计算机设备
CN111158732A (zh) 访问数据处理方法、装置、计算机设备及存储介质
CN115862653A (zh) 音频去噪方法、装置、计算机设备和存储介质
CN115630595A (zh) 逻辑电路的自动生成方法、装置、电子设备及存储介质
CN116051345A (zh) 图像数据处理方法、装置、计算机设备及可读存储介质
CN114638845A (zh) 一种基于双阈值的量子图像分割方法、装置及存储介质
CN109992687B (zh) 人脸数据的搜索方法、装置、电子设备及可读存储介质
CN111723246B (zh) 一种数据处理的方法、装置和存储介质
CN113961752A (zh) 信息物理系统的基本可达图的分析方法和相关装置
CN105117733A (zh) 一种确定聚类样本差异的方法及装置
CN110941730A (zh) 基于人脸特征数据偏移的检索方法与装置
CN113259302B (zh) 网络攻击数据的关系分解方法、装置和计算机设备
CN116187458B (zh) 量子电路处理方法、装置及电子设备
CN115640336B (zh) 业务大数据挖掘方法、系统及云平台
CN111291055B (zh) 数据存储方法及装置、数据处理方法及装置、电子设备
CN112464157B (zh) 向量排序方法与排序系统
CN115456858B (zh) 图像处理方法、装置、计算机设备及计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant