CN111091188B - 神经网络的前向计算方法、装置及计算机可读存储介质 - Google Patents
神经网络的前向计算方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN111091188B CN111091188B CN201911294777.2A CN201911294777A CN111091188B CN 111091188 B CN111091188 B CN 111091188B CN 201911294777 A CN201911294777 A CN 201911294777A CN 111091188 B CN111091188 B CN 111091188B
- Authority
- CN
- China
- Prior art keywords
- data
- texture
- storage structure
- texture storage
- channels
- 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
Links
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
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/40—Analysis of texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/90—Determination of colour characteristics
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Generation (AREA)
Abstract
本申请提供了一种神经网络的前向计算方法、装置及计算机可读存储介质,神经网络中的至少一个数据处理层进行数据处理的方法包括:获取数据处理层的输入数据和权重数据;将输入数据采用第一纹理存储结构进行存储,得到第一纹理数据,将权重数据采用第二纹理存储结构进行存储,得到第二纹理数据;基于第一纹理数据和第二纹理数据进行数据处理层的数据处理,得到数据处理层的输出数据。对于神经网络的至少一个数据处理层,将输入数据和权重数据分别存储在对应的纹理存储结构中,由于纹理存储结构索引简单方便,且数据存储量大,节省了数据处理层在进行数据处理过程中读取和存储数据的时间,使得神经网络的前向计算效率大大提高。
Description
技术领域
本申请涉及计算机技术领域,具体而言,本申请涉及一种神经网络的前向计算方法、装置、电子设备及计算机可读存储介质。
背景技术
神经网络前向算法需要在移动端和PC端等不同平台实现GPU(GraphicsProcessing Unit,图形处理器)计算,不同平台使用的计算库或图形库有所不同,在移动端,通常采用OpenCL和OpenGL等API进行实现,而在运行Windows操作系统的PC端,由于Direct3D的通用性,可以使用Direct3D图形库来实现神经网络前向算法。神经网络前向计算主要由网络每一层在GPU中的计算组成,包括每一层的输入数据和权值上传到GPU,并在GPU中计算得到结果。
现有的技术方案通常采用Buffer(缓存)结构作为数据存储的方式,即把网络每层的输入和权值上传到GPU的Buffer中,在GPU中再用Buffer进行计算,最后再用CPU(CentralProcessing Unit,中央处理器)读取GPU中的Buffer得到计算结果。
但是,由于Buffer在内存中的存储是线性的,GPU在对其结构中的数据进行读取和存储过程中,需要消耗较长的时间,导致前向计算的效率较低。
发明内容
本申请的目的旨在至少能解决上述的技术缺陷之一,本申请实施例所提供的技术方案如下:
第一方面,本申请实施例提供了一种神经网络的前向计算方法,神经网络中的至少一个数据处理层进行数据处理的方法包括:
获取数据处理层的输入数据和权重数据;
将输入数据采用第一纹理存储结构进行存储,得到第一纹理数据,将权重数据采用第二纹理存储结构进行存储,得到第二纹理数据;
基于第一纹理数据和第二纹理数据进行数据处理层的数据处理,得到数据处理层的输出数据。
可选的,第一纹理存储结构或第二纹理存储结构为以下任一种:
红、绿、蓝、透明RGBA四通道三维3D纹理存储结构;
RGB三通道3D纹理存储结构;
RGBA四通道2D纹理存储结构;
RGB三通道2D纹理存储结构。
可选的,第一纹理数据和第二纹理数据中分别包含有至少一个纹素,且每个纹素的通道数为三或四,至少一个纹素由对应的输入数据或权重数据按照通道数依序排列而成。
可选的,将输入数据采用第一纹理存储结构进行存储,得到第一纹理数据,包括:
获取输入数据的像素宽度、像素高度以及通道数;
基于输入数据的像素宽度、像素高度、通道数以及第一纹理存储结构的数据存储方式,确定第一纹理存储结构的第一纹理存储结构参数;
将输入数据根据第一纹理存储结构参数进行存储,得到第一纹理数据。
可选的,第一纹理存储结构为3D纹理存储结构,第一纹理存储结构参数包括纹理存储结构的高度、宽度和深度;
基于输入数据的像素宽度、像素高度、通道数以及第一纹理存储结构的数据存储方式,确定第一纹理存储结构的第一纹理存储结构参数,包括:
将输入数据的像素宽度作为第一纹理存储结构的宽度,将输入数据的像素高度作为第一纹理存储结构的高度,并基于输入数据的通道数和第一纹理存储结构中每个纹素的通道数,确定第一纹理存储结构的深度。
可选的,基于输入数据的通道数和第一纹理存储结构中每个纹素的通道数,确定第一纹理存储结构的深度,包括:
通过如下表达式确定第一纹理存储结构的深度:
可选的,将权重数据采用第二纹理存储结构进行存储,得到第二纹理数据,包括:
获取与权重数据的数据量相关的参数数据;
基于与权重数据的数据量相关的参数数据以及第二纹理存储结构的数据存储方式,确定第二纹理存储结构的第二纹理存储结构参数;
将权重数据根据第二纹理存储结构参数进行存储,得到第二纹理数据。
可选的,第二纹理存储结构为3D纹理存储结构,则第二纹理存储结构参数包括纹理存储结构的高度、宽度和深度;
若与权重数据的数据量相关的参数数据包括权重数据的像素宽度和像素高度、以及数据处理层的输入通道数和输出通道数,且纹理存储结构为3D纹理存储结构,基于与权重数据的数据量相关的参数数据以及第二纹理存储结构的数据存储方式,确定第二纹理存储结构的第二纹理存储结构参数,包括:
基于数据处理层的输入通道数和输出通道数中的一个通道数、以及权重数据的像素宽度和像素高度,确定第二纹理存储结构的高度和宽度;
基于数据处理层的输入通道数和输出通道数中的另一个通道数、以及第二纹理存储结构中每个纹素的通道数,确定第二纹理存储结构的深度。
可选的,基于数据处理层的输入通道数和输出通道数中的一个通道数、以及权重数据的像素宽度和像素高度,确定第二纹理存储结构的高度和宽度,包括:
将权重数据的像素宽度作为第二纹理存储结构的宽度;
将权重数据的像素高度与一个通道数的乘积作为第二纹理存储结构的高度;
基于数据处理层的输入通道数和输出通道数中的另一个通道数、以及第二纹理存储结构中每个纹素的通道数,确定第二纹理存储结构的深度,包括:
通过如下表达是确定第二纹理存储结构的深度:
可选的,第二纹理存储结构为3D纹理存储结构,则第二纹理存储结构参数包括纹理存储结构的高度、宽度和深度;
若与权重数据的数据量相关的参数数据包括权重数据的像素宽度和像素高度、以及数据处理层的输入通道数或输出通道数,且纹理存储结构为3D纹理存储结构,基于与权重数据的数据量相关的参数数据以及第二纹理存储结构的数据存储方式,确定第二纹理存储结构的第二纹理存储结构参数,包括:
将权重数据的像素宽度作为第二纹理存储结构的宽度,将权重数据的像素高度作为第二纹理存储结构的高度,并基于数据处理层的输入通道数或输出通道数,以及第二纹理存储结构中每个纹素的通道数,确定第二纹理存储结构的深度。
可选的,基于数据处理层的输入通道数或输出通道数,以及第二纹理存储结构中每个纹素的通道数,确定第二纹理存储结构的深度,包括:
通过如下表达式确定纹理存储结构的深度:
可选的,利用GPU中的至少一个计算单元进行数据处理层的数据处理;基于第一纹理数据和第二纹理数据进行数据处理层的数据处理,得到数据处理层的输出数据,包括:
利用各计算单元读取第一纹理数据中一个第一纹理位置存储的输入数据,并利用该计算单元读取第二纹理数据中对应于该第一纹理位置的第二纹理位置存储的权重数据;
利用各计算单元对读取到的输入数据和对应的权重数据进行数据处理,得到数据处理层的输出数据。
第二方面,本申请实施例提供了一种神经网络的前向计算装置,该装置用于对神经网络中的至少一个数据处理层进行数据处理,包括:
数据获取模块,用于获取数据处理层的输入数据和权重数据;
数据存储模块,用于将采用第一纹理存储结构进行存储,得到第一纹理数据,将权重数据采用第二纹理存储结构进行存储,得到第二纹理数据;
数据处理模块,用于基于第一纹理数据和第二纹理数据进行数据处理层的数据处理,得到数据处理层的输出数据。
第三方面,本申请实施例提供了一种电子设备,包括存储器和处理器;
存储器中存储有计算机程序;
处理器,用于执行计算机程序以实现第一方面实施例或第一方面任一可选实施例中所提供的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其特征在于,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现第一方面实施例或第一方面任一可选实施例中所提供的方法。
本申请提供的技术方案带来的有益效果是:
本申请实施例提供的方案,对于神经网络的至少一个数据处理层,将输入数据和权重数据分别存储在对应的纹理存储结构中,由于纹理存储结构索引简单方便,且数据存储量大,节省了数据处理层在进行数据处理过程中读取和存储数据的时间,使得神经网络的前向计算效率大大提高。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为现有技术中神经网络前向计算示意图;
图2为本申请实施例提供的一种神经网络的前向计算方法的流程示意图;
图3为本申请实施例的一示例中一个数据处理层的数据处理过程示意图;
图4为本申请实施例的一示例中输入数据存储过程的示意图;
图5为本申请实施例的一示例中权重数据存储过程的示意图;
图6为本申请实施例的一示例中背景虚化功能的效果示意图;
图7为本申请实施例的一示例中手势识别功能的效果示意图;
图8为本申请实施例的一示例中图像显著性识别功能的效果示意图;
图9为本申请实施例提供的一种神经网络的前向计算装置的结构框图;
图10为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
如图1所示,在神经网络的前向计算中,现有的技术方案通常采用Buffer(缓存)结构作为数据存储的方式,即把网络每层的输入和权值上传到GPU的Buffer中(对应于图中层输入Buffer和层权值Buffer),在GPU中再用Buffer进行计算,最后再用CPU(CentralProcessing Unit,中央处理器)读取GPU中的Buffer得到计算结果(对应于图中结果Buffer)。但是,由于Buffer在内存中的存储是线性的,GPU在对其结构中的数据进行读取和存储过程中,需要消耗较长的时间,导致前向计算的效率较低。针对上述问题本申请实施例提供了一种神经网络的前向计算方法。
本申请实施例提供的一种神经网络的前向计算方法,图2为该神经网络中的至少一个数据处理层进行数据处理的方法的流程示意图,该方法的执行主体可以为GPU,如图2所示,该方法可以包括:
步骤S201,获取数据处理层的输入数据和权重数据。
其中,数据处理层一般为神经网络隐藏层(hidden layer),神经网络可以包含多个数据处理层,神经网络的前向计算过程是神经网络中各数据处理层进行数据处理的过程,每一数据处理层的数据处理也可以理解为该数据处理层的前向计算过程,而每个数据处理层的前向计算过程,是对该数据处理层的每一输入数据以及与其对应的权重数据做相应的运算,得出对应的输出数据的过程。
步骤S202,将输入数据采用第一纹理存储结构进行存储,得到第一纹理数据,将权重数据采用第二纹理存储结构进行存储,得到第二纹理数据。
其中,纹理存储结构是一种结构化的存储形式,利用GPU中的着色器可以从其中读取数据,也可以将数据写入其中。纹理存储结构的数据存储方式包括二维(2D)纹理存储结构、三维(3D)纹理存储结构、二维纹理存储结构数组等,各纹理存储结构中的基本单元可称为纹素,每个纹素可以包含有多个通道,例如R单通道、RGB三通道、RGBA四通道等。纹理存储结构主要有以下两方面的特点:一方面,纹理存储结构通常使用纹理坐标应用到一个表面,纹理坐标可以作为纹理存储结构中所存储数据的索引,基于纹理坐标,GPU在从纹理存储结构中读取数据时,以及将数据存储进纹理存储结构时,由于纹理存储结构中索引简单方便,使得GPU的数据读取和存储速度都快于Buffer存储结构。另一方面,纹理存储结构的一个纹素中可以包含多个通道,因此一个纹素可以存储多个数据,GPU每次读取一个纹素即可以读取该纹素中所有通道的数据,同理GPU每次可以向一个纹素的所有通道中存储数据,那么GPU每次从纹理存储结构中读取数据量较大,向纹理存储结构中存储的数据量也较大,由于GPU对纹理存储结构进行数据存储或读取时数据吞吐量较大,使得GPU的数据读取和存储速度都快于Buffer存储结构。
具体的,在对神经网络进行前向计算过程中,由于输入数据和权重数据两者的数据量或尺寸大小往往不同,故将两者分开存储,即对于各数据处理层,GPU将获取到的该数据处理层的输入数据和权重数据分别存储在不同的纹理存储结构中,得到对应的纹理数据。
步骤S203,基于第一纹理数据和第二纹理数据进行数据处理层的数据处理,得到数据处理层的输出数据。
具体的,GPU从第一纹理数据读取输入数据,从第二纹理数据读取对应的权重数据,基于输入数据和对应的权重数据进行前向计算得出对应的输出数据,在完成每个输入数据与其对应的权重数据之间的前向计算后,得到该层数据处理层的所有输出数据。
可以理解的是,神经网络在进行前向计算过程中,可以有一个或多个数据处理层采用步骤S201至步骤S203的方案进行数据处理。当连续的两个数据处理层都采用步骤S201至步骤S203的方案进行数据处理时,对于前一个数据处理层,GPU在完成步骤203后,还包括将该层数据处理层的输出数据存储在相应的纹理存储结构中的步骤。
下面通过一个具体示例来对本申请实施例进行进一步说明,如图3所示,该示例中采用的纹理存储格式为RGBA四通道纹理存储格式,且对神经网络中每个数据处理层(即图中网络层)都采用步骤S201至步骤S203的方案进行数据处理。
如图所示,每层网络层的前向计算开始后,GPU将每层网络层的输入数据(即图中网络输入)保存至对应的RGBA四通道纹理中,将每层网络层的权重数据(及图中网络权值)保存至对应的RGBA四通道纹理中,GPU的着色器(Shader)从两个RGBA四通道纹理中分别读取输入数据和权重数据,GPU再根据输入数据和权重数据得出该层网络层的输出数据,进一步,为了便于后一网络层的前向计算,GPU将其输出数据存储至对应的RGBA四通道纹理,至此该层网络层的前向计算结束。
本申请实施例提供的方案,对于神经网络的至少一个数据处理层,将输入数据和权重数据分别存储在对应的纹理存储结构中,由于纹理存储结构索引简单方便,且数据存储量大,节省了数据处理层在进行数据处理过程中读取和存储数据的时间,使得神经网络的前向计算效率大大提高。
在本申请的一种可选实施例中,第一纹理存储结构或第二纹理存储结构为以下任一种:
红、绿、蓝、透明RGBA四通道三维3D纹理存储结构;
RGB三通道3D纹理存储结构;
RGBA四通道2D纹理存储结构;
RGB三通道2D纹理存储结构。
具体的,3D纹理存储结构与2D纹理存储结构的区别在于,3D纹理存储结构具有不同的深度,即3D纹理存储结构的纹素可以设置在不同的深度上,而2D纹理存储结构可以视为深度为1的3D纹理存储结构。其中,一个RGBA四通道2D或3D纹理存储结构中的每个纹素能够存储4个数据,一个RGB三通道2D或3D纹理存储结构中的每个纹素能够存储3个数据。可以理解的是,纹理存储结构采用何种数据存储方式可以根据实际需求进行确定,对于同一个纹理存储结构来说,单个纹素中通道数越多其能存储的数据量也就越大,GPU每次读取和存储操作的数据吞吐量也就越大,从而前向计算的效率也越高。
在本申请的一种可选实施例中,第一纹理数据和第二纹理数据中分别包含有至少一个纹素,且每个纹素的通道数为三或四,至少一个纹素由对应的输入数据或权重数据按照通道数依序排列而成。
其中,纹素可以理解为纹理数据的基本构成单位,GPU在从纹理数据中读取数据,每次可以读取一个纹素内存储的数据,向纹理数据中存储数据时,每次可以向一个纹素内所有通道存储数据。每个纹素中包含的通道数决定了该纹素的数据吞吐量,由于第一纹理数据对应的纹理存储结构和第二纹理数据对应的纹理存储结构分别为三通道或四通道,那么第一纹理数据中的纹素和第二纹理数据中的纹素分别包含三通道或四通道,即通道数分别为三和四。
具体的,每个纹素中的多个通道可以依次上下堆叠设置,例如,包含RGB三个通道的纹素,纹素中三个通道R通道、G通道、B通道由下至上依次堆叠,每个通道中存入输入数据或权重数据构成对应的纹理数据。对于3D纹理数据,其所包含的多个纹素可以在深度方向依次上下堆叠设置,每个纹素包含至少RGB三个通道的并排信息,也可以包含RGBA四个通道的并排信息。例如,参考图5,其3D纹理数据可以包含2个纹素(纹素1和纹素2)的深度为2的纹理数据,其中纹素1和纹素2可以在深度方向由下至上依次堆叠设置,而每个纹素可以包括RGBA四通道,具体来说,纹素1包含标号为“1、2、3、4”的方块对应的四个通道,纹素2包含标号为“5、6、7、8”的方块对应的四个通道。
在本申请的可选实施例中,将输入数据采用第一纹理存储结构进行存储,得到第一纹理数据,包括:
获取输入数据的像素宽度、像素高度以及通道数;
基于输入数据的像素宽度、像素高度、通道数以及第一纹理存储结构的数据存储方式,确定第一纹理存储结构的第一纹理存储结构参数;
将输入数据根据第一纹理存储结构参数进行存储,得到第一纹理数据。
其中,若输入数据为图片数据,根据其像素宽度、像素高度以及通道数可以确定出其数据量,若输入数据不为图片数据,也可将其类比为图片数据,并根据类比得到的像素宽度、像素高度以及颜色通道数可以确定出其数据量,例如,通道数为1的输入数据为一维列数据(A1,A2,A3,A4,A5),可以将其类比为像素宽为1,像素高为5,通道数为1的图片数据,显然其数据量为像素宽、像素高以及颜色通道的乘积5。可以理解的是,输入数据的通道数用于后文中数据处理层的输入通道数一般是相等的。
具体的,在对输入数据进行存储得到第一纹理数据的过程中,首先要确定用于存储输入数据的第一纹理存储结构的第一纹理存储结构参数种类,第一纹理存储结构的数据存储方式(例如2D纹理存储方式或3D纹理存储方式)不同,对应的第一纹理存储结构参数的种类也不同,故需要根据第一纹理存储结构的数据存储方式确定第一纹理存储结构参数的种类。在确定出第一纹理存储结构参数的种类后,第一纹理存储结构参数的大小决定了对应的第一纹理存储结构的能够存储的数据量,那么可根据所需存储的输入数据的数据量,确定出各第一纹理存储参数的大小(即保证输入数据中的每个数据都能存储在第一纹理存储结构中)。确定出第一纹理存储参数的种类和大小即确定出了第一纹理存储结构,只需将输入数据存入第一纹理存储结构的相应纹素中的相应通道中,即得到第一纹理数据。
在本申请的一种可选实施例中,若第一纹理存储结构为3D纹理存储结构,则第一纹理存储结构参数包括纹理存储结构的高度、宽度和深度;
若第一纹理存储结构为2D纹理存储结构,则第一纹理存储结构参数包括纹理存储结构的高度和宽度。
可以理解的是,纹理存储结构数据存储方式不同,其对应的纹理存储结构参数的种类也不相同。
在本申请的一种可选实施例中,第一纹理存储结构为3D纹理存储结构,第一纹理存储结构参数包括纹理存储结构的高度、宽度和深度;
基于输入数据的像素宽度、像素高度、通道数以及第一纹理存储结构的数据存储方式,确定纹理存储结构的第一纹理存储结构参数,包括:
将输入数据的像素宽度作为第一纹理存储结构的宽度,将输入数据的像素高度作为第一纹理存储结构的高度,并基于输入数据的通道数和第一纹理存储结构中每个纹素的通道数,确定第一纹理存储结构的深度。
其中,由前文描述可知,若第一纹理存储结构为3D纹理存储结构,无论是RGB三通道3D纹理存储结构,还是RGBA四通道3D纹理存储结构,对应的第一纹理存储结构参数包括高度、宽度和深度。在对输入数据进行存储前,要根据输入数据的数据量和纹理存储结构的数据存储方式确定纹理存储结构的高度、宽度和深度的值。
具体的,要实现对输入数据的存储,只要保证第一纹理存储结构的数据存储量大于输入数据的数据量即可,由前文描述可知,输入数据的数据量为其像素宽度、像素高度和通道数的乘积,第一纹理存储结构的数据存储量为其宽度、高度、深度和第一纹理存储结构中每个纹素的通道数的乘积。为了便于各输入数据纹理位置的确定,可以将输入数据的像素宽度作为纹理存储结构的宽度,将输入数据的像素高度作为第一纹理存储结构的高度,那么第一纹理结构的数据存储量能否大于输入数据的数据量,取决于输入数据的通道数、第一纹理存储结构的深度以及其中每个纹素的通道数。所以,无论第一纹理存储结构为RGB三通道3D纹理存储结构,还是RGBA四通道3D纹理存储结构,都可以基于输入数据的通道数和第一纹理存储结构中每个纹素的通道数,确定第一纹理存储结构的深度。
在本申请的一种可选实施例中,基于输入数据的通道数和第一纹理存储结构中每个纹素的通道数,确定第一纹理存储结构的深度,包括:
通过如下表达式确定第一纹理存储结构的深度:
具体的,若输入数据的像素高为w1,像素宽度为b1,通道数为c1,将输入数据的像素高度w1作为第一纹理存储结构的高度,将输入数据的像素宽度b1作为第一纹理存储结构的宽度。若第一纹理存储结构为RGBA四通道3D纹理存储结构,那么在该第一纹理存储结构中,深度1对应的结构的数据存储量为w1*b1*4,而输入数据的数据量为w1*b1*c1,要想将所有输入数据存入该第一纹理存储结构中,该纹理存储结构的深度由输入数据的通道数c1确定,当c1小于等于4的时,该第一纹理存储结构深度至少为1可满足数据量要求,当c1大于4小于等于8,该第一纹理存储结构至少深度为2可满足数据量要求,当c1大于8小于等于12,该第一纹理存储结构深度至少为3可满足数据量要求,以此类推,即可确定出该第一纹理存储结构的深度值。换言之,在此情形下,为了使得该第一纹理存储结构中存储空间利用率尽可能的高,可以通过如下表达式确定第一纹理存储结构的深度:
其中,d1为第一纹理存储结构数据的深度,c1为输入数据的通道数。
若第一纹理存储结构为RGB三通道纹理存储结构,那么在该第一纹理存储结构中,深度1对应的结构的数据存储量为w1*b1*3,而输入数据的数据量为w1*b1*c1,要想将所有输入数据存入该第一纹理存储结构中,该纹理存储结构的深度由输入数据的通道数c1确定,当c1小于等于3时,该第一纹理存储结构深度至少为1可满足数据量要求,当c1大于3小于等于6时,该第一纹理存储结构至少深度为2可满足数据量要求,当c1大于6小于等于9,该第一纹理存储结构深度至少为3可满足数据量要求,以此类推,即可确定出第一纹理存储结构的深度值。换言之,在此情形下,为了使得该第一纹理存储结构中存储空间利用率尽可能的高,可以通过如下表达式确定第一纹理存储结构的深度:
其中,d1为第一纹理存储结构数据的深度,c1为输入数据的通道数。
举例来说,如图4所示,某数据处理层输入数据像素宽度为2,像素高度为2,通道数为4,那么该数据处理层的数据量为16(分别为图中所示1,2,3,…,16),可以采用宽度为2,高度为2,深度为1的RGBA四通道3D纹理存储结构对输入数据进行存储。如图所示,其存储过程可以理解为将该数据处理层的16个输入参数重新排列到宽度为2,高度为2,深度为1的RGBA四通道3D纹理存储结构中。
可以理解的是,本申请实施例中在确定出第一纹理存储结构参数的种类后,第一纹理存储结构参数的大小的确定方式不限于前文所述方式,只要确定出的第一纹理存储结构参数对应的第一纹理存储结构的数据存储量大于所要存储的输入数据的存储量即可。例如,在基于输入数据的像素宽度、像素高度、通道数以及第一纹理存储结构的数据存储方式,确定第一纹理存储结构的第一纹理存储结构参数时,也可以将输入数据的像素宽度作为纹理存储结构的高度,将输入数据的像素高度作为纹理存储结构的宽度;同时,在确定出第一纹理存储结构的宽度和高度后,确定出的深度值也可以也可以取大于通过上述表达式计算得到的深度值。
在本申请的一种可选实施例中,将权重数据采用第二纹理存储结构进行存储,得到第二纹理数据,包括:
获取与权重数据的数据量相关的参数数据;
基于与权重数据的数据量相关的参数数据以及第二纹理存储结构的数据存储方式,确定第二纹理存储结构的第二纹理存储结构参数;
将权重数据根据第二纹理存储结构参数进行存储,得到第二纹理数据。
其中,可将权重数据类比为图片数据,并根据类比得到的其像素宽度、像素高度以及通道数,该通道数可分为数据处理层的输入通道数和输出通道数。需要说明的是,不同数据处理层的决定其数据量的参数数据可能不同,例如,卷积层的权重数据的数据量与其像素宽度和像素高度、以及该卷积层的输入通道数和数据输出通道数都相关,而缩放层的权重数据的数据量只与其像素宽度和像素高度、以及该缩放层的输入通道数或输出通道数都相关。举例来说,卷积神经网络中的卷积层,其输入通道数为3,卷积核的像素宽度为3,卷积核的像素高度为3,输出通道数为2,那么该卷积层的数据量为像素宽度、像素高度、输入通道数和输出通道数的乘积54。
具体的,在对权重数据进行存储得到第二纹理数据的过程中,首先要确定用于存储权重数据的第二纹理存储结构的第二纹理存储结构参数种类,第二纹理存储结构的数据存储方式(例如2D纹理存储方式或3D纹理存储方式)不同,对应的第二纹理存储结构参数的种类也不同,故需要根据第二纹理存储结构的数据存储方式确定第二纹理存储结构参数的种类。在确定出第二纹理存储结构参数的种类后,第二纹理存储结构参数的大小决定了对应的第二纹理存储结构的能够存储的数据量,那么可根据所需存储的权重数据的数据量,确定出各第二纹理存储参数的大小(即保证输入数据中的每个数据都能存储在第二纹理存储结构中)。确定出第二纹理存储参数的种类和大小即确定出了第二纹理存储结构,只需将权重数据存入第二纹理存储结构的相应纹素中的相应通道中,即得到第一纹理数据。
在本申请的一种可选实施例中,若第二纹理存储结构为3D纹理存储结构,则第二纹理存储结构参数包括纹理存储结构的高度、宽度和深度;
若第二纹理存储结构为2D纹理存储结构,则第二纹理存储结构参数包括纹理存储结构的高度和宽度。
可以理解的是,纹理存储结构数据存储方式不同,其对应的纹理存储结构参数的种类也不相同。
在本申请的一种可选实施例中,第二纹理存储结构为3D纹理存储结构,第二纹理存储结构参数包括纹理存储结构的高度、宽度和深度;
若与权重数据的数据量相关的参数数据包括权重数据的像素宽度和像素高度、以及数据处理层的输入通道数和输出通道数,基于与权重数据的数据量相关的参数数据以及第二纹理存储结构的数据存储方式,确定第二纹理存储结构的第二纹理存储结构参数,包括:
基于数据处理层的输入通道数和输出通道数中的一个通道数、以及权重数据的像素宽度和像素高度,确定第二纹理存储结构的高度和宽度;
基于数据处理层的输入通道数和输出通道数中的另一个通道数、以及第二纹理存储结构中每个纹素的通道数,确定第二纹理存储结构的深度。
可以理解的是,若与权重数据的数据量相关的参数数据包括权重数据的像素宽度和像素高度、以及数据处理层的输入通道数和输出通道数,可以理解为该数据处理层的权重数据的位数为四维,在将权重参数的维数从四维转换为(降维)为与输入数据相同的三维后,该数据处理层的权重数据对应的第二纹理存储结构参数的确定过程,也可以采用类似于前文中所描述的输入数据对应的第一纹理存储结构的纹理存储结构参数的确定方式。
具体的,在对权重参数进行降维后,与权重参数的数据量相关的输入通道数和输出通道数中的一个通道数将合并至其他数据,而另一个通道数则作为与输入数据的通道数相对应的参数数据,然后即可采用前文中确定第一纹理存储结构参数的方式确定第二纹理存储结构参数。
在本申请的一种可选实施例中,基于数据处理层的输入通道数和输出通道数中的一个通道数、以及权重数据的像素宽度和像素高度,确定第二纹理存储结构的高度和宽度,包括:
将权重数据的像素宽度作为第二纹理存储结构的宽度;
将权重数据的像素高度与一个通道数的乘积作为第二纹理存储结构的高度。
具体的,采用将一个通道数合并至像素高度的方式对权重参数进行降维,换言之,将权重数据的像素高度与一个通道数的乘积作为降维后的权重参数的像素高度,具体来说,可以是将像素高度与输入通道数的乘积作为降维后的权重参数的像素高度,或者是将像素高度与输出通道数的乘积作为降维后的权重参数的像素高度。类似于确定前文确定第一纹理存储结构参数的方式,将降维后的权重数据的像素高度作为第二纹理存储结构的高度,将降维后的权重数据的像素宽度作为第二纹理存储结构的宽度。
可以理解的是,在实际应用中,权重数据的降维方式还可以包括以下方式:将像素宽度与输出通道数的乘积作为降维后的权重参数的像素宽度,将像素宽度与输入通道数的乘积作为降维后的权重参数的像素宽度。
基于数据处理层的输入通道数和输出通道数中的另一个通道数、以及第二纹理存储结构中每个纹素的通道数,确定第二纹理存储结构的深度,包括:
通过如下表达是确定第二纹理存储结构的深度:
具体的,在对权重参数进行降维处理后,无论第二纹理存储结构为RGB三通道3D纹理存储结构,还是RGBA四通道3D纹理存储结构,都可以采用类似确定前文描述的第一纹理存储结构的深度的确定方式来确定第二纹理存储结构深度,在此过程中,权重参数降维时没有合并至其他参数的另一通道数对应于输入数据的通道数。
举例来说,对于卷积神经网络中的一个卷积层,若该卷积层的组数(group)为1,则卷积的权重数据的数据量为input_channel*output_channel*kernel_w*kernel_h,其中input_channel为卷积层的输入通道数,output_channel为卷积层的输出通道数,kernel_w为卷积核的像素宽度,kernel_h为卷积核的像素高度,将该卷积层的权重数据排列到RGBA四通道纹理中,可以将该将RGBA四通道纹理的纹理存储参数中宽度设置为kernel_w,高度设置为kernel_h*output_channel(即将输出通道对应的权重参数增加到像素高度方向以实现降维),深度设置为(input_channel+3)/4的值向下取整。
在本申请的一种可选实施例中,第二纹理存储结构为3D纹理存储结构,第二纹理存储结构参数包括纹理存储结构的高度、宽度和深度;
若与权重数据的数据量相关的参数数据包括权重数据的像素宽度和像素高度、以及数据处理层的输入通道数或输出通道数,基于与权重数据的数据量相关的参数数据以及第二纹理存储结构的数据存储方式,确定第二纹理存储结构的第二纹理存储结构参数,包括:
将权重数据的像素宽度作为第二纹理存储结构的宽度,将权重数据的像素高度作为第二纹理存储结构的高度,并基于数据处理层的输入通道数或输出通道数,以及第二纹理存储结构中每个纹素的通道数,确定第二纹理存储结构的深度。
在本申请的一种可选实施例中,基于数据处理层的输入通道数或输出通道数,以及第二纹理存储结构中每个纹素的通道数,确定第二纹理存储结构的深度,包括:
通过如下表达式确定纹理存储结构的深度:
具体的,若与权重数据的数据量相关的参数数据包括权重数据的像素宽度和像素高度、以及数据处理层的输入通道数或输出通道数,则可以将此情形下的权重数据类比与输入数据,并采用第一纹理存储结构参数的确定方式确定该情形下的第二纹理存储结果参数,其中输入数据的通道数对应于输入通道数或者输出通道数。
举例来说,经网络中的缩放层,由于其输入通道数input_channe和输出通道数output_channel相等,其权重数据的数据量为input_channel(或output_channel)*1*1,将该缩放层的权重数据排列到GBA四通道纹理中,可以将该将RGBA四通道纹理的纹理存储参数中宽度设置为1,高度设置为1,深度设置为(input_channel+3)/4的值向下取整,或者(output_channel+3)/4。如图5所示,将输入通道数input_channel为8的缩放层的权重参数(1,2,3,4,5,6,7,8)存储在高度为1、宽度为1、深度为2的RGBA四通道3D纹理存储结构中。
在本申请的一种可选实施例中,利用GPU中的至少一个计算单元进行数据处理层的数据处理;基于第一纹理数据和第二纹理数据进行数据处理层的数据处理,得到数据处理层的输出数据,包括:
利用各计算单元读取第一纹理数据中一个第一纹理位置存储的输入数据,并利用该计算单元读取第二纹理数据中对应于该第一纹理位置的第二纹理位置存储的权重数据;
利用各计算单元对读取到的输入数据和对应的权重数据进行数据处理,得到数据处理层的输出数据。
其中,纹理位置在实际应用中可以用纹理坐标来确定。
其中,由于每个输入数据与对应的权重数据有对应关系,在存储输入数据和权重数据时,可以根据输入数据与权重数据之间的对应关系,对第一纹理数据的纹理坐标和第二纹理数据的纹理坐标进行关联存储。可以理解的是,为了便于输入数据和权重数据的对应,第一纹理数据和第二纹理数据对应的纹理存储结构可以采用相同的数据存储方式,例如都采用RGBA四通道纹理。
具体的,GPU中的每个计算单元每次读取纹理存储结构中的一个纹素里所有数据,那么在一个计算单元读取第一纹理数据中的一个纹素里的数据后,该计算单元会根据关联存储的纹理坐标从第二纹理中读取具有对应关系的权重数据,并进行计算得到对应的输出数据。可以理解的是,每个输入数据存储在一个第一纹理数据的一个纹素的一个通道中,那么通过该纹素在第一纹理中的纹理坐标和该纹素中的通道位置可以定位该输入数据,同理也可以在第二纹理中根据纹理坐标和通道位置定位任一权重数据。
举例来说,对于一个缩放层,其对应的第一纹理数据和第二纹理的存储方式都为RGBA四通道3D纹理,第一纹理数据中坐标(0,0,0)的纹素对应的四个输入数据与第二纹理数据中坐标(0,0,0)的纹素对应的四个存储数据关联存储。前向计算过程中,GPU的一个计算单元读取第一纹理数据位置为(0,0,0)的一个纹素点,该纹素点包含有(0,0,1)、(0,0,2)、(0,0,0)和(0,0,3)四个通道中的四个数据,同时该计算单元也读取第二纹理数据位置为(0,0,0)的一个纹素点中的四个数据,按照对应的通道对应关系进行前向计算,即输入数据乘以对应的缩放权值再加上对应的偏移权值后,得出四个输出结果。进一步的,还可以把四个输出结果保存到位置(0,0,0)的输出RGBA四通道纹理中。
需要说明的是,本申请实施例的技术效果主要体现在神经网络前向计算效率上,且所采用的纹理存储结构的通道数越多,其计算效率越高,对于相同的神经网络模型,采用RGBA四通道纹理的方案比采用R单通道纹理的方案,前向计算的时间可减少百分之三十到五十。表1为运行一个人像分割模型采用单通道纹理和RGBA四通道纹理作为存储结构在不同的显卡上的计算时间,可以看到采用RGBA四通道纹理的方案的时间显著缩短。
表1
本申请实施例主要应用在神经网络前向计算库中,由于神经网络前向计算库提供了所有神经网络算法的计算能力,本申请实施例的应用场景与使用神经网络前向库的应用场景相同。应用范围主要可以包括AI(Artificial Intelligence,人工智能)算法相关应用,如人像分割算法,手势识别,图像显著性识别等。各场景应用场景列举如下:
(1)背景虚化,如图6所示,为满足音视频通话中剔除背景的需求,通过神经网络的前向计算识别每帧图像的人像区域,然后将人像以外的背景区域进行模糊处理,从而实现避免背景进入视频。在该场景下,由于通过神经网络的前向计算进行人像区域识别过程中,采用了本申请实施例提供的前向计算方法,即采用RGBA四通道纹理存储结构(或RGB三通道纹理存储结构)对神经网络中的输入数据和权重数据进行了存储,使得前向计算过程效率提高,加快了背景虚化的速度。
(2)手势识别,如图7所示,首先通过神经网络的前向计算将图片中的包含人手的区域(图中矩形框内的区域)分割出来,然后识别分割区域内的手势,图中为识别手势“V”的过程。在该场景下,由于通过神经网络的前向计算进行手势识别过程中,采用了本申请实施例提供的前向计算方法,即采用RGBA四通道纹理存储结构(或RGB三通道纹理存储结构)对神经网络中的输入数据和权重数据进行了存储,使得前向计算过程效率提高,加快了手势识别的速度。
(3)图像显著性识别,如图8所示,图片中的车和小孩为人眼看图片时重点关注的内容,通过神经网络的前向计算可以将这些显著性高的内容标注出来,如图中两个矩形框内所示,为标注出的骑车和小孩。在该场景下,由于通过神经网络的前向计算进行图像显著性识别过程中,采用了本申请实施例提供的前向计算方法,即采用RGBA四通道纹理存储结构(或RGB三通道纹理存储结构)对神经网络中的输入数据和权重数据进行了存储,使得前向计算过程效率提高,加快了图像显著性识别的速度。
通过本申请提供的神经网络的前向计算方法都能显著提高上述三个应用场景中各功能的实现效率。
图9为本申请实施例提供的一种神经网络的前向计算装置的结构框图,如图9所示,该装置900用于对神经网络中的至少一个数据处理层进行数据处理,该装置900可以包括:数据获取模块901、数据存储模块902以及数据处理模块903,其中,
数据获取模块901用于获取数据处理层的输入数据和权重数据;
数据存储模块902用于将采用第一纹理存储结构进行存储,得到第一纹理数据,将权重数据采用第二纹理存储结构进行存储,得到第二纹理数据;
数据处理模块903用于基于第一纹理数据和第二纹理数据进行数据处理层的数据处理,得到数据处理层的输出数据。
本申请实施例提供的方案,对于神经网络的至少一个数据处理层,将输入数据和权重数据分别存储在对应的纹理存储结构中,由于纹理存储结构索引简单方便,且数据存储量大,节省了数据处理层在进行数据处理过程中读取和存储数据的时间,使得神经网络的前向计算效率大大提高。
可选的,第一纹理存储结构或第二纹理存储结构为以下任一种:
红、绿、蓝、透明RGBA四通道三维3D纹理存储结构;
RGB三通道3D纹理存储结构;
RGBA四通道2D纹理存储结构;
RGB三通道2D纹理存储结构。
可选的,第一纹理数据和第二纹理数据中分别包含有至少一个纹素,且每个纹素的通道数为三或四,至少一个纹素由对应的输入数据或权重数据按照通道数依序排列而成。
可选的,数据存储模块具体用于:
获取输入数据的像素宽度、像素高度以及通道数;
基于输入数据的像素宽度、像素高度、通道数以及第一纹理存储结构的数据存储方式,确定第一纹理存储结构的第一纹理存储结构参数;
将输入数据根据第一纹理存储结构参数进行存储,得到第一纹理数据。
可选的,第一纹理存储结构为3D纹理存储结构,第一纹理存储结构参数包括纹理存储结构的高度、宽度和深度;数据存储模块具体用于:
将输入数据的像素宽度作为纹理存储结构的宽度,将输入数据的像素高度作为第一纹理存储结构的高度,并基于输入数据的通道数和第一纹理存储结构中每个纹素的通道数,确定第一纹理存储结构的深度。
可选的,数据存储模块具体用于:
通过如下表达式确定第一纹理存储结构的深度:
可选的,数据存储模块具体用于:
获取与权重数据的数据量相关的参数数据;
基于与权重数据的数据量相关的参数数据以及第二纹理存储结构的数据存储方式,确定第二纹理存储结构的第二纹理存储结构参数;
将权重数据根据第二纹理存储结构参数进行存储,得到第二纹理数据。
可选的,第二纹理存储结构为3D纹理存储结构,第二纹理存储结构参数包括纹理存储结构的高度、宽度和深度;
若与权重数据的数据量相关的参数数据包括权重数据的像素宽度和像素高度、以及数据处理层的输入通道数和输出通道数,数据存储模块具体用于:
基于数据处理层的输入通道数和输出通道数中的一个通道数、以及权重数据的像素宽度和像素高度,确定第二纹理存储结构的高度和宽度;
基于数据处理层的输入通道数和输出通道数中的另一个通道数、以及第二纹理存储结构中每个纹素的通道数,确定第二纹理存储结构的深度。
可选的,数据存储模块具体用于:
将权重数据的像素宽度作为第二纹理存储结构的宽度;
将权重数据的像素高度与一个通道数的乘积作为第二纹理存储结构的高度;
基于数据处理层的输入通道数和输出通道数中的另一个通道数、以及第二纹理存储结构中每个纹素的通道数,确定第二纹理存储结构的深度,包括:
通过如下表达是确定第二纹理存储结构的深度:
可选的,第二纹理存储结构为3D纹理存储结构,第二纹理存储结构参数包括纹理存储结构的高度、宽度和深度;
若与权重数据的数据量相关的参数数据包括权重数据的像素宽度和像素高度、以及数据处理层的输入通道数或输出通道数,数据存储模块具体用于:
将权重数据的像素宽度作为第二纹理存储结构的宽度,将权重数据的像素高度作为第二纹理存储结构的高度,并基于数据处理层的输入通道数或输出通道数,以及第二纹理存储结构中每个纹素的通道数,确定第二纹理存储结构的深度。
可选的,数据存储模块具体用于:
通过如下表达式确定纹理存储结构的深度:
可选的,利用GPU中的至少一个计算单元进行数据处理层的数据处理;数据处理模块具有用于:
利用各计算单元读取第一纹理数据中一个第一纹理位置存储的输入数据,并利用该计算单元读取第二纹理数据中对应于该第一纹理位置的第二纹理位置存储的权重数据;
利用各计算单元对读取到的输入数据和对应的权重数据进行数据处理,得到数据处理层的输出数据。
基于相同的原理,本申请实施例还提供了一种电子设备,该电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该计算机程序时,实现本申请任一可选实施例中所提供的方法,具体可实现如下情况:
神经网络中的至少一个数据处理层进行数据处理的方法包括:获取数据处理层的输入数据和权重数据;将输入数据采用第一纹理存储结构进行存储,得到第一纹理数据,将权重数据采用第二纹理存储结构进行存储,得到第二纹理数据;基于第一纹理数据和第二纹理数据进行数据处理层的数据处理,得到数据处理层的输出数据。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现本申请任一实施例所示的方法。
可以理解的是,介质中存储的可以是神经网络的前向计算方法对应的计算机程序。
图10中示出了本申请实施例所适用的一种电子设备的结构示意图,如图10所示,图10所示的电子设备1000包括:处理器1001和存储器1003。其中,处理器1001和存储器1003相连,如通过总线1002相连。进一步地,电子设备1000还可以包括收发器1004,电子设备1000可以通过收发器1004与其他电子设备进行数据的交互。需要说明的是,实际应用中收发器1004不限于一个,该电子设备1000的结构并不构成对本申请实施例的限定。
其中,处理器1001应用于本申请实施例中,可以用于实现图9所示的数据获取模块、数据存储模块以及数据处理模块的功能。
处理器1001可以是CPU,通用处理器,DSP,ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器1001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线1002可包括一通路,在上述组件之间传送信息。总线1002可以是PCI总线或EISA总线等。总线1002可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器1003可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、CD-ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器1003用于存储执行本申请方案的应用程序代码,并由处理器1001来控制执行。处理器1001用于执行存储器1003中存储的应用程序代码,以实现图9所示实施例提供的神经网络的前向计算装置的动作。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (15)
1.一种神经网络的前向计算方法,其特征在于,所述神经网络中的至少一个数据处理层进行数据处理的方法包括:
获取所述数据处理层的输入数据和权重数据;
将所述输入数据采用第一纹理存储结构进行存储,得到第一纹理数据,将所述权重数据采用第二纹理存储结构进行存储,得到第二纹理数据,所述第一纹理数据和所述第二纹理数据中分别包含有至少一个纹素,每个纹素中的多个通道依次堆叠设置,每个通道用于存储所述输入数据或所述权重数据中的一个数据,所述至少一个纹素由对应的输入数据或权重数据基于堆叠的通道依序排列而成;
基于所述第一纹理数据和所述第二纹理数据进行所述数据处理层的数据处理,得到所述数据处理层的输出数据。
2.根据权利要求1所述的方法,其特征在于,所述第一纹理存储结构或所述第二纹理存储结构为以下任一种:
红、绿、蓝、透明RGBA四通道三维3D纹理存储结构;
RGB三通道3D纹理存储结构;
RGBA四通道2D纹理存储结构;
RGB三通道2D纹理存储结构。
3.根据权利要求1所述的方法,其特征在于,每个纹素的通道数为三或四,所述至少一个纹素由对应的输入数据或权重数据按照通道数依序排列而成。
4.根据权利要求3所述的方法,其特征在于,所述将所述输入数据采用第一纹理存储结构进行存储,得到第一纹理数据,包括:
获取所述输入数据的像素宽度、像素高度以及通道数;
基于所述输入数据的像素宽度、像素高度、通道数以及所述第一纹理存储结构的数据存储方式,确定所述第一纹理存储结构的第一纹理存储结构参数;
将所述输入数据根据所述第一纹理存储结构参数进行存储,得到所述第一纹理数据。
5.根据权利要求4所述的方法,其特征在于,所述第一纹理存储结构为3D纹理存储结构,所述第一纹理存储结构参数包括纹理存储结构的高度、宽度和深度;
所述基于所述输入数据的像素宽度、像素高度、通道数以及所述第一纹理存储结构的数据存储方式,确定所述第一纹理存储结构的第一纹理存储结构参数,包括:
将所述输入数据的像素宽度作为所述第一纹理存储结构的宽度,将所述输入数据的像素高度作为所述第一纹理存储结构的高度;以及
基于所述输入数据的通道数和所述第一纹理存储结构中每个纹素的通道数,确定所述第一纹理存储结构的深度。
7.根据权利要求3所述的方法,其特征在于,所述将所述权重数据采用第二纹理存储结构进行存储,得到第二纹理数据,包括:
获取与所述权重数据的数据量相关的参数数据;
基于所述与所述权重数据的数据量相关的参数数据以及所述第二纹理存储结构的数据存储方式,确定所述第二纹理存储结构的第二纹理存储结构参数;
将所述权重数据根据所述第二纹理存储结构参数进行存储,得到所述第二纹理数据。
8.根据权利要求7所述的方法,其特征在于,所述第二纹理存储结构为3D纹理存储结构,所述第二纹理存储结构参数包括纹理存储结构的高度、宽度和深度;
若所述与所述权重数据的数据量相关的参数数据包括所述权重数据的像素宽度和像素高度、以及所述数据处理层的输入通道数和输出通道数,所述基于所述与所述权重数据的数据量相关的参数数据以及所述第二纹理存储结构的数据存储方式,确定所述第二纹理存储结构的第二纹理存储结构参数,包括:
基于所述数据处理层的输入通道数和输出通道数中的一个通道数、以及所述权重数据的像素宽度和像素高度,确定所述第二纹理存储结构的高度和宽度;
基于所述数据处理层的输入通道数和输出通道数中的另一个通道数、以及所述第二纹理存储结构中每个纹素的通道数,确定所述第二纹理存储结构的深度。
9.根据权利要求8所述的方法,其特征在于,所述基于所述数据处理层的输入通道数和输出通道数中的一个通道数、以及所述权重数据的像素宽度和像素高度,确定所述第二纹理存储结构的高度和宽度,包括:
将所述权重数据的像素宽度作为所述第二纹理存储结构的宽度;
将所述权重数据的像素高度与所述一个通道数的乘积作为所述第二纹理存储结构的高度;
基于所述数据处理层的输入通道数和输出通道数中的另一个通道数、以及所述第二纹理存储结构中每个纹素的通道数,确定所述第二纹理存储结构的深度,包括:
通过如下表达式确定所述第二纹理存储结构的深度:
10.根据权利要求7所述的方法,其特征在于,所述第二纹理存储结构为3D纹理存储结构,所述第二纹理存储结构参数包括纹理存储结构的高度、宽度和深度;
若所述与所述权重数据的数据量相关的参数数据包括所述权重数据的像素宽度和像素高度、以及所述数据处理层的输入通道数或输出通道数,所述基于所述与所述权重数据的数据量相关的参数数据以及所述第二纹理存储结构的数据存储方式,确定所述第二纹理存储结构的第二纹理存储结构参数,包括:
将所述权重数据的像素宽度作为所述第二纹理存储结构的宽度,将所述权重数据的像素高度作为所述第二纹理存储结构的高度,并基于所述数据处理层的输入通道数或输出通道数,以及所述第二纹理存储结构中每个纹素的通道数,确定所述第二纹理存储结构的深度。
12.根据权利要求1所述的方法,其特征在于,利用GPU中的至少一个计算单元进行所述数据处理层的数据处理;
所述基于所述第一纹理数据和所述第二纹理数据进行所述数据处理层的数据处理,得到所述数据处理层的输出数据,包括:
针对所述至少一个计算单元中的每个计算单元,利用该计算单元读取所述第一纹理数据中一个第一纹理位置存储的输入数据,并利用该计算单元读取所述第二纹理数据中对应于该第一纹理位置的第二纹理位置存储的权重数据;
利用各计算单元对读取到的输入数据和对应的权重数据进行数据处理,得到所述数据处理层的输出数据。
13.一种神经网络的前向计算装置,其特征在于,该装置用于对所述神经网络中的至少一个数据处理层进行数据处理,包括:
数据获取模块,用于获取所述数据处理层的输入数据和权重数据;
数据存储模块,用于将采用第一纹理存储结构进行存储,得到第一纹理数据,将所述权重数据采用第二纹理存储结构进行存储,得到第二纹理数据,所述第一纹理数据和所述第二纹理数据中分别包含有至少一个纹素,每个纹素中的多个通道依次堆叠设置,每个通道用于存储所述输入数据或所述权重数据中的一个数据,所述至少一个纹素由对应的输入数据或权重数据基于堆叠的通道依序排列而成;
数据处理模块,用于基于所述第一纹理数据和所述第二纹理数据进行所述数据处理层的数据处理,得到所述数据处理层的输出数据。
14.一种电子设备,其特征在于,包括存储器和处理器;
所述存储器中存储有计算机程序;
所述处理器,用于执行所述计算机程序以实现权利要求1至12中任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至12中任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911294777.2A CN111091188B (zh) | 2019-12-16 | 2019-12-16 | 神经网络的前向计算方法、装置及计算机可读存储介质 |
PCT/CN2020/098799 WO2021120578A1 (zh) | 2019-12-16 | 2020-06-29 | 神经网络的前向计算方法、装置及计算机可读存储介质 |
US17/507,127 US20220044104A1 (en) | 2019-12-16 | 2021-10-21 | Method and apparatus for forward computation of neural network, and computer-readable storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911294777.2A CN111091188B (zh) | 2019-12-16 | 2019-12-16 | 神经网络的前向计算方法、装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111091188A CN111091188A (zh) | 2020-05-01 |
CN111091188B true CN111091188B (zh) | 2022-03-25 |
Family
ID=70395080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911294777.2A Active CN111091188B (zh) | 2019-12-16 | 2019-12-16 | 神经网络的前向计算方法、装置及计算机可读存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220044104A1 (zh) |
CN (1) | CN111091188B (zh) |
WO (1) | WO2021120578A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111091188B (zh) * | 2019-12-16 | 2022-03-25 | 腾讯科技(深圳)有限公司 | 神经网络的前向计算方法、装置及计算机可读存储介质 |
US11664656B2 (en) * | 2020-03-18 | 2023-05-30 | Mavagail Technology, LLC | ESD protection for integrated circuit devices |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106471545A (zh) * | 2014-06-25 | 2017-03-01 | 高通股份有限公司 | 作为图像处理引擎的纹理单元 |
CN108572593A (zh) * | 2018-04-27 | 2018-09-25 | 北京源码矩阵科技有限公司 | 跨平台卷积神经网络控制系统及方法、信息数据处理终端 |
CN110147880A (zh) * | 2019-05-22 | 2019-08-20 | 苏州浪潮智能科技有限公司 | 一种神经网络数据处理结构、方法、系统及相关装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7916149B1 (en) * | 2005-01-04 | 2011-03-29 | Nvidia Corporation | Block linear memory ordering of texture data |
US9508185B2 (en) * | 2011-05-02 | 2016-11-29 | Sony Interactive Entertainment Inc. | Texturing in graphics hardware |
KR102258100B1 (ko) * | 2014-11-18 | 2021-05-28 | 삼성전자주식회사 | 텍스쳐 처리 방법 및 장치 |
US20160379109A1 (en) * | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Convolutional neural networks on hardware accelerators |
US10181176B2 (en) * | 2016-03-04 | 2019-01-15 | Samsung Electronics Co., Ltd. | Efficient low-power texture cache architecture |
US10599935B2 (en) * | 2017-02-22 | 2020-03-24 | Arm Limited | Processing artificial neural network weights |
US10339443B1 (en) * | 2017-02-24 | 2019-07-02 | Gopro, Inc. | Systems and methods for processing convolutional neural network operations using textures |
CN110555793B (zh) * | 2018-06-04 | 2023-03-14 | 北京亮亮视野科技有限公司 | 高效的深度卷积实现方法及包括该方法的视觉处理方法 |
CN111091188B (zh) * | 2019-12-16 | 2022-03-25 | 腾讯科技(深圳)有限公司 | 神经网络的前向计算方法、装置及计算机可读存储介质 |
-
2019
- 2019-12-16 CN CN201911294777.2A patent/CN111091188B/zh active Active
-
2020
- 2020-06-29 WO PCT/CN2020/098799 patent/WO2021120578A1/zh active Application Filing
-
2021
- 2021-10-21 US US17/507,127 patent/US20220044104A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106471545A (zh) * | 2014-06-25 | 2017-03-01 | 高通股份有限公司 | 作为图像处理引擎的纹理单元 |
CN108572593A (zh) * | 2018-04-27 | 2018-09-25 | 北京源码矩阵科技有限公司 | 跨平台卷积神经网络控制系统及方法、信息数据处理终端 |
CN110147880A (zh) * | 2019-05-22 | 2019-08-20 | 苏州浪潮智能科技有限公司 | 一种神经网络数据处理结构、方法、系统及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
US20220044104A1 (en) | 2022-02-10 |
WO2021120578A1 (zh) | 2021-06-24 |
CN111091188A (zh) | 2020-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8482560B2 (en) | Image forming techniques | |
US20110216068A1 (en) | Edge processing techniques | |
US9013479B2 (en) | Apparatus and method for tile-based rendering | |
US7483035B2 (en) | Texture cache control using a data dependent slot selection scheme | |
US8587592B2 (en) | Tile-based rendering apparatus and method | |
KR20160033128A (ko) | 3d 표면 재구성을 위한 스파스 gpu 복셀화 | |
US8345064B2 (en) | Method and system for tile binning using half-plane edge function | |
CN109785417B (zh) | 一种实现OpenGL累积操作的方法及装置 | |
CN111091188B (zh) | 神经网络的前向计算方法、装置及计算机可读存储介质 | |
US10204447B2 (en) | 2D image processing for extrusion into 3D objects | |
KR20120101974A (ko) | 장면의 3차원 뷰들을 렌더링 하기 위한 시스템 및 방법 | |
KR102569371B1 (ko) | 델타 색상 압축의 비디오 적용 | |
CN108961170A (zh) | 图像处理方法、装置和系统 | |
CN115509764B (zh) | 一种实时渲染的多gpu并行调度方法、装置及存储器 | |
CN107016716B (zh) | 确定细节级别的图形处理设备和方法 | |
CN110866965A (zh) | 一种三维模型的贴图绘制方法及装置 | |
US7876330B2 (en) | Color conversion apparatus, filter processing apparatus and color conversion method | |
CN113506305B (zh) | 三维点云数据的图像增强方法、语义分割方法及装置 | |
JP2010515131A (ja) | ベクトルグラフィックをラスター化するプロセスにおいて境界を発生させるための方法およびシステム、ならびに、システムを製造するための方法 | |
CN111768353A (zh) | 一种三维模型的孔洞填补方法及装置 | |
CN115049531B (zh) | 图像渲染方法、装置、图形处理设备及存储介质 | |
CN111062473A (zh) | 神经网络模型中的数据计算方法、图像处理方法及装置 | |
US9741155B2 (en) | Apparatus and method for tile-based graphic data rendering | |
US20220036631A1 (en) | Method for performing shader occupancy for small primitives | |
CN115131384A (zh) | 基于边缘保持的仿生机器人3d打印方法、装置及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40018150 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |