CN110969247A - 基于神经网络的张量处理方法、装置和电子设备 - Google Patents
基于神经网络的张量处理方法、装置和电子设备 Download PDFInfo
- Publication number
- CN110969247A CN110969247A CN201811163170.6A CN201811163170A CN110969247A CN 110969247 A CN110969247 A CN 110969247A CN 201811163170 A CN201811163170 A CN 201811163170A CN 110969247 A CN110969247 A CN 110969247A
- Authority
- CN
- China
- Prior art keywords
- tensor
- memory
- stored
- tensors
- backed
- 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.)
- Granted
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 44
- 238000003672 processing method Methods 0.000 title claims abstract description 16
- 238000000034 method Methods 0.000 claims abstract description 38
- 230000008569 process Effects 0.000 claims abstract description 18
- 238000004590 computer program Methods 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 12
- 230000006872 improvement Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了一种基于神经网络的张量处理方法、装置和电子设备。在神经网络的运算过程中,确定获取待存储张量,如果第一存储器中的空闲存储空间小于待存储张量的第一占用空间,在第一存储器中已存储的张量中确定待备份张量,将待备份张量中的部分张量存储在第二存储器中,基于空闲存储空间和第二占用空间,将待存储张量存储在第一存储器中。相比于备份待备份张量的全部,本申请只将待备份张量中的部分张量存储在第二存储器中,从而减少备份量,进而减少了备份所需耗费的时间,提高了备份效率,由于在备份之后才能在第一存储空间中存储待存储张量,进而才能使用待存储张量执行神经网络中的预设运算,因此,可以提高整体的运算效率。
Description
技术领域
本申请涉及计算机技术领域,且更具体地,涉及一种基于神经网络的张量处理方法、装置和电子设备。
背景技术
在神经网络在实际实际芯片上的运行过程中,芯片往往需要按顺序依次执行多个不同的张量运算。对于任意一个运算,在执行该运算时,首先要将需要参与该运算的输入数据存储在第一存储器中,然后芯片从第一存储器中读取该运算的输入数据,再对该输入数据执行该运算,得到该运算的输出数据,然后从第一存储器中删除不需要参与之后的每一个运算的数据。
其次,该运算的输出数据往往又是之后的某一个运算的输入数据,因此,为了能够顺利执行之后依赖概论计算输出结果的某一个运算,则需要将该运算的输出数据存储在第一存储器中。
假设该运算的输出数据需要参与与该运算相邻的下一个运算,则此时需要立刻将该运算的输出数据存储在第一存储器中,但是,如果此时第一存储器中存储的数据较多,则会导致第一存储器中的空闲存储空间无法容纳该运算的输出数据,进而导致芯片无法执行下一个运算。
为了能够将该运算的输出数据存储第一存储器中,以使芯片能够执行下一个运算,则此时需要将在第一存储器中存储的数据备份至第二存储器中,以实现释放了第一存储器中的部分存储空间,以使释放了存储空间的第一存储器中的空闲存储空间能够容纳该运算的输出数据。
然而,在现有技术中,当需要在第一存储器中存储数据A时,如果此时第一存储器中存储了其他数据且第一存储器的空闲存储空间无法容纳数据A,则需要将在第一存储器存储的至少一个数据整体全部在第二存储器中备份,然后使用数据A在第一存储器中覆盖该至少一个数据,然而,将在第一存储器存储的该至少一个数据整体全部在第二存储器中备份需要耗费较长时间,备份效率较低,由于将在第一存储器存储的至少一个数据整体全部在第二存储器中备份之后才能使用数据A在第一存储器中覆盖该至少一个数据,进而才能使用数据A执行运算,因此整体的运算效率较低。
发明内容
为了解决上述技术问题,提出了本申请。本申请的实施例提供了一种基于神经网络的张量处理方法、装置和电子设备,其可以提高整体的运算效率。
根据本申请的一个方面,提供了一种基于神经网络的张量处理方法,包括:
在所述神经网络的运算过程中,确定获取待存储张量;如果第一存储器中的空闲存储空间小于所述待存储张量的第一占用空间,在所述第一存储器中已存储的张量中确定待备份张量;将所述待备份张量中的部分张量存储在第二存储器中,所述空闲存储空间与所述部分张量的第二占用空间之和大于或等于所述第一占用空间;基于所述空闲存储空间和所述第二占用空间,将所述待存储张量存储在所述第一存储器中。
根据本申请的另一方面,提供了一种基于神经网络的张量处理装置,包括:
第一确定模块,用于在所述神经网络的运算过程中,确定获取待存储张量;第二确定模块,用于如果第一存储器中的空闲存储空间小于所述待存储张量的第一占用空间,在所述第一存储器中已存储的张量中确定待备份张量;第一存储模块,用于将所述待备份张量中的部分张量存储在第二存储器中,所述空闲存储空间与所述部分张量的第二占用空间之和大于或等于所述第一占用空间;第二存储模块,用于基于所述空闲存储空间和所述第二占用空间,将所述待存储张量存储在所述第一存储器中。
根据本申请的另一方面,提供了一种电子设备,包括:处理器;存储器;以及存储在所述存储器中的计算机程序指令,所述计算机程序指令在被所述处理器运行时使得所述处理器执行上述的基于神经网络的张量处理方法。
根据本申请的另一方面,提供了一种计算机程序产品,包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行上述的基于神经网络的张量处理方法。
根据本申请的另一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行上述的基于神经网络的张量处理方法。
在本申请中,在神经网络的运算过程中,确定获取待存储张量。如果第一存储器中的空闲存储空间小于待存储张量的第一占用空间,在第一存储器中已存储的张量中确定待备份张量。无需在第二存储器中备份待备份张量的全部,只需将待备份张量中的部分张量存储在第二存储器中,且该空闲存储空间与该部分张量的第二占用空间之和大于或等于第一占用空间;基于空闲存储空间和第二占用空间,将待存储张量存储在第一存储器中。
相比于备份待备份张量的全部,本申请只将待备份张量中的部分张量存储在第二存储器中,从而减少备份量,进而减少了备份所需耗费的时间,提高了备份效率,由于在备份之后才能在第一存储空间中存储待存储张量,进而才能使用待存储张量执行神经网络中的预设运算,因此,由于备份效率的提高而可以提高整体的运算效率。
附图说明
通过结合附图对本申请实施例进行更详细的描述,本申请的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与本申请实施例一起用于解释本申请,并不构成对本申请的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1根据本申请实施例示出了一种基于神经网络的张量处理方法的流程图。
图2根据本申请实施例示出了一种确定待备份张量的流程图。
图3根据本申请实施例示出了一种存储待备份张量中的部分张量的流程图。
图4根据本申请实施例示出了一种存储器的示意图。
图5根据本申请实施例示出了一种存储器的示意图。
图6根据本申请实施例示出了一种存储器的示意图。
图7根据本申请实施例示出了一种基于神经网络的张量处理装置的框图。
图8根据本申请实施例示出了一种基于神经网络的张量处理装置的框图。
图9根据本申请实施例示出了一种电子设备的框图。
具体实施方式
下面,将参考附图详细地描述根据本申请的示例实施例。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是本申请的全部实施例,应理解,本申请不受这里描述的示例实施例的限制。
在本申请中,在神经网络的运算过程中,往往包含有多个预设运算,多个预设运算具有先后运算顺序,每一个预设运算都需要有输入张量的参与,并在运算后得到输出张量,运算顺序靠前的预设运算的输出张量可能是顺序靠后的预设运算的输入张量。本申请在执行一个预设运算后得到输出张量时,如果需要立刻使用输出张量执行下一预设预算,则需要将输出张量存储在第一存储器中,如果第一存储器此时的空闲存储空间小于输出张量的占用空间,则需要将第一存储器中已存储的某张量的部分张量备份至第二存储器中,再基于空闲存储空间和该部分张量在第一存储器中的占用空间将输出张量存储在第一存储器中。具体方法参见如下实施例,在此不做详述。
示例性方法
图1图示了根据本申请实施例的基于神经网络的张量处理方法的流程图。
如图1所示,根据本申请实施例的基于神经网络的张量处理方法可以包括:
在步骤S101中,在神经网络的运算过程中,确定获取待存储张量。
当通过第一运算得到输出张量时,如果第一运算的输出张量需要参与在该先后运算顺序上的位于第一运算之后且与第一运算相邻的第二运算,则需要将第一运算的输出张量作为待存储张量存储在第一存储器中,以供在执行第二运算时能够使用第一运算的输出张量。第一运算是神经网络中具有先后运算顺序的多个预设运算中的一个运算。
当通过第一运算得到输出张量时,需要判断该输出张量是否需要参与在该先后运算顺序上的位于第一运算之后且与第一运算相邻的第二运算,如果需要参与在该先后运算顺序上的位于第一运算之后且与第一运算相邻的第二运算,则将该输出张量确定为待存储张量。
其中,待存储张量包括输入数据、神经网络中参与运算的神经元的权重参数以及偏置量等。
在步骤S102中,如果第一存储器中的空闲存储空间小于待存储张量的第一占用空间,在第一存储器中已存储的张量中确定待备份张量。
在一实施例中,在神经网络的运算过程中,每当需要执行一个预设运算,则首先要确定需要参与该预设运算的张量,并将需要参与该预设运算的张量存储在第一存储器中,然后从第一存储器中获取需要参与该预设运算的张量,再使用需要参与该预设运算的张量执行该预设运算。其中,第一存储器包括SRAM(Static Random-Access Memory,静态随机存取存储器)等。
在一实施例中,由于待存储张量自身具备第一占用空间,如此,如果将待存储张量存储在第一存储器中,需要占用第一存储器中的与第一占用空间等值的存储空间。
如果第一存储器中的空闲存储空间大于或等于待存储张量的第一占用空间,则说明此时第一存储器中的空闲存储空间可以容纳待存储张量,进而可以直接在第一存储器中存储待存储张量。
如果第一存储器中的空闲存储空间小于待存储张量的第一占用空间,则说明此时第一存储器中的空闲存储空间无法容纳待存储张量,进而无法直接在第一存储器中存储待存储张量,可以将在第一存储器中的已存储的某一张量的部分张量备份在第二存储器中,以使在第一存储器中的已存储的该张量的部分张量可以被覆盖,进而可以使用在第一存储器中存储该部分张量的存储空间存储待存储张量,或者,使用空闲存储空间和在第一存储器中存储该部分张量的存储空间存储待存储张量。
其中,在一实施例中,如果第一存储器中的空闲存储空间小于待存储张量的第一占用空间,则需要在第一存储器中已存储的张量中确定待备份张量,然后执行步骤S103。
在步骤S103中,将待备份张量中的部分张量存储在第二存储器中,该空闲存储空间与该部分张量的第二占用空间之和大于或等于第一占用空间。
其中,将待备份张量中的部分张量存储在第二存储器中可以实现对待备份张量中的该部分张量备份,进而使得在第一存储器中存储的待备份张量中的该部分张量可以被覆盖,也即待备份张量中的该部分张量在第一存储器中的占用空间可以被用于存储待存储张量。
其中,在一实施例中,第一存储器的存储总空间小于第二存储器的存储总空间;第一存储器的数据读写速率大于第二存储器的数据读写速率。
在一实施例中,第二存储器包括内存等。
在步骤S104中,基于空闲存储空间和第二占用空间,将待存储张量存储在第一存储器中。
在一实施例中,在神经网络的运算过程中,确定获取待存储张量。如果第一存储器中的空闲存储空间小于待存储张量的第一占用空间,在第一存储器中已存储的张量中确定待备份张量。无需在第二存储器中备份待备份张量的全部,只需将待备份张量中的部分张量存储在第二存储器中,且该空闲存储空间与该部分张量的第二占用空间之和大于或等于第一占用空间;基于空闲存储空间和第二占用空间,将待存储张量存储在第一存储器中。
相比于备份待备份张量的全部,本申请只将待备份张量中的部分张量存储在第二存储器中,从而减少备份量,进而减少了备份所需耗费的时间,提高了备份效率,由于在备份之后才能在第一存储空间中存储待存储张量,进而才能使用待存储张量执行神经网络中的预设运算,因此,由于备份效率的提高而可以提高整体的运算效率。
进一步地,在基于空闲存储空间和第二占用空间,将待存储张量存储在第一存储器中之后,当待备份张量需要参与运算时,为了能够使用待备份张量执行运算,需要将在第二存储空间中备份的部分张量重新存储在第一存储器中。
参见图2,步骤S102可以包括通过如下流程实现,包括:
在步骤S201中,确定需要参与第二运算的运算张量,第二运算为多个预设运算中与第一运算相邻且位于第一运算之后的运算。
在一实施例中,多个预设运算中的每一个预设运算均具备运算顺序编号,先后运算顺序相邻的两个预设运算的运算顺序编号相邻,先后运算顺序靠后的预设运算的运算顺序编号大于先后运算顺序靠前的预设运算的运算顺序编号。
因此,可以在多个预设运算中,确定与第一运算的运算编号相邻,且大于第一运算的运算编号的运算编号,将确定出的运算编号所对应的预设运算作为与第一运算相邻且位于第一运算之后的第二运算,然后在第一存储器已存储的张量中确定需要参与第二运算的运算张量。
在步骤S202中,将第一存储器中已存储的张量中除运算张量以外的张量确定为待备份张量。
其中,待存储张量是基于第一运算得到的,在第一运算被执行完毕之后需要立刻执行第二运算,第一存储器中存储的张量中可能存在需要参与第二运算的运算张量,也即,存在执行第二运算时需要使用到的运算张量,因此此时需要保障需要参与第二运算的运算张量存储在第一存储器中,否则无法顺利执行第二运算,所以,为了能够顺利执行第二运算,在第一存储器中存储待存储张量时不能覆盖需要参与第二运算的运算张量,进而也就无需在第二存储器中备份需要参与第二运算的运算张量,只需在第二存储器中备份在第一存储器已存储的张量中的除该运算张量以外的张量即可,因此,可以将在第一存储器已存储的张量中的除该运算张量以外的张量确定为待备份张量。
在一个实施例中,在第一存储器已存储的张量中的除运算张量以外的张量可能为多个,这些张量虽然不需要参与第二运算,但往往需要参与位于第二运算之后的至少一个运算。
然而,如果将需要参与靠近第二运算的第三运算的张量作为待备份张量,则之后在第一存储器中存储待存储张量时,会覆盖需要参与第三运算的该张量的部分张量,导致第一存储器中不存在完整的参与第三运算的该张量,然而第二运算可能很快就会执行完毕,进而很快就需要执行第三运算,但是由于第一存储器中存储的需要参与第三运算的该张量不完整,因此,需要从第二存储器中读取需要参与第三运算的该张量的该部分张量,并将其存储重新在第一存储器中,由于第二存储器的数据读写速率较低,因此,从第二存储器中读取需要参与第三运算的该张量的该部分张量,并将其存储重新在第一存储器中的过程需要耗费较长时间,导致需要等待较长时间才能执行第三运算,进而导致整体的运算效率较低。
因此,为了提高整体的运算效率,在另一个实施例中,可以确定第一存储器中已存储的张量中的除运算张量以外的每一个张量分别所需参与的运算;在第一存储器中已存储的张量中的除运算张量以外的多个张量中,将所需参与的运算与第一运算之间间隔至少一个运算的张量确定为待备份张量。
或者,为了提高整体的运算效率,在又一个实施例中,确定第一存储器中已存储的张量中的除运算张量以外的每一个张量分别所需参与的运算;在第一存储器中已存储的张量中的除运算张量以外的多个张量中,将所需参与的运算与第一运算之间间隔的运算最多的张量确定为待备份张量。
在一实施例中,第一存储器中此时具备空闲存储空间,如果在第一存储器中存储待存储张量时,不使用第一存储器中的空闲存储空间,则需要在第二存储器中备份待备份张量中的、占用空间与待存储张量的占用空间相同的部分张量,由于第二存储器的数据读写速率较慢,因此,备份过程中需要耗费较长时间,导致备份效率较低,由于在备份完成之后才能在第一存储器中将待存储张量覆盖占用空间与待存储张量的占用空间相同的部分张量,且由于在第一存储器中存储待存储张量之后才能执行第二运算,因此会降低整体的运算效率。
因此,为了提高整体的运算效率,如果第一存储器中此时具备空闲存储空间,在第一存储器中存储待存储张量时,可以使用第一存储器中的空闲存储空间,从而只需在第二存储器中备份待备份张量中的、占用空间小于待存储张量的占用空间的部分张量,从而可以减少备份过程所需耗费的时间,由于只需备份少量的待备份张量的部分张量,从而可以提高备份效率,进而可以提高整体的运算效率。
在一实施例中,在第一存储器中存储待存储张量时,需要将待存储张量整体存储在第二存储器中,也即,第二存储器中的用于存储待存储张量的存储空间是一整块存储空间,不能将待存储张量拆分至少两部分分别存储在不连续的多段存储空间中。
因此,在一个实施例中,在将所需参与的运算与第一运算之间间隔的运算最多的张量确定为待备份张量时,如果所需参与的运算与第一运算之间间隔的运算最多的张量为至少两个,则在至少两个张量中,将占用空间与空闲存储空间相邻的张量确定为待备份张量。
在另一个实施例中,第一存储器中的空闲存储空间为多段,参见图3,步骤S103可以包括通过如下流程实现,包括:
在步骤S301中,在第一存储器中确定与待备份张量的占用空间相邻的空闲存储空间。
在一实施例中,在第一存储器中存储待存储张量时,需要将待存储张量整体存储在第二存储器中,也即,第二存储器中的用于存储待存储张量的存储空间是一整块存储空间,不能将待存储数据拆分至少两部分,并分别存储在不连续的多段存储空间中。
如果在第一存储器中存储待存储张量时能够使用到空闲存储空间,则可以减少备份待备份张量所需的耗费时长,进而可以提高整体的运算效率。
在一个实施例中,在第一存储器中确定与待备份张量的占用空间相邻的空闲存储空间时,如果与待备份张量相邻的空闲存储空间为两段以上,则在两段以上的空闲存储空间中选择较大的空闲存储空间,相比于选择较小的空闲存储空间,可以使得在第二存储器中备份待备份张量时,可以备份待备份张量中的占用空间少的部分张量,因此,可以进一步地减少备份所需的时长,以及进一步提高整体的运算效率。
在另一个实施例中,在第一存储器中的空闲存储空间为多段的情况下,也可以将多段空闲存储空间组合为与待备份张量的占用空间相邻的一段完整的空闲存储空间,以进一步地减少备份所需的时长,以及进一步提高整体的运算效率,并实现了充分利用第一存储器中的存储空间的目的。
在步骤S302中,获取第一占用空间与确定出的空闲存储空间之间的空间差异大小。
在步骤S303中,在待备份张量中确定存储空间与空闲存储空间相邻的、空间差异大小对应的部分张量。
在步骤S304中,在第二存储器中备份该部分张量。
例如,如图4所示,第一存储器中存储了张量A、B以及C,张量A的占用空间为10KB,张量B的占用空间为15KB,张量C的占用空间为20KB,张量B与C之间存在空闲存储空间X,空闲存储空间X为5KB,待存储张量T的占用空间为9KB,待存储张量T的占用空间9KB与空闲存储空间X5KB之间的空间差异大小为4KB。
其中,在图4中,第一存储器中的存储地址从左至右依次增加。
此时,参见图5,如果将张量B作为待备份张量,则可以确定张量B中的存储地址最大的4KB的部分张量B1,并在第二存储器中存储张量B中的存储地址最大的4KB的部分张量B1。
参见图6,如果将张量C作为待备份张量,则可以确定张量C中的存储地址最小的4KB的部分张量C1,并在第二存储器中存储张量C中的存储地址最小的4KB的部分张量C1。
示例性装置
下面,参考图7来描述根据本申请实施例的基于神经网络的张量处理装置。
图7图示了根据本申请实施例的基于神经网络的张量处理装置的框图。
如图7所示,根据本申请实施例的所述基于神经网络的张量处理装置可以包括:
第一确定模块401,用于在所述神经网络的运算过程中,确定获取待存储张量;
第二确定模块402,用于如果第一存储器中的空闲存储空间小于所述待存储张量的第一占用空间,在所述第一存储器中已存储的张量中确定待备份张量;
第一存储模块403,用于将所述待备份张量中的部分张量存储在第二存储器中,所述空闲存储空间与所述部分张量的第二占用空间之和大于或等于所述第一占用空间;
第二存储模块404,用于基于所述空闲存储空间和所述第二占用空间,将所述待存储张量存储在所述第一存储器中。
在一个实例中,所述第一存储器的存储总空间小于所述第二存储器的存储总空间;所述第一存储器的数据读写速率大于所述第二存储器的数据读写速率。
参见图8,在一个实例中,所述待存储张量包括基于第一运算得到的张量,所述第一运算是所述神经网络中具有先后运算顺序的多个预设运算中的一个运算;
所述第二确定模块402包括:
第一确定单元4021,用于确定需要参与所述第二运算的运算张量,所述第二运算为所述多个预设运算中与所述第一运算相邻且位于所述第一运算之后的运算;
第二确定单元4022,用于将所述第一存储器中已存储的张量中除所述运算张量以外的张量确定为所述待备份张量。
在一个实例中,所述第二确定单元4022包括:
第一确定子单元,用于确定所述第一存储器中已存储的张量中的除所述运算张量以外的每一个张量分别所需参与的运算;第二确定子单元,用于在所述第一存储器中已存储的张量中的除所述运算张量以外的多个张量中,将所需参与的运算与所述第一运算之间间隔至少一个运算的张量确定为所述待备份张量。
在一个实例中,所述第二确定单元4022包括:
第三确定子单元,用于确定所述第一存储器中已存储的张量中的除所述运算张量以外的每一个张量分别所需参与的运算;第四确定子单元,用于在所述第一存储器中已存储的张量中的除所述运算张量以外的多个张量中,将所需参与的运算与所述第一运算之间间隔的运算最多的张量确定为所述待备份张量。
在一个实例中,所述第二确定单元4022具体用于:如果所需参与的运算与所述第一运算之间间隔的运算最多的张量为至少两个,则在至少两个张量中,将占用空间与所述空闲存储空间相邻的张量确定为所述待备份张量。
在一个实例中,所述第一存储器中的所述空闲存储空间为多段;
所述第一存储模块403包括:
第三确定单元4031,用于在所述第一存储器中确定与所述待备份张量的占用空间相邻的空闲存储空间;
获取单元4032,用于获取所述第一占用空间与确定出的空闲存储空间之间的空间差异大小;
第四确定单元4033,用于在所述待备份张量中确定存储空间与所述空闲存储空间相邻的、所述空间差异大小对应的部分张量;
备份单元4034,用于在第二存储器中备份所述部分张量。
在一个实例中,所述第三确定单元4031具体用于:如果与所述待备份张量相邻的空闲存储空间为两段以上,则在两段空闲存储空间中选择较大的空闲存储空间。
在一个实例中,所述第三确定单元4031具体用于:将所述多段空闲存储空间组合为与所述待备份张量的占用空间相邻的一段完整的空闲存储空间。
在一个实例中,所述装置还包括:
第三存储模块405,用于当所述待备份张量需要参与运算时,将在所述第二存储器中存储的所述待备份张量中的部分张量重新存储在所述第一存储器中。
在本申请中,在神经网络的运算过程中,确定获取待存储张量。如果第一存储器中的空闲存储空间小于待存储张量的第一占用空间,在第一存储器中已存储的张量中确定待备份张量。无需在第二存储器中备份待备份张量的全部,只需将待备份张量中的部分张量存储在第二存储器中,且该空闲存储空间与该部分张量的第二占用空间之和大于或等于第一占用空间;基于空闲存储空间和第二占用空间,将待存储张量存储在第一存储器中。
相比于备份待备份张量的全部,本申请只将待备份张量中的部分张量存储在第二存储器中,从而减少备份量,进而减少了备份所需耗费的时间,提高了备份效率,由于在备份之后才能在第一存储空间中存储待存储张量,进而才能使用待存储张量执行神经网络中的预设运算,因此,由于备份效率的提高而可以提高整体的运算效率。
示例性电子设备
下面,参考图9来描述根据本申请实施例的电子设备。
图9图示了根据本申请实施例的电子设备的框图。
如图9所示,电子设备10包括一个或多个处理器11和存储器12。
处理器11可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备10中的其他组件以执行期望的功能。
存储器12可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器11可以运行所述程序指令,以实现上文所述的本申请的各个实施例的基于神经网络的张量处理方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。
在一个示例中,电子设备10还可以包括:输入装置13和输出装置14,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
例如,在该电子设备是第一设备100或第二设备200时,该输入装置13可以是上述的麦克风或麦克风阵列,用于捕捉声源的输入信号。在该电子设备是单机设备时,该输入装置13可以是通信网络连接器,用于从第一设备100和第二设备200接收所采集的输入信号。
此外,该输入设备13还可以包括例如键盘、鼠标等等。
该输出装置14可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出设备14可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图9中仅示出了该电子设备10中与本申请有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备10还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的基于神经网络的张量处理方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本申请各种实施例的基于神经网络的张量处理方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本申请的基本原理,但是,需要指出的是,在本申请中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。
本申请中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
还需要指出的是,在本申请的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本申请的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (13)
1.一种基于神经网络的张量处理方法,包括:
在所述神经网络的运算过程中,确定获取待存储张量;
如果第一存储器中的空闲存储空间小于所述待存储张量的第一占用空间,在所述第一存储器中已存储的张量中确定待备份张量;
将所述待备份张量中的部分张量存储在第二存储器中,所述空闲存储空间与所述部分张量的第二占用空间之和大于或等于所述第一占用空间;
基于所述空闲存储空间和所述第二占用空间,将所述待存储张量存储在所述第一存储器中。
2.根据权利要求1所述的方法,其中,所述第一存储器的存储总空间小于所述第二存储器的存储总空间;所述第一存储器的数据读写速率大于所述第二存储器的数据读写速率。
3.根据权利要求1所述的方法,其中,所述待存储张量包括基于第一运算得到的张量,所述第一运算是所述神经网络中具有先后运算顺序的多个预设运算中的一个运算;
所述在所述第一存储器中已存储的张量中确定待备份张量,包括:
确定需要参与所述第二运算的运算张量,所述第二运算为所述多个预设运算中与所述第一运算相邻且位于所述第一运算之后的运算;
将所述第一存储器中已存储的张量中除所述运算张量以外的张量确定为所述待备份张量。
4.根据权利要求3所述的方法,其中,所述将所述第一存储器中已存储的张量中除所述运算张量以外的张量确定为所述待备份张量,包括:
确定所述第一存储器中已存储的张量中的除所述运算张量以外的每一个张量分别所需参与的运算;
在所述第一存储器中已存储的张量中的除所述运算张量以外的多个张量中,将所需参与的运算与所述第一运算之间间隔至少一个运算的张量确定为所述待备份张量。
5.根据权利要求3所述的方法,其中,所述将所述第一存储器中已存储的张量中除所述运算张量以外的张量确定为所述待备份张量,包括:
确定所述第一存储器中已存储的张量中的除所述运算张量以外的每一个张量分别所需参与的运算;
在所述第一存储器中已存储的张量中的除所述运算张量以外的多个张量中,将所需参与的运算与所述第一运算之间间隔的运算最多的张量确定为所述待备份张量。
6.根据权利要求5所述的方法,其中,所述将所述第一存储器中已存储的张量中除所述运算张量以外的张量确定为所述待备份张量,包括:
如果所需参与的运算与所述第一运算之间间隔的运算最多的张量为至少两个,则在至少两个张量中,将占用空间与所述空闲存储空间相邻的张量确定为所述待备份张量。
7.根据权利要求1或2所述的方法,其中,所述第一存储器中的所述空闲存储空间为多段;
所述将所述待备份张量中的部分张量存储在第二存储器中,包括:
在所述第一存储器中确定与所述待备份张量的占用空间相邻的空闲存储空间;
获取所述第一占用空间与确定出的空闲存储空间之间的空间差异大小;
在所述待备份张量中确定存储空间与所述空闲存储空间相邻的、所述空间差异大小对应的部分张量;
在第二存储器中备份所述部分张量。
8.根据权利要求7所述的方法,其中,所述在所述第一存储器中确定与所述待备份张量的占用空间相邻的空闲存储空间,包括:
如果与所述待备份张量相邻的空闲存储空间为两段以上,则在两段空闲存储空间中选择较大的空闲存储空间。
9.根据权利要求7所述的方法,其中,所述在所述第一存储器中确定与所述待备份张量的占用空间相邻的空闲存储空间,包括:
将所述多段空闲存储空间组合为与所述待备份张量的占用空间相邻的一段完整的空闲存储空间。
10.根据权利要求1或2所述的方法,其中,所述基于所述空闲存储空间和所述第二占用空间,将所述待存储张量存储在所述第一存储器中之后,还包括:
当所述待备份张量需要参与运算时,将在所述第二存储器中存储的所述待备份张量中的部分张量重新存储在所述第一存储器中。
11.一种基于神经网络的张量处理装置,包括:
第一确定模块,用于在所述神经网络的运算过程中,确定获取待存储张量;
第二确定模块,用于如果第一存储器中的空闲存储空间小于所述待存储张量的第一占用空间,在所述第一存储器中已存储的张量中确定待备份张量;
第一存储模块,用于将所述待备份张量中的部分张量存储在第二存储器中,所述空闲存储空间与所述部分张量的第二占用空间之和大于或等于所述第一占用空间;
第二存储模块,用于基于所述空闲存储空间和所述第二占用空间,将所述待存储张量存储在所述第一存储器中。
12.一种电子设备,包括:
处理器;
存储器;以及
存储在所述存储器中的计算机程序指令,所述计算机程序指令在被所述处理器运行时使得所述处理器执行如权利要求1-10中任一项所述的方法。
13.一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行如权利要求1-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811163170.6A CN110969247B (zh) | 2018-09-30 | 2018-09-30 | 基于神经网络的张量处理方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811163170.6A CN110969247B (zh) | 2018-09-30 | 2018-09-30 | 基于神经网络的张量处理方法、装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110969247A true CN110969247A (zh) | 2020-04-07 |
CN110969247B CN110969247B (zh) | 2024-04-09 |
Family
ID=70029476
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811163170.6A Active CN110969247B (zh) | 2018-09-30 | 2018-09-30 | 基于神经网络的张量处理方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110969247B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1770087A (zh) * | 2004-10-21 | 2006-05-10 | 微软公司 | 使用外部存储器设备来改进系统性能 |
CN101283913A (zh) * | 2008-05-30 | 2008-10-15 | 首都师范大学 | Ct图像重建的gpu加速方法 |
CN102810199A (zh) * | 2012-06-15 | 2012-12-05 | 成都平行视野科技有限公司 | 一种基于gpu的图像处理方法 |
CN103345368A (zh) * | 2013-07-18 | 2013-10-09 | 四川九成信息技术有限公司 | 一种在缓冲存储器中缓存数据的方法 |
CN103559091A (zh) * | 2013-11-12 | 2014-02-05 | 宇龙计算机通信科技(深圳)有限公司 | 一种数据调度方法及分体式终端系统 |
CN103914360A (zh) * | 2013-01-05 | 2014-07-09 | 联想(北京)有限公司 | 电子设备和数据备份恢复方法 |
CN104216781A (zh) * | 2013-05-29 | 2014-12-17 | 上海联影医疗科技有限公司 | 显存分配方法及系统 |
CN104317655A (zh) * | 2014-10-11 | 2015-01-28 | 华中科技大学 | 基于集群式gpu加速的多源全路径蒙特卡罗模拟方法 |
CN105138289A (zh) * | 2015-08-20 | 2015-12-09 | 上海联影医疗科技有限公司 | 计算组件的存储管理方法和装置 |
CN107133128A (zh) * | 2017-05-11 | 2017-09-05 | 上海新储集成电路有限公司 | 一种数据云存储系统及方法 |
US20180129936A1 (en) * | 2016-11-10 | 2018-05-10 | Google Inc. | Performing kernel striding in hardware |
-
2018
- 2018-09-30 CN CN201811163170.6A patent/CN110969247B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1770087A (zh) * | 2004-10-21 | 2006-05-10 | 微软公司 | 使用外部存储器设备来改进系统性能 |
CN101283913A (zh) * | 2008-05-30 | 2008-10-15 | 首都师范大学 | Ct图像重建的gpu加速方法 |
CN102810199A (zh) * | 2012-06-15 | 2012-12-05 | 成都平行视野科技有限公司 | 一种基于gpu的图像处理方法 |
CN103914360A (zh) * | 2013-01-05 | 2014-07-09 | 联想(北京)有限公司 | 电子设备和数据备份恢复方法 |
CN104216781A (zh) * | 2013-05-29 | 2014-12-17 | 上海联影医疗科技有限公司 | 显存分配方法及系统 |
CN103345368A (zh) * | 2013-07-18 | 2013-10-09 | 四川九成信息技术有限公司 | 一种在缓冲存储器中缓存数据的方法 |
CN103559091A (zh) * | 2013-11-12 | 2014-02-05 | 宇龙计算机通信科技(深圳)有限公司 | 一种数据调度方法及分体式终端系统 |
CN104317655A (zh) * | 2014-10-11 | 2015-01-28 | 华中科技大学 | 基于集群式gpu加速的多源全路径蒙特卡罗模拟方法 |
CN105138289A (zh) * | 2015-08-20 | 2015-12-09 | 上海联影医疗科技有限公司 | 计算组件的存储管理方法和装置 |
US20180129936A1 (en) * | 2016-11-10 | 2018-05-10 | Google Inc. | Performing kernel striding in hardware |
CN108073983A (zh) * | 2016-11-10 | 2018-05-25 | 谷歌有限责任公司 | 在硬件中执行核心跨越 |
CN107133128A (zh) * | 2017-05-11 | 2017-09-05 | 上海新储集成电路有限公司 | 一种数据云存储系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110969247B (zh) | 2024-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2018537800A (ja) | メモリアクセスコマンドの転送記述子 | |
CN108292162A (zh) | 用于多线程访问的软件定义fifo缓冲器 | |
US20120117347A1 (en) | Initializing of a memory area | |
CN110955640A (zh) | 跨系统数据文件的处理方法、装置、服务器和存储介质 | |
KR102205899B1 (ko) | 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치 | |
CN110888972A (zh) | 一种基于Spark Streaming的敏感内容识别方法及装置 | |
CN111258950B (zh) | 原子访存方法、存储介质、计算机设备、装置和系统 | |
CN109684566B (zh) | 标签引擎实现方法、装置、计算机设备及存储介质 | |
CN111124644A (zh) | 任务调度资源的确定方法、装置及系统 | |
CN112749072B (zh) | 一种对存储训练数据的云存储系统的测试方法及装置 | |
US8930929B2 (en) | Reconfigurable processor and method for processing a nested loop | |
CN111444117B (zh) | 存储空间碎片化实现方法、装置、存储介质及电子设备 | |
KR101826828B1 (ko) | 로그 데이터 관리 시스템 및 방법 | |
CN113272785B (zh) | 一种挂载文件系统的方法、终端设备及存储介质 | |
CN112631955A (zh) | 数据处理方法、装置、电子设备以及介质 | |
CN110286990B (zh) | 用户界面展示方法、装置、设备及存储介质 | |
JP2014219980A (ja) | メモリ制御装置及びメモリ制御方法 | |
CN110969247B (zh) | 基于神经网络的张量处理方法、装置和电子设备 | |
US8898625B2 (en) | Optimized storage of function variables | |
CN111258653B (zh) | 原子访存方法、存储介质、计算机设备、装置和系统 | |
CN112967351A (zh) | 图像生成方法、装置、电子设备和存储介质 | |
CN111124988A (zh) | 基于书籍图谱的书籍显示方法、计算设备及存储介质 | |
US11144215B2 (en) | Method, apparatus and electronic device for controlling memory access | |
CN117033497B (zh) | 数据湖上数据更新与读取的方法及相关设备 | |
CN113204385B (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 | ||
GR01 | Patent grant |