CN110728367A - 用于神经网络的数据存储方法及装置 - Google Patents
用于神经网络的数据存储方法及装置 Download PDFInfo
- Publication number
- CN110728367A CN110728367A CN201911305373.9A CN201911305373A CN110728367A CN 110728367 A CN110728367 A CN 110728367A CN 201911305373 A CN201911305373 A CN 201911305373A CN 110728367 A CN110728367 A CN 110728367A
- Authority
- CN
- China
- Prior art keywords
- data
- dimensional
- layer
- storage
- parallelism
- 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
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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- 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
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/60—Type of objects
- G06V20/64—Three-dimensional objects
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Databases & Information Systems (AREA)
- Multimedia (AREA)
- Image Analysis (AREA)
Abstract
本发明实施例公开了一种用于神经网络的数据存储方法及装置。所述方法包括:获取片外存储器发送的三维图像数据,三维图像数据包括2N个二维逻辑层,每个二维逻辑层包括呈二维矩阵排列的数据;将第2N‑1层和第2N层二维逻辑层定义为第N数据组,以得到N个数据组;确认针对三维图像数据的计算并行度;根据计算并行度对N个数据组的每层数据按预设第一顺序存储至片内存储器。本发明通过拓展存储结构的维度,采用二维的存储结构来反映数据之间更多的空间关系,达到了在计算模块采用不同的并行结构时可以更灵活的满足需求,提高性能和存储密度的技术效果。
Description
技术领域
本发明实施例涉及神经网络的数据读写技术,尤其涉及一种用于神经网络的数据存储方法及装置。
背景技术
深度学习是目前比较热门的一个研究课题,其算法在不断快速更新,同时其应用领域也在不断扩展。深度学习一个显著的特点是需要对大量的输入数据进行海量的计算得到最后的结果,这个特点催生了集成电路的一个应用研究方向:利用专用集成电路对深度学习进行加速。
深度学习加速电路一个关键的技术是如何存储网络计算过程中产生的大量中间数据。深度学习的计算过程中,每个阶段的输入数据都组织成(W, G, C)形式的三维结构,数据相互之间存在空间关系。深度学习加速电路中会采用大量的存储单元来存储这些中间数据,现有技术在存储的过程中会将空间关系转换成存储单元之间的逻辑关系,而实际的数据则采用将三维结构展开成一维形式的方法来进行存储。
现有技术的存储方式采用简单的存储方式来存储数据,同时通过其简单的存储规则来反映出数据之间的空间关系。但是其简单的存储规则使其数据的吞吐量和数据之间空间关系的表达相互矛盾,其存储方法不能同时读取出具有复杂空间关系的一组数据。
发明内容
本发明提供一种用于神经网络的数据存储方法及装置,以实现在计算模块采用不同的并行结构时可以更灵活的满足需求,提高性能和存储密度的技术效果。
第一方面,本发明实施例提供了一种用于神经网络的数据存储方法,包括:
获取片外存储器发送的三维图像数据,三维图像数据包括2N个二维逻辑层,每个二维逻辑层包括呈二维矩阵排列的数据;
将第2N-1层和第2N层二维逻辑层定义为第N数据组,以得到N个数据组;
确认针对三维图像数据的计算并行度;
根据计算并行度对N个数据组的每层数据按预设第一顺序存储至片内存储器。
进一步的,二维矩阵包括由a列和b行定义的a*b矩阵数据结构。
进一步的,根据计算并行度对N个数据组的每层数据按预设第一顺序存储至片内存储器包括:
根据计算并行度确定存储单元的个数;
从左往右依次遍历N个数据组的每行数据;
将第i数据组中位于第2i-1层对应的二维矩阵中(c,d)处的数据存储到第e存储单元的第f列中;
将第i数据组中位于第2i层对应的二维矩阵中(c,d)处的数据存储到第e存储单元的第g列中,i<=N,c<=a,d<=b,e<=并行度/2,f、g为自然数,N为正整数;
e、f和g由以下公式得到:
……(1)
其中,mod函数表示对整个公式的结果取余数,ceil函数表示对整个公式的结果向上取整。
进一步的,计算并行度的数值满足2n条件,n为正整数。
第二方面,本发明实施例还提供了一种用于神经网络的数据存储装置,包括:
获取模块,用于获取片外存储器发送的三维图像数据,三维图像数据包括2N个二维逻辑层,每个二维逻辑层包括呈二维矩阵排列的数据;
定义模块,用于将第2N-1层和第2N层二维逻辑层定义为第N数据组,以得到N个数据组;
判断模块,用于确认针对三维图像数据的计算并行度;
存储模块,用于根据计算并行度对N个数据组的每层数据按预设第一顺序存储至片内存储器。
进一步的,二维矩阵包括由a列和b行定义的a*b矩阵数据结构。
进一步的,存储模块包括:
确定单元,用于根据计算并行度确定存储单元的个数;
遍历单元,用于从左往右依次遍历N个数据组的每行数据;
第一执行单元,用于将第i数据组中位于第2i-1层对应的二维矩阵中(c,d)处的数据存储到第e存储单元的第f列中;
第二执行单元,用于将第i数据组中位于第2i层对应的二维矩阵中(c,d)处的数据存储到第e存储单元的第g列中,i<=N,c<=a,d<=b,e<=并行度/2,f、g为自然数,N为正整数;
e、f和g由以下公式得到:
……(1)
其中,mod函数表示对整个公式的结果取余数,ceil函数表示对整个公式的结果向上取整。
进一步的,计算并行度的数值满足2n条件,n为正整数。
本发明通过拓展存储结构的维度,解决了现有技术中每次读取的一组数据相互之间只能具有一个不同维度的坐标的技术问题,达到了每次读取的数据相互之间可以同时具有两个不同维度的坐标,在计算模块采用不同的并行结构时可以更灵活的满足需求,提高性能和存储密度,以及采用二维的存储结构来反映数据之间更多的空间关系的技术效果,同时二维结构的存储模块可以使用相同的地址来读写所有bank,也可以使用不同的地址来读写不同的bank,其每次读写操作可以同时读写更多的数据,从而使得数据之间的空间关系更灵活。
附图说明
图1为本发明实施例一提供的一种用于神经网络的数据存储方法流程图;
图2为本发明实施例一提供的一种存储单元的结构示意图;
图3为本发明实施例二提供的一种用于神经网络的数据存储方法流程图;
图4为本发明实施例二提供的一种存储单元的结构示意图;
图5为本发明实施例二提供的另一种存储单元的结构示意图;
图6为本发明实施例三提供的一种用于神经网络的数据存储装置的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。
此外,术语“第一”、“第二”等可在本文中用于描述各种方向、动作、步骤或元件等,但这些方向、动作、步骤或元件不受这些术语限制。这些术语仅用于将第一个方向、动作、步骤或元件与另一个方向、动作、步骤或元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一执行单元称为第二执行单元,且类似地,可将第二执行单元称为第一执行单元。第一执行单元和第二执行单元两者都是执行单元,但其不是同一执行单元。术语“第一”、“第二”等而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
实施例一
图1为本发明实施例一提供的一种用于神经网络的数据存储方法的流程图,本实施例可适用于对片内存储器进行数据存储的情况,该方法可以由存储电路来执行。如图1所示,一种用于神经网络的数据存储方法,具体包括如下步骤:
步骤S110、获取片外存储器发送的三维图像数据,三维图像数据包括2N个二维逻辑层,每个二维逻辑层包括呈二维矩阵排列的数据;
具体的,存储器(Memory)是现代信息技术中用于保存信息的记忆设备。其概念很广,有很多层次,它根据控制器指定的位置存入和取出信息。有了存储器,计算机才有记忆功能,才能保证正常工作。计算机中的存储器按用途存储器可分为主存储器(内存)和辅助存储器(外存),也有分为外部存储器和内部存储器的分类方法。外存通常是磁性介质或光盘等,能长期保存信息。内存指主板上的存储部件,用来存放当前正在执行的数据和程序,但仅用于暂时存放程序和数据,关闭电源或断电,数据会丢失。在本实施例中,片外存储器是指位于用于数据存储的芯片外的一种存储器,片外存储器发送三维图像数据到片内存储器中,这里所指的片内存储器可以是人工智能(Artificial Intelligence, AI)芯片,也可以是块式随机存取存储器(block random access memory,BRAM),这种BRAM存储器的输出必须要时钟,有较大的存储空间,是一种现场可编程门阵列(Field-Programmable Gate Array,FPGA)定制的随机存取存储器(random access memory,RAM)资源,三维图像数据可以包括多层二维图像数据(即二维逻辑层),每层二维图像数据上都可以包括呈相同二维矩阵排布的数据。
步骤S120、将第2N-1层和第2N层二维逻辑层定义为第N数据组,以得到N个数据组;
具体的,将连续的、彼此相邻的一层奇数层二维逻辑层和一层偶数层二维逻辑层当成一个数据组,从而得到多个数据组,在本实施例中,N为正整数。
步骤S130、确认针对三维图像数据的计算并行度;
具体的,这里的计算并行度可以通过神经网络的计算模块来确定,确定计算并行度的作用在于确定存储单元的个数,在本实施例中,存储单元的个数等于计算并行度的一半。
步骤S140、根据计算并行度对N个数据组的每层数据按预设第一顺序存储至片内存储器。
具体的,可以根据步骤S130中确定的计算并行度确定存储单元的个数,在本实施例中,存储操作可以同时对所有的存储单元进行,片内存储器里可以包括多个存储单元,存储单元可以用bank表示,每个bank的每一列上分别存储着连续的、彼此相邻的一层奇数层二维逻辑层和一层偶数层二维逻辑层上位于相同二维矩阵处对应的两个数据。图2为本发明实施例一提供的一种存储单元的结构示意图,如图2所示,三维图像数据中包括四层二维逻辑层,如果这时的并行度等于4,即存储单元的个数为2个,对应图2上的两个bank,那么bank1的第一列存储的就是第一层和第二层二维逻辑层的第一行的第一个数据,bank2的第一列存储的就是第三层和第四层二维逻辑层的第一行的第一个数据,本实施例的第一顺序就是指从左往右,将每个数据组位于相同二维矩阵处的数据分别存储到存储单元中,举例来说,比如二维逻辑层的层数是4,也就是说存在2个数据组,对应图2上两个bank,那么在存储时,将属于第一数据组的第一层二维逻辑层的第一行第一个数据存储在第一存储单元(即bank1)的第一列第一行里,将属于第一数据组的第二层二维逻辑层的第一行第一个数据存储在第一存储单元(即bank1)的第一列第二行里,同时将属于第二数据组的第三层二维逻辑层的第一行第一个数据存储在第二存储单元(即bank2)的第一列第一行里,将属于第二数据组的第四层二维逻辑层的第一行第一个数据存储在第二存储单元(即bank2)的第一列第二行里,然后将第一数据组的第一行的第二个数据存储在第一存储单元的第二列里,同时将第二数据组的第一行的第二个数据存储在第二存储单元的第二列中,以此类推,直到2个数据组的第一行的数据都存储完毕后,再自动存储2个数据组的下一行,直到如图2中所示,bank1和bank2都完成第一到第四层二维逻辑层最后一行的最后一个数据的存储,即将2个数据组的所有数据都存储完毕,才完成了整个数据存储的过程。
本发明实施例一的有益效果在于通过拓展存储结构的维度,采用二维的存储结构来反映数据之间更多的空间关系,达到了在计算模块采用不同的并行结构时可以更灵活的满足需求,提高性能和存储密度的技术效果。
实施例二
本发明实施例二是在实施例一的基础上做的进一步优化。图3为本发明实施例二提供的一种用于神经网络的数据存储方法的流程图。如图3所示,本实施例的用于神经网络的数据存储方法,包括以下步骤:
步骤S210、获取片外存储器发送的三维图像数据,三维图像数据包括2N个二维逻辑层,每个二维逻辑层包括呈二维矩阵排列的数据;
具体的,存储器(Memory)是现代信息技术中用于保存信息的记忆设备。其概念很广,有很多层次,它根据控制器指定的位置存入和取出信息。有了存储器,计算机才有记忆功能,才能保证正常工作。计算机中的存储器按用途存储器可分为主存储器(内存)和辅助存储器(外存),也有分为外部存储器和内部存储器的分类方法。外存通常是磁性介质或光盘等,能长期保存信息。内存指主板上的存储部件,用来存放当前正在执行的数据和程序,但仅用于暂时存放程序和数据,关闭电源或断电,数据会丢失。在本实施例中,片外存储器是指位于用于数据存储的芯片外的一种存储器,片外存储器发送三维图像数据到片内存储器中,这里所指的片内存储器可以是人工智能(Artificial Intelligence, AI)芯片,也可以是块式随机存取存储器(block random access memory,BRAM),这种BRAM存储器的输出必须要时钟,有较大的存储空间,是一种现场可编程门阵列(Field-Programmable Gate Array,FPGA)定制的随机存取存储器(random access memory,RAM)资源,三维图像数据可以包括多层二维图像数据(即二维逻辑层),每层二维图像数据上都可以包括呈相同二维矩阵排布的数据。
步骤S220、将第2N-1层和第2N层二维逻辑层定义为第N数据组,以得到N个数据组;
具体的,将连续的、彼此相邻的一层奇数层二维逻辑层和一层偶数层二维逻辑层当成一个数据组,从而得到多个数据组。在本实施例中,N为正整数。
步骤S230、确认针对三维图像数据的计算并行度;
具体的,这里的计算并行度可以通过神经网络的计算模块来确定,确定计算并行度的作用在于确定存储单元的个数,在本实施例中,存储单元的个数等于计算并行度的一半。
在本实施例中,二维矩阵包括由a列和b行定义的a*b矩阵数据结构。
步骤S240、根据计算并行度确定存储单元的个数;
具体的,在步骤S230中,得到计算并行度的数据,然后可以根据存储单元的设置计算出存储单元的个数,这里的存储单元可以是一个存储单元的一列存储一个数据,也可以是一列存储两个数据,在本实施例中,优选的,每个存储单元的一列存储两个数据,这样做的目的在于存储单元的数量可以减半,只需要管理一半的存储地址,从而简化设计和节省资源。
步骤S250、从左往右依次遍历N个数据组的每行数据;
具体的,在步骤S250中,先从左往右依次遍历每个数据组的每行数据,即先针对每个数据组的第一行数据从左往右遍历,再完成对第一行数据的遍历后,自动遍历下一行,同样是对第二行的数据从左往右一个一个遍历,完成第二行数据的遍历后,遍历第三行,然后这样自动循环执行遍历操作直到完成每个数据组的最后一行的遍历。
步骤S260、将第i数据组中位于第2i-1层对应的二维矩阵中(c,d)处的数据存储到第e存储单元的第f列中;
具体的,可以根据二维逻辑层的层数的奇偶,在片内存储器中分别存储二维逻辑层的数据,在本实施例中,奇数层的二维逻辑层数据可以存储在每个存储单元(即bank)的第一行。
步骤S270、将第i数据组中位于第2i层对应的二维矩阵中(c,d)处的数据存储到第e存储单元的第g列中,i<=N,c<=a,d<=b,e<=并行度/2,f、g为自然数,N为正整数。
具体的,在本实施例中个,偶数层的二维逻辑层的数据可以存储在每个存储单元(即bank)的第二行。
在本实施例中,e、f和g由以下公式得到:
……(2)
其中,mod函数表示对整个公式的结果取余数,ceil函数表示对整个公式的结果向上取整。
具体的,在本实施例中,mod函数表示的是对公式(1)得到的结果只取余数,举例来说,假设公式(1)算出的结果是3余2,也就是说,这时只取这个余数2作为对应的二维逻辑层上的数据对应存储的存储单元,即存储在第二存储单元上。Ceil函数表示的是对公式(2)和公式(3)得到的结果向上取整,只要计算得到的数字不是整数,即存在小数,都是取计算结果的整数部分再加一作为最后选取的数字,举例来说,假设公式(3)通过计算后得到的结果是3.2,那么这时向上取整,也就是取4,即存储在存储单元的第4列。
在本实施例中,存储操作可以同时对所有的存储单元进行。图4为本发明实施例二提供的一种存储单元的结构示意图。如图4所示,当三维图像数据包括的二维逻辑层层数大于等于计算并行度时,也就是说这时存储单元的数量小于等于实际需要的存储单元数量时,举例来说,比如二维逻辑层的层数是8,也就是说存在4个数据组,而计算并行度为4时,也就是说这时只存在2个存储单元,对应图4中两个存储单元bank1和bank2,先将第一数据组的第一行的第一个数据存储在第一存储单元(即bank1)的第一列里,将第二数据组的第一行的第一个数据存储在第二存储单元(即bank2)的第一列里,然后将第三数据组的第一行的第一个数据存储在第一存储单元的第二列里,将第四数据组的第一行的第一个数据存储在第二存储单元的第二列中,以此类推,直到4个数据组的第一行的数据都存储完毕后,再自动存储4个数据组的下一行,直到如图4所示bank1和bank2完成对每层二维逻辑层的最后一行的最后一个数据的存储,即将4个数据组的所有数据都存储完毕,才完成了整个数据存储的过程。
图5为本发明实施例二提供的另一种存储单元的结构示意图。如图5所示,当三维图像数据包括的二维逻辑层层数小于计算并行度时,也就是说这时存储单元的数量大于实际需要的存储单元数量时,举例来说,比如二维逻辑层的层数是4,也就是说存在2个数据组,而计算并行度为8时,也就是说这时存在4个存储单元,对应图5中4个存储单元bank1、bank2、bank3和bank4,先将第一数据组的第一行的第一个数据存储在第一存储单元(即bank1)的第一列里,将第二数据组的第一行的第一个数据存储在第二存储单元(即bank2)的第一列里,然后将第一数据组的第一行的第二个数据存储在第三存储单元(即bank3)的第一列里,将第二数据组的第一行的第二个数据存储在第四存储单元(即bank4)的第一列中,在4个存储单元的第一列都存满后,将第一数据组的第一行第三个数据存储在第一存储单元的第二列中,将第二数据组的第一行第三个数据存储在第二存储单元的第二列中,将第一数据组的第一行第四个数据存储字第三存储单元中,将第二数据组的第一行第四个数据存储在第四存储单元中,以此类推,直到2个数据组的第一行的数据都存储完毕后,再自动存储2个数据组的下一行,直到如图5中所示,4个存储单元完成对第一和第二数据组的最后一行的最后一个数据的存储,即将2个数据组的所有数据都存储完毕,才完成了整个数据存储的过程。
在本实施例中,还可以根据计算并行度与二维逻辑层的总层数之间的关系决定存储在存储单元中的数据的读取方式。每次读取操作都可以同时对所有的存储单元进行。当二维逻辑层的总层数大于等于计算并行度时,读取存储在片内存储器中的数据,所有的存储单元(即bank)可以采用相同的读地址,每次读操作可以从所有bank的相同存储地址中一次性读出并行度个数据;而当二维逻辑层的总层数小于并行度时,每个bank都可以采用不同的地址,每次读取的以并行度的数值为个数的数据之间的存储坐标可以都不相同。
在本实施例中,计算并行度的数值满足2n条件,n为正整数。
本发明实施例二的有益效果在于通过拓展存储结构的维度,解决了现有技术中每次读取的一组数据相互之间只能具有一个不同维度的坐标的技术问题,达到了每次读取的数据相互之间可以同时具有两个不同维度的坐标,在计算模块采用不同的并行结构时可以更灵活的满足需求,提高性能和存储密度,以及采用二维的存储结构来反映数据之间更多的空间关系的技术效果,同时二维结构的存储模块可以使用相同的地址来读写所有bank,也可以使用不同的地址来读写不同的bank,其每次读写操作可以同时读写更多的数据,从而使得数据之间的空间关系更灵活。
实施例三
图6为本发明实施例三提供的一种用于神经网络的数据存储装置。如图6所示,本实施例的用于神经网络的数据存储装置300,包括:
获取模块310,用于获取片外存储器发送的三维图像数据,三维图像数据包括2N个二维逻辑层,每个二维逻辑层包括呈二维矩阵排列的数据;
定义模块320,用于将第2N-1层和第2N层二维逻辑层定义为第N数据组,以得到N个数据组;
判断模块330,用于确认针对三维图像数据的计算并行度;
存储模块340,用于根据计算并行度对N个数据组的每层数据按预设第一顺序存储至片内存储器。
在本实施例中,二维矩阵包括由a列和b行定义的a*b矩阵数据结构。
在本实施例中,存储模块340包括:
确定单元,用于根据计算并行度确定存储单元的个数;
遍历单元,用于从左往右依次遍历N个数据组的每行数据;
第一执行单元,用于将第i数据组中位于第2i-1层对应的二维矩阵中(c,d)处的数据存储到第e存储单元的第f列中;
第二执行单元,用于将第i数据组中位于第2i层对应的二维矩阵中(c,d)处的数据存储到第e存储单元的第g列中,i<=N,c<=a,d<=b, e<=并行度/2,f、g为自然数,N为正整数;e、f和g由以下公式得到:
其中,mod函数表示对整个公式的结果取余数,ceil函数表示对整个公式的结果向上取整。
在本实施例中,计算并行度的数值满足2n条件,n为正整数。
本发明实施例所提供的用于神经网络的数据存储装置可执行本发明任意实施例所提供的用于神经网络的数据存储方法,具备执行方法相应的功能模块和有益效果。
值得注意的是,上述用于神经网络的数据存储装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (8)
1.一种用于神经网络的数据存储方法,其特征在于,包括:
获取片外存储器发送的三维图像数据,所述三维图像数据包括2N个二维逻辑层,每个所述二维逻辑层包括呈二维矩阵排列的数据;
将第2N-1层和第2N层所述二维逻辑层定义为第N数据组,以得到N个数据组;
确认针对所述三维图像数据的计算并行度;
根据所述计算并行度对所述N个数据组的每层数据按预设第一顺序存储至片内存储器。
2.根据权利要求1所述的一种用于神经网络的数据存储方法,其特征在于,所述二维矩阵包括由a列和b行定义的a*b矩阵数据结构。
3.根据权利要求2所述的一种用于神经网络的数据存储方法,其特征在于,所述根据所述计算并行度对所述N个数据组的每层数据按预设第一顺序存储至片内存储器包括:
根据所述计算并行度确定存储单元的个数;
从左往右依次遍历所述N个数据组的每行数据;
将所述第i数据组中位于第2i-1层对应的所述二维矩阵中(c,d)处的数据存储到第e存储单元的第f列中;
将所述第i数据组中位于第2i层对应的所述二维矩阵中(c,d)处的数据存储到第e存储单元的第g列中,所述i<=N,c<=a,d<=b,e<=并行度/2,f、g为自然数,N为正整数;
所述e、f和g由以下公式得到:
其中,mod函数表示对整个公式的结果取余数,ceil函数表示对整个公式的结果向上取整。
4.根据权利要求1所述的一种用于神经网络的数据存储方法,其特征在于,所述计算并行度的数值满足2n条件,所述n为正整数。
5.一种用于神经网络的数据存储装置,其特征在于,包括:
获取模块,用于获取片外存储器发送的三维图像数据,所述三维图像数据包括2N个二维逻辑层,每个所述二维逻辑层包括呈二维矩阵排列的数据;
定义模块,用于将第2N-1层和第2N层所述二维逻辑层定义为第N数据组,以得到N个数据组;
判断模块,用于确认针对所述三维图像数据的计算并行度;
存储模块,用于根据所述计算并行度对所述N个数据组的每层数据按预设第一顺序存储至片内存储器。
6.根据权利要求5所述的一种用于神经网络的数据存储装置,其特征在于,所述二维矩阵包括由a列和b行定义的a*b矩阵数据结构。
7.根据权利要求5所述的一种用于神经网络的数据存储装置,其特征在于,所述存储模块包括:
确定单元,用于根据所述计算并行度确定存储单元的个数;
遍历单元,用于从左往右依次遍历所述N个数据组的每行数据;
第一执行单元,用于将所述第i数据组中位于第2i-1层对应的所述二维矩阵中(c,d)处的数据存储到第e存储单元的第f列中;
第二执行单元,用于将所述第i数据组中位于第2i层对应的所述二维矩阵中(c,d)处的数据存储到第e存储单元的第g列中,所述i<=N,c<=a,d<=b,e<=并行度/2,f、g为自然数,N为正整数;
所述e、f和g由以下公式得到:
……(1)
……(3)
其中,mod函数表示对整个公式的结果取余数,ceil函数表示对整个公式的结果向上取整。
8.根据权利要求5所述的一种用于神经网络的数据存储装置,其特征在于,所述计算并行度的数值满足2n条件,所述n为正整数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911305373.9A CN110728367B (zh) | 2019-12-18 | 2019-12-18 | 用于神经网络的数据存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911305373.9A CN110728367B (zh) | 2019-12-18 | 2019-12-18 | 用于神经网络的数据存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110728367A true CN110728367A (zh) | 2020-01-24 |
CN110728367B CN110728367B (zh) | 2020-05-05 |
Family
ID=69226046
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911305373.9A Active CN110728367B (zh) | 2019-12-18 | 2019-12-18 | 用于神经网络的数据存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110728367B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107563952A (zh) * | 2016-07-01 | 2018-01-09 | 谷歌公司 | 可编程二维图像处理器上的卷积神经网络 |
CN108491359A (zh) * | 2016-04-22 | 2018-09-04 | 北京中科寒武纪科技有限公司 | 子矩阵运算装置及方法 |
CN109416743A (zh) * | 2018-01-15 | 2019-03-01 | 深圳鲲云信息科技有限公司 | 一种用于识别人为动作的三维卷积装置 |
CN110050267A (zh) * | 2016-12-09 | 2019-07-23 | 北京地平线信息技术有限公司 | 用于数据管理的系统和方法 |
US10411709B1 (en) * | 2018-07-25 | 2019-09-10 | Xilinx, Inc. | Circuit arrangements and methods for dividing a three-dimensional input feature map |
CN110321999A (zh) * | 2018-03-30 | 2019-10-11 | 北京深鉴智能科技有限公司 | 神经网络计算图优化方法 |
-
2019
- 2019-12-18 CN CN201911305373.9A patent/CN110728367B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108491359A (zh) * | 2016-04-22 | 2018-09-04 | 北京中科寒武纪科技有限公司 | 子矩阵运算装置及方法 |
CN107563952A (zh) * | 2016-07-01 | 2018-01-09 | 谷歌公司 | 可编程二维图像处理器上的卷积神经网络 |
CN110050267A (zh) * | 2016-12-09 | 2019-07-23 | 北京地平线信息技术有限公司 | 用于数据管理的系统和方法 |
CN109416743A (zh) * | 2018-01-15 | 2019-03-01 | 深圳鲲云信息科技有限公司 | 一种用于识别人为动作的三维卷积装置 |
CN110321999A (zh) * | 2018-03-30 | 2019-10-11 | 北京深鉴智能科技有限公司 | 神经网络计算图优化方法 |
US10411709B1 (en) * | 2018-07-25 | 2019-09-10 | Xilinx, Inc. | Circuit arrangements and methods for dividing a three-dimensional input feature map |
Non-Patent Citations (2)
Title |
---|
HONGXIANG FAN ET AL: "F-E3D: FPGA-based Acceleration of an Efficient 3D Convolutional Neural Network for Human Action Recognition", 《2019 IEEE 30TH INTERNATIONAL CONFERENCE ON APPLICATION-SPECIFIC SYSTEMS, ARCHITECTURES AND PROCESSORS (ASAP)》 * |
曾宇航 等: "用FPGA实现卷积神经网络的人脸检测系统", 《单片机与嵌入式系统应用》 * |
Also Published As
Publication number | Publication date |
---|---|
CN110728367B (zh) | 2020-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11574031B2 (en) | Method and electronic device for convolution calculation in neural network | |
CN109919311B (zh) | 生成指令序列的方法、执行神经网络运算的方法和装置 | |
CN111915001B (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
US6353910B1 (en) | Method and apparatus for implementing error correction coding (ECC) in a dynamic random access memory utilizing vertical ECC storage | |
EP3101563A1 (en) | Automated determination of network motifs | |
CN112668708B (zh) | 一种提高数据利用率的卷积运算装置 | |
CN110837483B (zh) | 张量维度变换的方法以及装置 | |
KR20230081697A (ko) | 팽창 컨볼루션 계산 가속화 방법 및 장치 | |
CN113032007A (zh) | 一种数据处理方法及装置 | |
CN114565501A (zh) | 用于卷积运算的数据加载方法及其装置 | |
CN114444274B (zh) | 一种从非结构网格中重构原结构网格的方法、介质及装置 | |
CN112435157A (zh) | 包括不同类型的存储器装置的图形处理系统及其操作方法 | |
CN109902821B (zh) | 一种数据处理方法、装置及相关组件 | |
CN109446478B (zh) | 一种基于迭代和可重构方式的复协方差矩阵计算系统 | |
CN114218136A (zh) | 一种面向脉动阵列的面积友好存储地址映射方法 | |
CN116959540B (zh) | 具有写掩码的数据校验系统 | |
CN110728367B (zh) | 用于神经网络的数据存储方法及装置 | |
CN108920097B (zh) | 一种基于交织存储的三维数据处理方法 | |
JP2002163247A (ja) | 共有メモリ型スカラ並列計算機における多次元フーリエ変換の並列処理方法 | |
US20220366216A1 (en) | Method and non-transitory computer readable medium for compute-in-memory macro arrangement, and electronic device applying the same | |
CN111078589B (zh) | 一种应用于深度学习计算的数据读取系统、方法及芯片 | |
CN110766133B (zh) | 嵌入式设备中的数据处理方法、装置、设备和存储介质 | |
JP2022074442A (ja) | 演算装置および演算方法 | |
CN113094648B (zh) | 外积累加求解三角矩阵与矩阵内积的方法 | |
Chen et al. | High-Speed SRAM with Flexible Read/Write Data Width Tailored for Convolutional Neural Network |
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 |