CN111684470B - 神经网络的动态存储器映射 - Google Patents
神经网络的动态存储器映射 Download PDFInfo
- Publication number
- CN111684470B CN111684470B CN201880088769.XA CN201880088769A CN111684470B CN 111684470 B CN111684470 B CN 111684470B CN 201880088769 A CN201880088769 A CN 201880088769A CN 111684470 B CN111684470 B CN 111684470B
- Authority
- CN
- China
- Prior art keywords
- memory
- feature map
- neural network
- processor
- layer
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 290
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 148
- 238000013507 mapping Methods 0.000 title claims abstract description 28
- 238000000034 method Methods 0.000 claims abstract description 67
- 230000004044 response Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 53
- 238000012545 processing Methods 0.000 description 38
- 230000004927 fusion Effects 0.000 description 37
- 238000004891 communication Methods 0.000 description 29
- 238000011176 pooling Methods 0.000 description 28
- 230000006870 function Effects 0.000 description 24
- 230000004913 activation Effects 0.000 description 12
- 238000010606 normalization Methods 0.000 description 11
- 230000033001 locomotion Effects 0.000 description 9
- 238000013527 convolutional neural network Methods 0.000 description 8
- 238000012546 transfer Methods 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000012549 training Methods 0.000 description 5
- 239000013598 vector Substances 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 229920001621 AMOLED Polymers 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000007499 fusion processing Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000000241 respiratory effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000009022 nonlinear effect Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000002604 ultrasonography Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- 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
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
一种将神经网络的多个特征图映射到存储器层级上的方法,包括将多个特征图中的第一特征图映射到存储器层级中具有可用存储器空间并提供对该第一特征图的最快访问的存储器。该方法还包括,当第一特征图期满时,从用于存储第一特征图的存储器中移除第一特征图。
Description
技术领域
本公开一般涉及神经网络。更具体地,本公开涉及神经网络的动态存储器映射和层融合(fusion)。
背景技术
深度学习或深度神经网络是人工智能中的革命力量。计算机使用深度学习来理解图像、声音和文本的形式的无限的数据量。使用神经感知器的多个层,计算机现在具备和人一样观看、学习和应对复杂情况的能力,甚至可能比人的能力更好。
现代深度卷积神经网络设计非常深入,且可以包括10层到100层。现有的深度学习框架静态地将所有的特征图映射到DRAM(dynamic random-access memory,动态随机访问存储器)上,这意味着存储器使用量(usage)随着网络的深度成比例地增长。另一方面,每个层必须将其输入特征图(feature map)从DRAM读取到片上(on-chip)存储器,并将其输出特征图写回到DRAM,从而需要在片上存储器和DRAM之间进行多次读取和写入,这既费时又费力。
发明内容
本公开为神经网络提供动态存储器映射。
在第一实施例中,提供了一种将神经网络的多个特征图映射到存储器层级(hierarchy)上的方法。该方法包括将多个特征图中的第一特征图映射到存储器层级中具有可用存储器空间并提供对第一特征图的最快访问的存储器。该方法还包括,当第一特征图期满(expire)时,从用于存储第一特征图的存储器中移除多个特征图中的第一特征图。
在第二实施例中,提供了一种电子设备。该电子设备包括存储器层级中的至少一个存储器。该电子设备还包括耦合到至少一个存储器的至少一个处理器。该至少一个处理器被配置为将多个特征图中的第一特征图映射到存储器层级中具有可用存储器空间并提供对第一特征图的最快访问的存储器。该至少一个处理器还被配置为,当第一特征图期满时,从存储器中移除第一特征图,并且将用于存储第一特征图的存储器取消分配(unallocate)。
在另一实施例中,该至少一个处理器还被配置为基于卷积核和池化(pooling)核来确定一个或多个区块(tile)的区块大小,并且根据该区块大小将特征图划分为一个或多个区块。
在另一实施例中,融合层(fused layer)操作包括合并的卷积和批量(batch)归一化操作,并且其中至少一个处理器还被配置为将合并的卷积和批量归一化操作的结果作为临时特征图写入片上存储器。
在另一实施例中,融合层的一个或多个层操作包括修正的线性单元(rectifiedlinear unit,ReLU)操作,并且其中至少一个处理器还被配置为在片上存储器中用ReLU操作的结果覆写临时特征图,作为另一临时特征图。
在另一实施例中,融合层的一个或多个层操作包括池化操作,并且其中至少一个处理器还被配置为将池化操作的结果写入片上存储器。
在另一实施例中,在将输出写入片外(off-chip)存储器之前,将池化操作的结果写入片上存储器。
在第三实施例中,提供了一种包含计算机程序的非暂时性计算机可读介质。该计算机程序包括计算机可读程序代码,当由至少一个处理器执行时,该计算机可读程序代码使得至少一个处理器将多个特征图中的第一特征图映射到存储器层级中的存储器,并且当该第一特征图期满时,从所述存储器中移除第一特征图,并且将用于存储第一特征图的存储器取消分配。
在第四实施例中,提供了一种电子设备。该电子设备包括存储器,该存储器包括片上存储器和片外存储器。该电子设备还包括耦合到存储器的至少一个处理器。该至少一个处理器被配置为将来自神经网络输入的数据写入片上存储器。该至少一个处理器还被配置为向神经网络的融合层提供数据,其中该融合层包括两层或更多层,它们被融合以减少片上存储器和片外存储器之间的数据移动,并对数据执行融合层操作。该至少一个处理器还被配置为从融合层操作生成输出,并将该输出写入片外存储器。
附图说明
为了更完整地理解本公开及其优点,现在结合附图参考以下描述,其中:
图1示出了根据本公开的实施例的示例通信***;
图2示出了根据本公开的实施例的示例电子设备服务器;
图3示出了根据本公开的实施例的示例电子设备;
图4示出了根据本公开的实施例的另一示例电子设备;
图5示出了根据本公开的实施例的神经网络优化框架的流程图;以及
图6A示出了根据本公开的实施例的示例神经网络拓扑;
图6B示出了根据本公开的实施例的神经网络的示例动态存储器映射过程的框图;
图7示出了根据本公开的实施例的动态存储器映射过程的流程图;
图8示出了根据本公开的实施例的神经网络的另一示例动态存储器映射过程的框图;
图9示出了根据本公开的实施例的神经网络层融合过程的一个实施例的框图;
图10示出了根据本公开的实施例的融合层神经网络过程的流程图;以及
图11示出了根据本公开的实施例的特征图区块化(tiling)和存储器分配过程的流程图。
具体实施方式
根据以下附图、描述和权利要求,其他技术特征对于本领域技术人员来说是清晰的。
在进行下面的具体实施方式之前,阐述贯穿本专利文件使用的某些词语和短语的定义可能是有利的。术语“耦合”及其派生词是指两个或多个元件之间的任何直接或间接通信,无论这些元件是否彼此物理接触。术语“发送”、“接收”和“通信”及其派生词包含直接和间接通信。术语“包括”和“包含”及其派生词意味着包括但不限于。术语“或”是包含性的,意味着是和/或。短语“相关联”及其派生词是指包括、包括在内、互连、包含、包含在内、连接到或与连接、耦合到或与耦合、可通信、与协作、交织、并置、接近、结合或与结合、具有、具有…属性、和…关系或与…关系等。术语“控制器”是指控制至少一个操作的任何设备、***或其部分。这种控制器可用硬件或硬件和软件和/或固件的组合来实现。与任何特定控制器相关联的功能可以是集中式的或分布式的,无论是本地的还是远程的。当与项目列表一起使用时,短语“…中的至少一个”意味着可以使用所列项目中一个或多个的不同组合并且列表中可能仅需要一个项目。例如,“A、B和C中的至少一个”包括以下任意组合:A、B、C、A和B、A和C、B和C以及A和B和C。
此外,下面描述的各种功能可以由一个或多个计算机程序来实现或支持,这些计算机程序中的每一个由计算机可读程序代码形成并具体体现在计算机可读介质中。术语“应用”和“程序”是指一个或多个计算机程序、软件组件、指令集、过程、功能、对象、类、实例、相关数据或其适于在合适的计算机可读程序代码中实现的部分。短语“计算机可读程序代码”包括任何类型的计算机代码,包括源代码、目标代码和可执行代码。短语“计算机可读介质”包括能够被计算机访问的任何类型的介质,诸如只读存储器(read only memory,ROM)、随机访问存储器(random access memory,RAM)、硬盘驱动器、光盘(compact disc,CD)、数字视频光盘(digital video disc,DVD)或任何其他类型的存储器。“非暂时性”计算机可读介质不包括传输暂时性电信号或其他信号的有线、无线、光学或其他通信链路。非暂时性计算机可读介质包括其中可以永久存储数据的介质和其中可以存储数据并随后覆写数据的介质,诸如可覆写光盘或可擦除存储器设备。
贯穿本专利文件提供了其他某些词语和短语的定义。本领域普通技术人员应该理解,在很多情况下,如果不是大多数情况下,这样的定义适用于这样定义的词语和短语的先前和将来的使用。
下面讨论的图1至图11以及本专利文件中用于描述本公开原理的各种实施例仅是示例性的,且不应该以任何方式解释为限制本公开的范围。本领域技术人员将理解,本公开的原理可以在任何适当布置的无线通信***中实现。
根据本公开的实施例,提供了用于改进神经网络的各种方法。深度神经网络可以执行各种功能,诸如图像识别、数据分析、自然语言处理、意图分类或其他功能。神经网络可以基于输入的加权和生成输出,然后通过激活函数(activation function)传递该加权和。激活函数能够在对乘以权重的输入求和后确定输出。本领域技术人员将理解,取决于神经网络的配置和由神经网络实现的结果,可以使用各种激活函数。
可以在多层感知器(multilayer perceptron,MLP)内组织输入、权重和输出,在多层感知器中存在输入层、一个或多个隐藏层和输出层。多个输入或输入向量构成输入层,多个隐藏层神经元驻留在一个或多个隐藏层中,并且可以为输出层生成一个或多个输出。神经网络可以是前馈网络,其中输入从输入层传递到隐藏层。如果神经网络具有多个隐藏层,则可以通过激活函数或传递函数来处理输入,以向下一个隐藏层提供新的输入,从隐藏层到隐藏层,直到最终隐藏层将最终输出传递到输出层。当训练神经网络时,可以基于计算的错误率来调整权重,以增加神经网络的准确度。
卷积神经网络可以用于图像或对象识别。卷积层执行图像和核(小的值矩阵)之间的卷积,以基于该核对图像的部分进行加权。可以一次对图像的子集执行卷积,直到整个图像通过该核加权。使用不同权重的核可以用于额外的卷积,创建特征图作为每个卷积的结果。然后可以传递每个特征图到神经网络的下一个层。卷积神经网络的下一个层可以是批量归一化层,或Bnorm层。Bnorm层可以用于归一化每个卷积层的激活。
卷积神经网络还可以包括一个修正的线性单元或ReLU层。ReLU层应用激活函数来增加网络的非线性属性,诸如通过将负值清零。卷积神经网络还可以包括池化层,该池化层可以将输入图像划分为矩形或子区域。最大池化是常用的池化方法,其输出子区域的最大值。卷积神经网络可以取决于神经网络执行任何数量的卷积、批量归一化、ReLU计算和池化操作。可以将图像缩小为值的向量,然后全连接层获取该向量并提供一个或多个输出,诸如指示图像是否匹配试图要被检测的特定特征或对象。应当理解,本公开不限于任何特定类型的神经网络,并且本公开可以应用于任何神经网络以优化该神经网络。
基于神经网络的应用,诸如运行在特定硬件上的对象或图像分类神经网络,具有多种要求,诸如准确度、执行速度、功耗等。设计满足给定目标硬件上所有要求的网络是有挑战性的。解决这个问题的方法是设计准确度满足应用的要求的神经网络,然后在硬件上运行神经网络的同时简化神经网络,直到满足速度和功耗要求。然而,这种方法在设计或简化神经网络时没有考虑目标硬件特性。
本公开的某些实施例提供了基于网络拓扑将神经网络中使用的数据动态地映射到设备的存储器层级上,以节省用于网络推断的存储器使用量,并消除片上和片外存储器之间不必要的数据交换。本公开的某些实施例还提供了***优化,其将多个层融合到原子层中以避免片上和片外存储器之间不必要的数据移动,并且避免层之间的中间数据的存储器使用量。将多个层融合成一个原子层允许在片上存储器中处理所述一个原子层,而不是单独地处理每个层并且在片上和片外存储器之间读取和写入每个层的数据。层融合消除了中间数据存储器使用量,并且减少了存储器访问时间和功耗。
图1示出了根据本公开的实施例的示例***100。图1所示的***100的实施例仅用于说明。在不脱离本公开的范围的情况下,可以使用***100的其他实施例。
***100包括便于***100中各种组件之间通信的网络102。例如,网络102可以在网络地址之间传送互联网协议(Internet Protocol,IP)分组、帧中继帧、异步传输模式(Asynchronous Transfer Mode,ATM)单元或其他信息。网络102包括一个或多个局域网(local area network,LAN)、城域网(metropolitan area network,MAN)、广域网(widearea network,WAN)、全球网络(诸如互联网)的全部或部分或一个或多个位置处任何其他通信***。
网络102便于各种服务器104和各种客户端设备106-114之间的通信。服务器104可以表示一个或多个服务器。每个服务器104包括可以为一个或多个客户端设备提供计算服务的任何合适的计算或处理设备。例如,每个服务器104可以包括一个或多个处理设备、一个或多个存储指令和数据的存储器、以及一个或多个便于通过网络102的通信的网络接口。
每个客户端设备106-114表示通过网络102与至少一个服务器或其他(多个)计算设备交互的任何合适的计算或处理设备。在该示例中,客户端设备106-114包括台式计算机106、移动电话或移动设备108(诸如智能电话)、个人数字助理(personal digitalassistant,PDA)110、膝上型计算机112和平板计算机114。然而,***100中可以使用任何其他或额外的客户端设备。
在该示例中,一些客户端设备108-114间接地与网络102通信。例如,客户端设备108和110(分别是移动设备108和PDA 110)经由一个或多个基站116(诸如蜂窝基站或eNodeB(eNB))进行通信。移动设备108包括智能电话和功能电话(feature phone)两者。智能电话表示一类移动设备108,其是具有移动操作***和用于语音、短消息服务(shortmessage service,SMS)和互联网数据通信的集成移动宽带蜂窝网络连接的手持设备。功能电话表示一类移动设备108,其是基本电话和智能电话之间的中间点。除了基本的多媒体和互联网能力之外,功能电话一般还具有语音呼叫和文本消息功能。此外,客户端设备112和114(分别是膝上型计算机和平板计算机)经由一个或多个无线接入点118(诸如IEEE802.11无线接入点)进行通信。注意,这些仅用于说明,且每个客户端设备106-114可以直接与网络102通信,或者经由任何合适的(多个)中间设备或(多个)网络间接与网络102通信。
在某些实施例中,移动设备108(或任何其他客户端设备106-114)可以安全且高效地将信息发送到另一设备,诸如,例如服务器104。移动设备108(或任何其他客户端设备106-114)可以接收要作为神经网络的(多个)输入进行处理的信息。这种信息可以包括图像数据、语音/音频数据、地理位置数据、用户信息或由移动设备108接收或存储在移动设备108上的其他数据。移动设备108(或任何其他客户端设备106-114)可以触发其自身和服务器104之间的信息传输。移动设备108(或任何其他客户端设备106-114)可以提供由神经网络生成的实时结果。
尽管图1示出了***100的一个示例,但是可以对图1进行各种改变。例如,***100可以包括任何合适的布置的任何数量的每个组件。一般,计算和通信***具有各种各样的配置,并且图1不将本公开的范围限制到任何特定配置。尽管图1示出了其中可以使用本专利文件中公开的各种特征的一个操作环境,但是这些特征可以用在任何其他合适的***中。
本公开中提供的过程和***允许客户端设备或服务器提供由神经网络处理的结果。在某些实施例中,客户端设备(客户端设备106-114)可以确定神经网络结果。在某些实施例中,客户端设备(客户端设备106-114)接收要作为输入包括到神经网络中的数据,并通过网络102将数据发送到服务器104,该服务器104使用神经网络确定(多个)输出。
图2和图3示出了根据本公开的实施例的计算***中的示例设备。具体地,图2示出了示例服务器200,且图3示出了示例电子设备300。服务器200可以表示图1中的服务器104,并且电子设备300可以表示图1中的一个或多个客户端设备106-114。
服务器200可以表示一个或多个本地服务器或者用于通过训练的神经网络处理接收到的输入的一个或多个神经网络服务器。如图2所示,服务器200包括支持至少一个处理器210、至少一个存储设备215、至少一个通信接口220和至少一个输入/输出(input/output,I/O)单元225之间的通信的总线***205。
处理器210执行可以存储在存储器230中的指令。处理器210可以包括任何合适的数量和类型的处理器或任何合适的布置的其他设备。(多个)处理器210的示例类型包括微处理器、微控制器、数字信号处理器、现场可编程门阵列、专用集成电路和分立电路。
存储器230和持久存储235是存储设备215的示例,该存储设备215表示能够存储和便于信息(诸如数据、程序代码、神经网络输入和其他数据或者在临时或永久基础上的其他合适的信息)的检索的任何结构。存储器230可以表示随机访问存储器或任何其他合适的易失性或非易失性存储设备。持久存储235可以包含支持数据的长期存储(诸如只读存储器、硬盘驱动器、闪存或光盘)的一个或多个组件或设备。
通信接口220支持与其他***或设备的通信。例如,通信接口220可以包括网络接口卡或无线收发器,以便于通过网络102的通信。通信接口220可以支持通过任何合适的物理或无线通信链路的通信。
I/O单元225允许数据的输入和输出。例如,I/O单元225可以通过键盘、鼠标、小键盘、触摸屏或其他合适的输入设备为用户输入提供连接。I/O单元225还可以向显示器、打印机或其他合适的输出设备发送输出。
注意,尽管图2被描述为表示图1的服务器104,但是相同或相似的结构可以用于各种客户端设备106-114中的一个或多个。例如,台式计算机106或膝上型计算机112可以具有与图2所示相同或相似的结构。
图3示出了根据本公开的实施例的电子设备300。图3所示的电子设备300的实施例仅用于说明,在不脱离本公开的范围的情况下,可以使用其他实施例。电子设备300可以具有各种各样的配置,并且图3不将本公开的范围限制到电子设备的任何特定实现方式。在某些实施例中,图1的设备104-114中的一个或多个可以包括与电子设备300相同或相似的配置。
在某些实施例中,电子设备300可与数据传递应用一起使用,诸如提供神经网络输入或基于神经网络结果或输出激活函数。例如,电子设备300可以接收诸如语音数据的信息,将数据传递到服务器200,从服务器200接收指示通过神经网络处理信息的结果的响应,并且根据该结果激活电子设备300上的功能。电子设备300可以是移动通信设备,诸如,例如,无线终端、台式计算机(类似于图1的台式计算机106)、移动设备(类似于图1的移动设备108)、PDA(类似于图1的PDA 110)、膝上型计算机(类似于图1的膝上型计算机112)、平板(类似于平板计算机114)等。
如图3所示,电子设备300包括天线305、通信单元310、发送(transmit,TX)处理电路315、麦克风320和接收(receive,RX)处理电路325。例如,通信单元310可以包括RF收发器、BLUETOOTH收发器、WI-FI收发器、ZIGBEE、红外等。电子设备300还包括扬声器330、处理器340、输入/输出(I/O)接口345、输入350、显示器355、存储器360、(多个)传感器365和生物扫描仪370。存储器360包括操作***(operating system,OS)361、应用362和用户数据363。
通信单元310从天线305接收从网络102(诸如Wi-Fi、蓝牙、蜂窝、5G、LTE、LTE-A、WiMAX或任何其他类型的无线网络)的接入点(诸如基站、Wi-Fi路由器、蓝牙设备)发送的传入RF信号,诸如BLUETOOTH或WI-FI信号。通信单元310可以下变频传入RF信号以生成中频或基带信号。发送该中频或基带信号到RX处理电路325,该RX处理电路325通过对基带或中频信号或其组合进行滤波、解码或数字化来生成处理后的基带信号。RX处理电路325将处理后的基带信号发送到扬声器330(诸如用于语音数据)或处理器340用于进一步处理(诸如用于网络浏览数据和汇款(remittance))。
TX处理电路315从麦克风320接收模拟或数字语音数据,或者从处理器340接收其他传出基带数据。传出基带数据可以包括网络数据、电子邮件或交互式视频游戏数据。TX处理电路315对传出基带数据进行编码、复用、数字化或这些的组合,以生成处理后的基带或中频信号。通信单元310从TX处理电路315接收传出的处理后的基带或中频信号,并将基带或中频信号上变频为经由天线305发送的RF信号。
处理器340可以包括一个或多个处理器或其他处理设备,并且执行存储在存储器360中的OS 361,以便控制电子设备300的整体操作。例如,处理器340可以根据公知的原理,通过通信单元310、RX处理电路325和TX处理电路315来控制前向信道信号的接收和反向信道信号的传输。处理器340还能够执行驻留在存储器360中的其他应用362,诸如用于汇款、欺诈检测等的一个或多个应用。
处理器340可以执行存储在存储器360中的指令。处理器340可以包括任何合适的数量和类型的处理器或任何合适的布置的其他设备。例如,在一些实施例中,处理器340包括至少一个微处理器或微控制器。处理器340的示例类型包括微处理器、微控制器、数字信号处理器、现场可编程门阵列、专用集成电路和分立电路。
处理器340还能够执行驻留在存储器360中的其他过程和程序,诸如通过提供图像捕获和处理来接收、存储和及时指示的操作。处理器340可以根据执行过程的需要将数据移入或移出存储器360。在一些实施例中,处理器340被配置为基于OS 361或响应于从eNB或运营商接收到的信号来执行多个应用362。处理器340还耦合到向电子设备300提供连接到诸如客户端设备106-114的其他设备的能力的I/O接口345。I/O接口345是这些配件和处理器340之间的通信路径。
处理器340还耦合到输入350和显示器355。电子设备300的操作者可以使用输入350向电子设备300输入数据或输入。输入350可以是键盘、触摸屏、鼠标、轨迹球、语音输入或能够充当用户接口以允许用户与电子设备300交互的其他设备。例如,输入350可以包括语音识别处理,从而允许用户经由麦克风320输入语音命令。对于另一示例,输入350可以包括触摸面板、(数字)笔传感器、按键或超声波输入设备。例如,触摸面板可以以电容方案、压敏方案、红外方案或超声波方案中的至少一个方案识别触摸输入。通过向处理器340提供额外的输入,输入350可以与(多个)传感器365和/或相机相关联。相机可以用来捕获图像,以由卷积神经网络处理。这种卷积神经网络可以是存储在电子设备300或服务器200上的应用,在这种情况下,电子设备300可以将捕获的图像发送到服务器200以由神经网络处理。
在某些实施例中,传感器365包括惯性传感器(诸如加速度计、陀螺仪和磁力计)、光学传感器、运动传感器、相机、压力传感器、心率传感器、高度计、呼吸传感器(诸如麦克风320)等。输入350还可以包括控制电路。在电容方案中,输入350可以识别触摸或接近。显示器355可以是液晶显示器(liquid crystal display,LCD)、发光二极管(light-emittingdiode,LED)显示器、光学LED(optical LED,OLED)、有源矩阵OLED(active matrix OLED,AMOLED),或者能够呈现文本和/或图形(诸如来自网站、视频、游戏、图像等)的其他显示器。
存储器360耦合到处理器340。存储器360的部分可以包括随机访问存储器(RAM),存储器360的另一部分可以包括闪存或其他只读存储器(ROM)。
存储器360可以包括表示能够存储和便于信息(诸如数据、程序代码和/或在临时或永久基础上的其他合适的信息)的检索的任何结构的持久存储(未示出)。存储器360可以包含支持长期数据存储的一个或多个组件或设备,诸如只读存储器、硬盘驱动器、闪存或光盘。存储器360还可以包含包括简档(profile)数据和用户历史数据的用户数据363。用户数据363还可以包含从传感器365接收的数据。用户数据363可以是档案和生物数据。
电子设备300还包括一个或多个传感器365,该一个或多个传感器365可以计量物理量或检测电子设备300的激活状态,并将计量的或检测的信息转换为电信号。在某些实施例中,传感器365包括惯性传感器(诸如加速度计、陀螺仪和磁力计)、光学传感器、运动传感器、相机、压力传感器、心率传感器、高度计、呼吸传感器(诸如麦克风320)等。例如,传感器365可以包括用于触摸输入的一个或多个按钮(诸如在耳机或电子设备300上)、相机、手势传感器、陀螺仪或陀螺仪传感器、气压传感器、磁传感器或磁力计、加速度传感器或加速度计、抓握传感器、接近传感器、颜色传感器、生物物理传感器、温度/湿度传感器、照明传感器、紫外线(Ultraviolet,UV)传感器、肌电图(Electromyography,EMG)传感器、脑电图(Electroencephalogram,EEG)传感器、心电图(Electrocardiogram,ECG)传感器、红外(Infrared,IR)传感器、超声波传感器、虹膜传感器、指纹传感器等。传感器365还可以包括控制电路,用于控制包括在其中的至少一个传感器。(多个)传感器365可以用于确定电子设备300的方位和朝向以及地理位置。这些传感器365中的任何一个可以位于电子设备300内或位于与电子设备300通信的另一电子设备内。
尽管图2和图3示出了计算***中的设备的示例,但是可以对图2和图3进行各种改变。例如,可以组合、进一步细分或省略图2和图3中的各种组件,并且可以根据特定需要添加额外的组件。作为特定示例,处理器340可以被分为多个处理器,诸如一个或多个中央处理单元(central processing unit,CPU)和一个或多个图形处理单元(graphicsprocessing unit,GPU)。此外,如计算和通信网络一样,电子设备和服务器可以具有各种各样的配置,并且图2和图3不将本公开限于任何特定的电子设备或服务器。
图4示出了根据本公开的实施例的示例电子设备400。图4所示的电子设备400的实施例仅用于说明,在不脱离本公开的范围的情况下,可以使用其他实施例。电子设备400可以具有各种各样的配置,并且图4不将本公开的范围限制到电子设备的任何特定实现方式。在某些实施例中,服务器200或电子设备300可以包括电子设备400的组件或配置。
电子设备400包括处理器402。所示的处理器402包括核心(core)404、1级(level-1,L1)存储器高速缓存406和2级(L2)存储器高速缓存408。应当理解,可以存在用于指令的L1存储器高速缓存和用于数据的L1存储器高速缓存两者。在一些实施例中,处理器402包括多个核心,并且L1存储器高速缓存406是用于核心404的专用存储器高速缓存,而L2存储器高速缓存408与处理器402的一个或多个其他核心共享。在这样的实施例中,每个核心访问专用L1存储器高速缓存,同时与其他核心共享L2存储器高速缓存408。在某些实施例中,每个核心具有专用L2存储器高速缓存408。电子设备400还包括位于处理器芯片之外的3级(L3)存储器高速缓存410和动态随机访问存储器(DRAM)412。L3存储器高速缓存410和DRAM412通过总线***414相互连接并连接到处理器402。在处理器402包括多个核心的实施例中,L3存储器高速缓存410可以由核心共享。
L1存储器高速缓存406、L2存储器高速缓存408、L3存储器高速缓存410和DRAM 412形成存储器层级。一般,更靠近处理器402的核心404的存储器更快,但是包括更少量的最大可用存储器。例如,当检索存储在L1存储器高速缓存406上的数据时,L1存储器高速缓存406可以为核心404提供最快的数据检索时间。预期将快速和/或频繁地使用的存储数据可以存储在L1存储器高速缓存406中,以允许核心404快速访问该数据。然而,L1存储器高速缓存406可能不具有如其他存储器高速缓存408和410或DRAM 412那样多的空间。
因此,当核心404需要快速或频繁地访问数据,但是数据不适合放入(fit into)L1存储器高速缓存406时,可以基于层级将数据保存在L2存储器高速缓存408、L3存储器高速缓存410或DRAM 412中。例如,如果数据不适合放入L1存储器高速缓存406,则确定数据是否适合放入L2存储器高速缓存408。如果适合放入,则数据被存储在L2存储器高速缓存中。如果不适合放入,则检查L3存储器高速缓存410的可用空间,以确定数据是否可以存储在L3存储器高速缓存410中。如果可以,则数据被存储在L3存储器高速缓存410中。如果不可以,则数据可以被存储在DRAM 412中。这种过程确保由核心404使用的数据被存储在最快的可用存储器中。
对于神经网络,数据通常存储在DRAM中,然后当处理器使用该数据时,将该数据写入片上存储器。当神经网络处理所有输入并生成最终输出时,原始数据可以在整个过程中保留在DRAM中,并且当神经网络继续操作时,可以将由神经网络生成的新的数据写入DRAM。例如,在网络的每个隐藏层创建新的数据以在下一个层中使用后,可以将该新的数据写入DRAM,该DRAM还可以仍然存储着原始输入和先前由神经网络创建的其他数据。然后,可以从DRAM中读取这个新的数据,并将这个新的数据写入片上存储器,供下一个层使用。对于包括大量层的深度神经网络,这会产生存储器使用量问题,因为每个层都会产生更多要存储的数据。这也会产生神经网络性能的问题,因为片上和片外存储器之间的每次读取/写入都会降低神经网络的速度并增加功耗。
尽管图4示出了电子设备400的一个示例,但是可以对图4进行各种改变。例如,电子设备400可以包括任何合适的布置的任何数量的每个组件。例如,存储器高速缓存408和410可以是片上或片外的。也可以存在设置在片上或片外的、可以专用于处理器的核心或者在其他处理器之间共享的任何数量的存储器高速缓存。例如,电子设备400可以包括片上的L3存储器高速缓存410,并且还可以包括片外的另一L4存储器高速缓存。一般,计算***、处理器和处理器存储器具有各种各样的配置,并且图4不将本公开的范围限制到任何特定配置。尽管图4示出了其中可以使用本专利文件中公开的各种特征的一个操作环境,但是这些特征可以用在任何其他合适的***中。
图5示出了根据本公开的实施例的神经网络优化框架的流程图。在框502,配置神经网络。该网络配置考虑了要由神经网络解决的(多个)问题、要由神经网络处理的数据类型以及配置神经网络以解决诸如确定神经网络可能有多少层即有多深等的这些问题的其他因素。然后在框504训练神经网络,并且在框506查明神经网络的准确度。基于训练的结果和所查明的神经网络的准确度,可以在框508调整网络的配置,以增加神经网络的准确度。在框508中执行的调整可以是诸如改变神经网络的层数、调整神经网络的权重或其他调整的调整;并且因此,在框502重新配置网络。可以重复框502、504、506和508,直到神经网络的准确度满足应用的要求。
通常,其他神经网络配置过程可以执行训练、准确度和配置调整步骤,然后简化神经网络,直到满足目标硬件的速度和功耗要求。然而,在设计神经网络时,这没有考虑目标硬件的特性。在框510,确定目标硬件配置,并且在步骤512,优化计算并且为目标硬件实现存储器映射。根据本公开的实施例,可以通过层融合来实现优化的计算,并且还可以根据本公开的实施例来实现动态存储器映射,以将诸如特征图的神经网络数据最优地映射到给定的存储器***上。在框514,可以评估延迟、速度、功率和存储器使用量。还可以评估硬件目标的前向传递性能度量。在框508,网络配置调整策略不仅考虑了神经网络的训练和准确性,还考虑了硬件参数。因此,可以调整网络配置并调整最优计算和存储器映射以便提供更精确的神经网络,其还实现更小的延迟、更高的速度以及更低的功率和存储器使用量。
图6A示出了根据本公开的实施例的神经网络拓扑。神经网络拓扑包括第一特征图602(FM0),其可以最初存储在存储器中。第一特征图602可以是输入的特征图。然后,第一特征图602被第一层604(层0)接收。第一层604处理第一特征图602,诸如对第一特征图602执行卷积。结果,第一层604创建第二特征图606(FM1),其存储在存储器中。然后,神经网络将第二特征图606传递到第二层608(层1)。第二层608可以对第二特征图606执行各种操作,诸如额外的卷积、批量归一化操作、ReLU操作、池化操作或其他操作。结果,第二层608创建第三特征图610(FM2)。
然后,神经网络将第三特征图610传递到可以对第二特征图606执行各种操作(诸如额外的卷积、批量归一化操作、ReLU操作、池化操作或其他操作)的第三层612(层2)。结果,第三层612创建第四特征图614(FM3)。然后,神经网络将第四特征图614传递到可以对第二特征图606执行各种操作(诸如额外的卷积、批量归一化操作、ReLU操作、池化操作或其他操作)的第四层616(层3)。结果,第四层616创建第五特征图618(FM4)。第五特征图618可以用于神经网络的后续层,或者可以是神经网络在全连接层中用于提供最终输出的一系列最终权重或输入之一,。
应当理解,关于图6A示出和描述的拓扑不限于任何特定的神经网络类型或配置。其他类型的神经网络(诸如接收输入值的向量的用于语音识别的网络)适用于图6A的拓扑,并且适用于本文描述的其他过程。
特征图或其他数据,诸如输入向量和输入被施加权重并通过激活函数发出的结果,都可以存储在存储器中,以供神经网络在神经网络的操作期间使用。神经网络通常在DRAM中以静态方式映射数据(诸如特征图),使得存储器位置在神经网络的操作期间继续存储该数据,同时在神经网络的操作期间潜在地向DRAM添加更多的数据。因此,用于静态映射的神经网络的存储器使用量随网络的深度成比例增长。此外,对于每个层,静态映射的神经网络必须将输入数据读取到片上存储器,并将输出数据写入DRAM。
图6B示出了根据本公开的实施例的神经网络的示例动态存储器映射过程的框图。在该示例中,描绘了L1高速缓存620和DRAM 622。L1高速缓存620和DRAM 622可以连接到处理器,诸如相对于服务器200或电子设备300所描述的处理器。在该示例中,在时间T0,处理器将第一特征图602映射到L1高速缓存620。第一特征图602准备好被馈送通过第一层604以创建第二特征图606。L1高速缓存620具有足够的空间用于第一特征图602和第二特征图606两者,因此处理器优先将第二特征图606映射到L1高速缓存620。对第一特征图602和第二特征图606两者进行优先化(prioritize)允许层604直接处理第一特征图602和第二特征图606,而无需在L1高速缓存620和DRAM 622之间的额外的数据移动。在时间T1,第二特征图606准备好第二层608由处理。此外,到时间T1为止,不再使用第一特征图602,因此第一特征图602期满。因此,处理器从L1高速缓存620中移除第一特征图602,并且在L1高速缓存620中取消分配存储器。
在时间T1,处理器确定第二特征图606和第三特征图610将不都适合放入L1高速缓存620。因此,处理器将第三特征图610映射到DRAM 622。在T2时间,已经由第二层608处理了第二特征图606,并且已经创建了第三特征图610并将第三特征图610存储在DRAM 622中。因此,到T2为止,第二特征图606期满,并且处理器从L1高速缓存620中移除第二特征图606。在T2,如果额外的特征图适合放入L1高速缓存620,则L1高速缓存620现在可以自由地存储额外的特征图。在T2,处理器确定第四特征图614将不适合放入L1高速缓存620。因此,处理器将第四特征图614映射到DRAM 622。到时间T3为止,处理器从DRAM 622中移除第三特征图610,因为已经由第三层612处理了第三特征图610,并且处理器已经将第四特征图614存储在DRAM 622中的映射的DRAM位置上。
在时间T3,处理器确定第五特征图618将适合放入L1高速缓存620,并且处理器将第五特征图618映射到L1高速缓存620。在时间T3,第四特征图614仍然存储在DRAM 622中。到时间T4为止,处理器将第五特征图618存储在L1高速缓存620中,并且处理器从DRAM 622中移除第四特征图614,以释放DRAM 622中的存储器空间,并且允许潜在的后续特征图存储在DRAM 622中先前由第四特征图614占据的空间中。因此,关于图6B描述的过程允许在神经网络的操作期间释放存储器以供使用,同时还允许将数据存储在除了向(多个)处理器提供更快数据访问的DRAM之外的存储器中。如图6B所示,第一特征图602、第二特征图606和第五特征图618可能在L1高速缓存620中具有重叠的存储器映射,因为这些特征图在时间轴上的寿命不重叠。
一旦确定了神经网络的最优映射,就可以在给定目标硬件的情况下估计网络性能度量,诸如前向传递速度、延迟、存储器使用量和功耗。在网络训练过程中,还可以获得准确度度量,该准确度度量可以与网络性能度量相组合以形成综合性能度量。如果所有的度量都满足目标应用的要求,那么可以完成优化。否则,可以将度量提供给网络配置调整策略508,以确定进一步的网络配置。网络配置调整策略508考虑了网络拓扑和目标硬件存储器层级两者。所述调整策略可以被优先化以根据估计的网络性能简化被识别为网络中的性能瓶颈的神经网络的层。调整策略508可以(1)尝试减少用于瓶颈层的输出信道,使得输出可以适合放入片上存储器,并且满足目标应用的速度、延迟和功率要求。然后,调整后的网络可以(2)被重新训练以输出准确度度量。如果满足准确度要求,则完成网络配置调整。否则,在一些实施例中,调整策略可以在瓶颈层之后向神经网络添加额外的层,并重复步骤(1)和(2),直到满足性能要求。
图7示出了根据本公开的实施例的动态存储器映射过程700的流程图。图7不将本公开的范围限制到任何特定的实施例。尽管过程700描绘了一系列连续的步骤,除非明确说明,否则不应该从该序列中得出关于执行的特定顺序、步骤或步骤的部分的顺序的(而不是同时或以重叠的方式的)执行、或者排它性地描绘的步骤的(没有干预或中间步骤的出现的)执行的推断。为了便于解释,过程700是相对于图2的服务器200和图3的电子设备300来描述的,并且由服务器200或电子设备300中各自的处理器或处理设备来执行。然而,过程700可以与任何其他合适的***一起使用。
过程700在框702开始,在框702,接收特征图或其他数据以用于神经网络。在判定框704,处理器确定特征图是否适合放入L1高速缓存。如果是,在框706,处理器将特征图映射到L1高速缓存。如果不是,在框708,处理器根据存储器层级将特征图映射到另一存储器,诸如另一处理器高速缓存(L2、L3、L4等)、DRAM或其他存储器。因此,特征图被映射到并存储在为处理器提供最快访问时间并且具有足够空间来存储特征图的任何存储器中。
一旦在框704将特征图存储在L1高速缓存中或者在框708将特征图存储在下一个最快的可用存储器中,在框710,处理器使用神经网络应用,创建下一个特征图。在判定框712,处理器确定L1高速缓存是否可以存储下一个特征图。如果可以,在框714,处理器将下一个特征图映射到L1高速缓存。如果不可以,在框716,处理器根据存储器层级将下一个特征图映射到另一存储器,诸如另一处理器高速缓存(L2、L3、L4等)、DRAM或其它存储器。一旦在框714将下一个特征图存储在L1高速缓存中或者在框716将特征图存储在下一个最快的可用存储器中,在框718,处理器从在判定框704被选择用于存储特征图的存储器中删除在框702接收到的特征图,并且处理器对用于该特征图的存储器取消分配。因此,在框702接收到的特征图不再存储在存储器中,并且释放存储器用于存储其他数据或其他特征图。
在框720中,处理器确定是否已经由神经网络处理了所有特征图和其他数据。这可以通过神经网络是否已经提供了(多个)最终输出来确定。如果是,过程700在框722结束。如果神经网络还没有完成处理,则该过程移回到框710,在框710创建或接收下一个特征图。该过程通过判定框712,以及框714或716以存储下一个特征图,继续到框718,在框718,处理器删除最后遇到框710时创建的特征图,以释放前一个特征图被映射到的存储器。然后,过程700返回到判定框720,在判定框720,处理器再次确定处理是否完成,如果是,过程700在框722结束。
图8示出了根据本公开的实施例的神经网络的另一示例动态存储器映射过程的框图。示出了L1高速缓存802、L2高速缓存804和DRAM 806。L1高速缓存802、L2高速缓存804和DRAM 806可以连接到处理器,诸如相对于服务器200或电子设备300所描述的处理器。在该示例中,在时间T0,处理器将第一特征图808(FM0)映射到L1高速缓存802。第一特征图808被馈送通过神经网络的第一层,以创建第二特征图810(FM1)。在该示例中,L1高速缓存802不具有足够的空间用于第一特征图808和第二特征图810两者,因此处理器优先将第二特征图810映射到最靠近处理器的下一个存储器。在该示例中,L2高速缓存804具有足够的取消分配的存储器来存储第二特征图810,因此处理器将第二特征图810映射到L2高速缓存804。应当注意,在该示例中,尽管DRAM 806也具有足够的空闲空间来存储第二特征图810,但是L2高速缓存804优先于DRAM 806,因为L2高速缓存804在存储器层级中更高,并且向处理器提供更快的数据访问。
在时间T1,将由神经网络的第二层处理第二特征图810,以便创建第三特征图812。此外,到时间T1为止,不再使用第一特征图808,因此处理器从L1高速缓存802中移除第一特征图808,并且处理器将L1高速缓存802中的存储器取消分配。在时间T1,在取消分配第一特征图808映射到的存储器之后,处理器确定第三特征图812可以适合放入L1高速缓存802。由于L1高速缓存在层级上比L2高速缓存804或DRAM 806高,所以处理器将第三特征图812映射到L1高速缓存802。
在时间T2,已经由神经网络的第二层处理了第二特征图810,并且处理器将第三特征图812存储在L1高速缓存802中。因此,到T2为止,第二特征图810不再被神经网络使用,因此处理器从L2高速缓存804中移除第二特征图810。在T2,处理器确定第四特征图814将不适合放入L1高速缓存802或L2高速缓存804。因此,处理器将第四特征图814映射到DRAM 622。
到时间T3为止,处理器从L1高速缓存802中移除第三特征图812,因为已经由神经网络的第三层处理了第三特征图812,并且处理器将第四特征图814存储在DRAM 806中的映射的DRAM位置中。在时间T3,处理器确定第五特征图816将适合放入L1高速缓存802,并且处理器将第五特征图816映射到L1高速缓存802。在时间T3,第四特征图814仍然存储在DRAM806中。到时间T4,处理器将第五特征图816存储在L1高速缓存802中,并且处理器从DRAM806中移除第四特征图814,以释放DRAM 806中的存储器空间,并且允许潜在的后续特征图存储在DRAM 806中先前被第四特征图814占据的空间中。因此,关于图6B描述的过程允许在神经网络的操作期间释放存储器以供使用,同时还允许将数据存储在向(多个)处理器提供更快的数据访问的存储器中。
关于图6A-图8描述的过程提供了动态存储器映射过程,该动态存储器映射过程将任意拓扑的神经网络映射到目标硬件存储器层级上,以最小化所有级上的存储器使用量并最小化所有级上的数据移动。由于基于网络拓扑,每个特征图在时间轴上具有有限的生命周期,因此当不再使用时,可以回收映射的存储器。存储器使用量仅受容纳一层的输入/输出特征图的最大存储器的限制。因此,当使用本文描述的动态存储器映射时,更深的网络不一定使用更多的存储器。
存储器层级可以包括诸如L1-L2-L3-DRAM的优先化方案。应当理解,存储器层级可以取决于目标硬件。存储器层级可以减少用于在片上和片外存储器之间移动特征图或其他数据的时间和功耗两者。
图9示出了根据本公开的实施例的神经网络层融合过程900的一个实施例的框图。图9示出了片外存储器902和片上存储器904。片外存储器902可以是DRAM或位于处理器管芯(die)之外的其他存储器,诸如一些形式的L3或L4高速缓冲存储器或其他存储器类型。片外存储器902可以连接到处理器,诸如相对于服务器200或电子设备300描述的处理器。片上存储器904可以是位于处理器管芯上的、诸如相对于服务器200或电子设备300描述的处理器上的、诸如L1高速缓存之类的存储器或者其他存储器。
包括融合层906并在与片上存储器904相关联的处理器上运行的神经网络在神经网络的操作期间从片上存储器904接收数据。融合层906包括操作908、910和912。操作908、910和912可以执行通常由分离层执行的操作,但是被组合为一个原子融合层906。这些层到原子层的融合最小化计算、数据移动、存储器使用量以及与数据移动和计算相关的功耗。在图9所示的示例中,操作包括卷积/批量归一化(bnorm)操作908、修正的线性单元(ReLU)操作910和池化操作912。输入特征图914(FM0)可以最初存储在片外存储器902中。处理器可以从片外存储器902读取输入特征图914的至少一部分或区块916(FM0),并将至少一个区块916写入片上存储器904,以供神经网络处理。在一些神经网络中,可以在卷积层中对特征图FM0进行卷积,以生成另一特征图FM1。
然后,可以由批量归一化层对特征图FM1进行归一化,以产生又一特征图FM2。卷积/bnorm操作908将卷积与批量归一化合并。例如,FM1可以由等式1生成。
FM1=conv(FM0,K)+b (1)
创建FM1后,FM2可由等式2生成。
FM2=gamma(FM1-mean)/var+beta (2)
由于等式1和等式2是线性等式,等式2的bnorm层参数gamma、mean、var和beta可以被吸收到K和b中,并且FM2可从一个等式中生成:等式3。
FM2=conv(FM0,K’)+b’ (3)
因此,可以通过卷积/bnorm操作908在一个步骤内对FM0进行卷积和批量归一化。卷积/bnorm操作908从至少一个区块916创建已经被卷积和批量归一化的临时特征图918,并且临时特征图918被写入片上存储器904。应当理解,当配置神经网络时,可以执行将卷积和bnorm步骤合并为卷积/bnorm操作908中,使得在神经网络的操作期间不执行合并,从而对网络的在线推断性能没有影响。
在其他神经网络配置中,数据粒度(granularity)由高速缓存***管理。在本公开的某些实施例中,融合层906管理要由神经网络处理的数据的数据粒度。融合层906可以确定如何将输入特征图914划分为至少一个要由融合层906处理的区块916。如图9所示,在整个过程中,至少一个区块916将保留在片上存储器904中,直到最终输出被写入片外存储器902。要使用的卷积区块大小可以基于池化和卷积核大小。例如,如果卷积核的大小为K*K,且池化核的大小为P*P,则卷积区块大小由等式4选择。
T=(P+K-1) (4)
如果输入特征图914具有[H,W,C](高度(height)、宽度(width)、颜色(color))的维度,则特征图可以被分解为[H/(P+K-1)]*[W/(P+K-1)]个区块。一旦确定了区块大小和区块的数量,就可以基于片上存储器904的大小来确定从片上存储器904取出并写入片上存储器904以供融合层906使用的区块的数量。例如,如果K=3且P=2,则T=(2+3-1),所以T=4。因此,用于卷积的区块将是4*4的大小。用3*3卷积核对4*4区块进行卷积产生具有2*2的大小的临时特征图918。在ReLU操作910之后,池化操作912可以应用于2*2的临时特征图918,以产生大小为1的最终输出。在一些实施例中,应用Winograd算法来进一步加速小核/区块卷积,以减少乘-累加(multiply-accumulate,MAC)操作,从而进一步提高神经网络的速度。在上面的示例中,Winograd算法可以将卷积MAC从36减少到16,减少2.25倍。
ReLU操作910将临时特征图918应用于激活函数,然后可以再次将结果写回到片上存储器904,作为另一临时特征图918。在一些实施例中,ReLU操作910之前的临时特征图918可以被ReLU操作910的结果覆写。在一些实施例中,可以使用激活函数f(x)=max(0,x)。应当理解,在ReLU操作910中可以使用其他激活函数,诸如泄漏ReLU函数、参数ReLU函数、指数线性单位(exponential linear unit,ELU)函数、sigmoid函数或其他函数。
然后,可以将临时特征图918传递到池化操作912。池化操作912在临时特征图918上执行池化的形式,诸如最大池化,以创建较小大小的特征图区块920(FM4)。然后,将区块920写入片外存储器922,作为输出或最终特征图922。在一些实施例中,融合层906被配置为使得池化操作912对于池化操作912接收到的每个临时特征图918仅输出一个输出,使得区块920是将用于确定神经网络的最终结果的一个输出。该示例中的最终特征图922可以是一系列值,每个值针对写入片外存储器902的区块920中的一个。然后,例如,这些值可以用作对于图像是否包括神经网络被设计以识别的对象的投票(vote)。
在其他神经网络中,将诸如卷积层、池化层、ReLU层和批量归一化层之类的分离层视为原子操作,在每个层之后从片上存储器向片外存储器写入输出特征图。例如,在其他神经网络中,输入层FM0可以存储在片外存储器中。FM0的区块被写入片上存储器并由卷积层处理以创建中间特征图FM1的区块。将特征图FM1的区块从片上存储器写入片外存储器。然后,特征图FM1的区块被写回到片上存储器以由bnorm层进行处理,例如,为另一中间特征图FM2创建区块。再次将特征图FM2的区块从片上存储器写入片外存储器,直到所有特征图FM2都在片外存储器上。然后,FM2的区块被从片外存储器写回到片上存储器,以由例如ReLU层处理,从而创建另一中间特征图FM3。
将中间特征图FM3的区块都写回到片外存储器作为特征图FM3。然后,再次将特征图FM3的区块写回到片上存储器中,以由例如池化层进行处理,从而创建最终输出或者区块,它们可以是最终特征图FM4。这些区块中的每一个都从片上存储器写入片外存储器,直到FM4完全存储在片外存储器中。通常,所有的特征图FM0-FM4都太大而不适合放入SRAM(Static Random-Access Memory,静态随机访问存储器)。因此,为三个中间特征图FM1、FM2和FM3分配存储器,并且在片上和片外存储器之间执行额外的数据移动。因此,与本公开的神经网络相比,其他神经网络在片上和片外存储器之间执行更大量的读取/写入操作(降低速度)。其他神经网络也使用更多的存储器资源来执行神经网络的功能,诸如要求存储器来存储中间特征图。
本公开的神经网络提供了更快的速度和更有效的资源使用。此外,片上和片外存储器之间的数据流量更少。在这种优化的网络中,只有输入特征图和输出特征图被存储在DRAM中,在融合层的操作期间,所有临时/中间特征图都保留在片上存储器中。
图10示出了根据本公开的实施例的融合层神经网络过程1000的流程图。图10不将本公开的范围限制到任何特定的实施例。尽管过程700描绘了一系列连续的步骤,除非明确说明,否则不应该从该序列中得出关于执行的特定顺序、步骤或步骤的部分的顺序的(而不是同时或以重叠的方式的)执行、或者所描绘的步骤的排它性的(而没有干预或中间步骤的出现的)执行的推断。为了便于解释,过程1000是相对于图2的服务器200和图3的电子设备300来描述的,并且由服务器200或电子设备300中各自的处理器或处理设备来执行。然而,过程1000可以与任何其他合适的***一起使用。
过程1000在框1002开始。在框1002,处理器将第一特征图或输入特征图写入片外存储器。在框1004,处理器确定区块大小。可以如本公开中所述以及参考图11所述来确定区块大小。在框1006,处理器从第一特征图提出一个或多个区块,并且处理器将该一个或多个区块写入片上存储器。要提出的区块的数量取决于片上存储器的大小。还需要为临时特征图和最终输出预留片上存储器中的空间。在框1008,处理器将框1006中写入片上存储器的一个或多个区块馈送到融合层,并且处理器对一个或多个区块执行合并的卷积/bnorm操作,如本公开中所述。在框1010,处理器将卷积/bnorm操作的结果作为临时特征图写入片上存储器。应当理解,卷积/bnorm操作可以一次对一个或多个区块中的一个执行。
在框1012,处理器对临时特征图执行融合层的ReLU操作。在框1014,处理器将ReLU操作的结果作为临时特征图写入片上存储器。作为ReLU操作的结果写入片上存储器的临时特征图可以覆写作为卷积/bnorm操作的结果创建的临时特征图。在框1016,处理器对在框1014中写入片上存储器的临时特征图执行融合层的池化操作。在框1018,处理器将池化操作的结果写入片上存储器。该结果可以是最终特征图的一个或多个区块,并且可以是由神经网络提供的最终输出,诸如指示对象是否被识别为出现在图像中的一个或多个值。
在框1020,处理器将最终特征图写入片外存储器。应当理解,输入特征图的每个区块可以由融合层在一次处理,并且作为池化操作的结果从该区块创建的每个输出可以由处理器一次一个地写入片外存储器,直到已经由融合层处理了输入特征图的所有区块,并且将所有输出作为最终特征图写入片外存储器。在判定框1022,处理器确定是否已经由神经网络处理了第一特征图的所有区块。如果没有,则过程1000返回到框1006,以取决于片上存储器中存在多少空闲空间,从第一特征图中取出一个或多个额外的区块。可以重复框1006-1022,直到在判定框1022,处理器确定已经处理了第一特征图的所有区块。如果是,则过程1000在框1024结束。
图11示出了根据本公开的实施例的特征图区块化和存储器分配过程1100的流程图。图11不将本公开的范围限制到任何特定的实施例。尽管过程700描绘了一系列连续的步骤,除非明确说明,否则不应该从该序列中得出关于执行的特定顺序、步骤或步骤的部分的顺序的(而不是同时或以重叠的方式的)执行、或者所描绘的步骤的排它性的(而没有干预或中间步骤的出现的)执行的推断。为了便于解释,过程1100是相对于图2的服务器200和图3的电子设备300来描述的,并且由服务器200或电子设备300中各自的处理器或处理设备来执行。然而,过程1100可以与任何其他合适的***一起使用。
过程1100在框1102开始。在框1102,处理器确定要在神经网络中使用的区块大小。这可以在初始配置神经网络时被执行,并且可以在训练神经网络并且考虑硬件考虑因素时被调整。在神经网络配置期间,也可以确定要使用的池化核大小和卷积核大小。区块大小可由等式1,T=(P+K-1)确定。
可以提供输入特征图作为神经网络的输入。在框1104,处理器确定输入特征图的维度。例如,输入特征图可以是具有32*32像素的图像。在框1106,处理器确定要将特征图分割成的区块的数量。处理器可以通过计算特征图的高度除以区块大小和特征图的宽度除以区块大小的乘积,或[H/(P+K-1)]*[(W/(P+K-1)],或者(H/T)*(W/T)来执行该确定。使用32*32输入图像的示例,并且其中T=4,图像将被分割成64个区块。在框1108,处理器确定将适合放入片上存储器的区块的数量。处理器可以考虑将从区块中的每一个创建的中间特征图和最终输出的空间要求,来分析片上存储器中的空闲空间量和每个区块的大小,以确定有多少区块可以写入片上存储器。
在框1110,处理器检索被确定为适合放入片上存储器的区块的数量,并将区块写入片上存储器。在框1112,由神经网络的融合层处理写入片上存储器的至少一个区块,产生可以由处理器写入片外存储器的输出,释放至少一个区块先前占据的片上存储器中的空间。在判定框1114,处理器确定是否已经由融合层处理了输入特征图的所有区块。如果不是,则过程1100移动到判定框1116,在判定框1116,处理器确定在片外存储器中是否还存在需要被写入片上存储器以由融合层处理的输入特征图的区块。如果是,则过程1100返回到框1108,在框1108中,处理器确定将适合放入片上存储器的输入特征图的区块的数量。如果由于一些原因,不存在足够的空闲空间用于将额外的区块写入片上存储器,则处理器可以确定为零的值,并且在框1110没有检索到额外的区块,从而在框1112允许另一区块完成融合层的处理。这可以在处理器在判定框1116确定片外存储器中仍存在要处理的区块之后,在重复框1108时,释放用于额外的区块的空间。可以重复框1108、1110、1112、1114和1116,直到所有区块都从片外存储器写入片上存储器。
如果在判定框1116,处理器确定片外存储器中不存在更多要处理的区块,则过程1100返回到框1112,以通过融合层处理另一至少一个区块。可以重复框1112、1114和1116,直到由融合层处理了片上存储器中的所有区块。一旦处理器在判定框1114确定已经由融合层处理了输入特征图的所有区块,过程1100在框1118结束。
层融合可以提高神经网络的速度。例如,没有层融合的神经网络的处理时间可以是91.8毫秒。在同一硬件上为网络应用层融合可以提供68.8毫秒的处理时间。随着神经网络变得更深或更复杂,层融合可以在处理时间上提供更大的改进。
本申请的任何描述都不应被理解为暗示任何特定的元件、步骤或功能是必须包括在权利要求范围内的必要元素。专利主题的范围仅由权利要求限定。
Claims (9)
1.一种由电子设备执行的将神经网络的多个特征图映射到存储器层级上的方法,所述方法包括:
将所述多个特征图中的第一特征图映射到存储器层级中具有可用存储器空间并提供对第一特征图的最快访问的存储器;
从第一特征图生成所述多个特征图中的第二特征图;
选择存储器层级中具有可用存储器空间并提供对第二特征图的最快访问的存储器的级别;
将第二特征图映射到所选择的级别的存储器;以及
当第一特征图期满时,从用于存储第一特征图的所述存储器中移除所述多个特征图中的第一特征图,并且将用于存储第一特征图的存储器取消分配。
2.根据权利要求1所述的方法,其中从第一特征图生成第二特征图包括:
向神经网络的层提供第一特征图;以及
对第一特征图执行所述神经网络的层操作。
3.根据权利要求1所述的方法,其中,响应于第二特征图的映射,从所述存储器层级中的存储器中移除第一特征图。
4.根据权利要求1所述的方法,其中,所述存储器层级包括至少一级的高速缓冲存储器和动态随机访问存储器DRAM。
5.一种电子设备,包括:
存储器层级中的至少一个存储器;以及
耦合到所述至少一个存储器的至少一个处理器,所述至少一个处理器被配置为:
将神经网络的多个特征图中的第一特征图映射到所述存储器层级中具有可用存储器空间并提供对第一特征图的最快访问的存储器;
从第一特征图生成所述多个特征图中的第二特征图;
选择存储器层级中具有可用存储器空间并提供对第二特征图的最快访问的存储器的级别;
将第二特征图映射到所选择的级别的存储器;以及
当第一特征图期满时,从用于存储第一特征图的所述存储器中移除所述多个特征图中的第一特征图,并且将用于存储第一特征图的所述存储器取消分配。
6.根据权利要求5所述的电子设备,其中,所述至少一个处理器还被配置为:
由神经网络的层提供第一特征图;以及
对第一特征图执行所述神经网络的层的操作,以生成第二特征图。
7.根据权利要求5所述的电子设备,其中,响应于第二特征图的映射,从所述存储器层级中的所述存储器中移除第一特征图。
8.根据权利要求5所述的电子设备,其中,所述存储器层级包括至少一级的高速缓冲存储器和动态随机访问存储器DRAM。
9.一种计算机可读介质,包括程序代码,当至少一个处理器执行所述程序代码时,所述程序代码使得所述至少一个处理器执行权利要求1-4中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/892,195 | 2018-02-08 | ||
US15/892,195 US11119915B2 (en) | 2018-02-08 | 2018-02-08 | Dynamic memory mapping for neural networks |
PCT/KR2018/003985 WO2019156283A1 (en) | 2018-02-08 | 2018-04-04 | Dynamic memory mapping for neural networks |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111684470A CN111684470A (zh) | 2020-09-18 |
CN111684470B true CN111684470B (zh) | 2023-10-24 |
Family
ID=67476074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880088769.XA Active CN111684470B (zh) | 2018-02-08 | 2018-04-04 | 神经网络的动态存储器映射 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11119915B2 (zh) |
EP (1) | EP3710994A4 (zh) |
KR (1) | KR20200108341A (zh) |
CN (1) | CN111684470B (zh) |
WO (1) | WO2019156283A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10922833B2 (en) * | 2018-05-15 | 2021-02-16 | Apical Ltd. | Image processing |
US11676371B2 (en) * | 2018-08-17 | 2023-06-13 | Fotonation Limited | Apparatus for processing a neural network |
US10963390B2 (en) * | 2018-08-21 | 2021-03-30 | Neuchips Corporation | Memory-adaptive processing method for convolutional neural network and system thereof |
EP3640810A4 (en) * | 2018-08-28 | 2021-05-05 | Cambricon Technologies Corporation Limited | DATA PRE-PROCESSING PROCESS AND APPARATUS, COMPUTER DEVICE AND STORAGE MEDIA |
US11074317B2 (en) * | 2018-11-07 | 2021-07-27 | Samsung Electronics Co., Ltd. | System and method for cached convolution calculation |
CN112396169B (zh) * | 2019-08-13 | 2024-04-02 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
US11586895B1 (en) * | 2019-06-17 | 2023-02-21 | Green Mountain Semiconductor, Inc. | Recursive neural network using random access memory |
GB2589382B (en) * | 2019-11-29 | 2023-02-22 | Imagination Tech Ltd | Hardware implementation of a neural network |
CN112256440B (zh) * | 2020-12-23 | 2021-03-09 | 上海齐感电子信息科技有限公司 | 神经网络推理的内存管理方法及装置 |
CN113806244B (zh) * | 2021-11-18 | 2022-02-08 | 深圳比特微电子科技有限公司 | 用于片上***的内存管理方法和基于片上***的设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106203619A (zh) * | 2015-05-29 | 2016-12-07 | 三星电子株式会社 | 数据优化的神经网络遍历 |
CN106462940A (zh) * | 2014-10-09 | 2017-02-22 | 微软技术许可有限责任公司 | 图像中通用对象检测 |
CN107004138A (zh) * | 2014-12-17 | 2017-08-01 | 诺基亚技术有限公司 | 利用神经网络的对象检测 |
CN107025317A (zh) * | 2015-10-07 | 2017-08-08 | 阿尔特拉公司 | 用于实施卷积神经网络加速器上的层的方法和装置 |
WO2017132830A1 (en) * | 2016-02-02 | 2017-08-10 | Xiaogang Wang | Methods and systems for cnn network adaption and object online tracking |
CN107392309A (zh) * | 2017-09-11 | 2017-11-24 | 东南大学—无锡集成电路技术研究所 | 一种基于fpga的通用定点数神经网络卷积加速器硬件结构 |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4511964A (en) | 1982-11-12 | 1985-04-16 | Hewlett-Packard Company | Dynamic physical memory mapping and management of independent programming environments |
CA2040903C (en) | 1991-04-22 | 2003-10-07 | John G. Sutherland | Neural networks |
US6332178B1 (en) | 1997-11-26 | 2001-12-18 | Compaq Computer Corporation | Method for estimating statistics of properties of memory system transactions |
AU7342300A (en) | 1999-09-07 | 2001-04-10 | Fast-Chip Incorporated | Dynamic memory caching |
US20020194540A1 (en) | 2001-05-04 | 2002-12-19 | Hugo Cheung | Method and system for non-intrusive dynamic memory mapping |
US7020753B2 (en) | 2002-01-09 | 2006-03-28 | Sun Microsystems, Inc. | Inter-domain data transfer |
US20050246502A1 (en) | 2004-04-28 | 2005-11-03 | Texas Instruments Incorporated | Dynamic memory mapping |
US7401201B2 (en) | 2006-04-28 | 2008-07-15 | Freescale Semiconductor, Inc. | Processor and method for altering address translation |
US8135936B2 (en) | 2009-12-23 | 2012-03-13 | Intel Corporation | Adaptive address mapping with dynamic runtime memory mapping selection |
US7734890B2 (en) | 2006-10-06 | 2010-06-08 | Okralabs Llc | Method and system for using a distributable virtual address space |
US9542408B2 (en) | 2010-08-27 | 2017-01-10 | Pneuron Corp. | Method and process for enabling distributing cache data sources for query processing and distributed disk caching of large data and analysis requests |
US9026767B2 (en) | 2009-12-23 | 2015-05-05 | Intel Corporation | Adaptive address mapping with dynamic runtime memory mapping selection |
US8799553B2 (en) | 2010-04-13 | 2014-08-05 | Apple Inc. | Memory controller mapping on-the-fly |
US8965819B2 (en) | 2010-08-16 | 2015-02-24 | Oracle International Corporation | System and method for effective caching using neural networks |
US9811775B2 (en) | 2012-12-24 | 2017-11-07 | Google Inc. | Parallelizing neural networks during training |
US9406017B2 (en) | 2012-12-24 | 2016-08-02 | Google Inc. | System and method for addressing overfitting in a neural network |
CN104346622A (zh) | 2013-07-31 | 2015-02-11 | 富士通株式会社 | 卷积神经网络分类器及其分类方法和训练方法 |
IL231862A (en) | 2014-04-01 | 2015-04-30 | Superfish Ltd | Image representation using a neural network |
US9373059B1 (en) | 2014-05-05 | 2016-06-21 | Atomwise Inc. | Systems and methods for applying a convolutional network to spatial data |
US10437479B2 (en) * | 2014-08-19 | 2019-10-08 | Samsung Electronics Co., Ltd. | Unified addressing and hierarchical heterogeneous storage and memory |
US9530071B2 (en) | 2014-10-10 | 2016-12-27 | Beijing Kuangshi Technology Co., Ltd. | Hierarchical interlinked multi-scale convolutional network for image parsing |
US9665802B2 (en) | 2014-11-13 | 2017-05-30 | Nec Corporation | Object-centric fine-grained image classification |
US9563825B2 (en) | 2014-11-20 | 2017-02-07 | Adobe Systems Incorporated | Convolutional neural network using a binarized convolution layer |
US9607352B2 (en) | 2014-12-03 | 2017-03-28 | Intel Corporation | Prediction based primitive sorting for tile based rendering |
US10346726B2 (en) | 2014-12-15 | 2019-07-09 | Samsung Electronics Co., Ltd. | Image recognition method and apparatus, image verification method and apparatus, learning method and apparatus to recognize image, and learning method and apparatus to verify image |
US20160239706A1 (en) | 2015-02-13 | 2016-08-18 | Qualcomm Incorporated | Convolution matrix multiply with callback for deep tiling for deep convolutional neural networks |
US9524450B2 (en) | 2015-03-04 | 2016-12-20 | Accenture Global Services Limited | Digital image processing using convolutional neural networks |
WO2016141282A1 (en) | 2015-03-04 | 2016-09-09 | The Regents Of The University Of California | Convolutional neural network with tree pooling and tree feature map selection |
US10417555B2 (en) * | 2015-05-29 | 2019-09-17 | Samsung Electronics Co., Ltd. | Data-optimized neural network traversal |
US9589210B1 (en) | 2015-08-26 | 2017-03-07 | Digitalglobe, Inc. | Broad area geospatial object detection using autogenerated deep learning models |
US9767381B2 (en) | 2015-09-22 | 2017-09-19 | Xerox Corporation | Similarity-based detection of prominent objects using deep CNN pooling layers as features |
US10581795B2 (en) | 2015-10-07 | 2020-03-03 | Google Llc | Systems and methods for dynamically selecting a communication identifier |
US10068171B2 (en) | 2015-11-12 | 2018-09-04 | Conduent Business Services, Llc | Multi-layer fusion in a convolutional neural network for image classification |
US9424494B1 (en) | 2016-01-28 | 2016-08-23 | International Business Machines Corporation | Pure convolutional neural network localization |
US20170357894A1 (en) | 2016-06-10 | 2017-12-14 | Apple Inc. | Data packing for convolution of artificial neural networks |
CN107045720B (zh) * | 2017-05-04 | 2018-11-30 | 深圳硅基仿生科技有限公司 | 基于人工神经网络的识别眼底图像病变的处理*** |
RU2659745C1 (ru) * | 2017-08-28 | 2018-07-03 | Общество с ограниченной ответственностью "Аби Продакшн" | Реконструкция документа из серии изображений документа |
US11556777B2 (en) * | 2017-11-15 | 2023-01-17 | Uatc, Llc | Continuous convolution and fusion in neural networks |
-
2018
- 2018-02-08 US US15/892,195 patent/US11119915B2/en active Active
- 2018-04-04 EP EP18905171.7A patent/EP3710994A4/en active Pending
- 2018-04-04 WO PCT/KR2018/003985 patent/WO2019156283A1/en unknown
- 2018-04-04 KR KR1020207023372A patent/KR20200108341A/ko not_active Application Discontinuation
- 2018-04-04 CN CN201880088769.XA patent/CN111684470B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106462940A (zh) * | 2014-10-09 | 2017-02-22 | 微软技术许可有限责任公司 | 图像中通用对象检测 |
CN107004138A (zh) * | 2014-12-17 | 2017-08-01 | 诺基亚技术有限公司 | 利用神经网络的对象检测 |
CN106203619A (zh) * | 2015-05-29 | 2016-12-07 | 三星电子株式会社 | 数据优化的神经网络遍历 |
CN107025317A (zh) * | 2015-10-07 | 2017-08-08 | 阿尔特拉公司 | 用于实施卷积神经网络加速器上的层的方法和装置 |
WO2017132830A1 (en) * | 2016-02-02 | 2017-08-10 | Xiaogang Wang | Methods and systems for cnn network adaption and object online tracking |
CN107392309A (zh) * | 2017-09-11 | 2017-11-24 | 东南大学—无锡集成电路技术研究所 | 一种基于fpga的通用定点数神经网络卷积加速器硬件结构 |
Non-Patent Citations (2)
Title |
---|
S. Chtourou 等.Neural Network Based Memory Access Prediction Support for SoC Dynamic Reconfiguration.《The 2006 IEEE International Joint Conference on Neural Network Proceedings》.2006,全文. * |
瞿涛.分米级可见光遥感图像特定目标的在线检测.《中国博士学位论文全文数据库 (信息科技辑)》.2018,(第1期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
EP3710994A1 (en) | 2020-09-23 |
US20190243755A1 (en) | 2019-08-08 |
WO2019156283A1 (en) | 2019-08-15 |
EP3710994A4 (en) | 2021-01-13 |
KR20200108341A (ko) | 2020-09-17 |
US11119915B2 (en) | 2021-09-14 |
CN111684470A (zh) | 2020-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111684470B (zh) | 神经网络的动态存储器映射 | |
US10909085B2 (en) | Blockchain-based data processing method and device | |
EP3452954B1 (en) | Dynamic classifier selection based on class skew | |
US11775812B2 (en) | Multi-task based lifelong learning | |
US10956532B2 (en) | Method and apparatus for displaying page to user through reinforcement learning | |
US11521038B2 (en) | Electronic apparatus and control method thereof | |
US11301705B2 (en) | Object detection using multiple neural network configurations | |
EP3642763B1 (en) | System and method for neural networks | |
KR102647690B1 (ko) | 최적화된 인공신경망 모델을 구동하도록 구성된 신경망 프로세싱 유닛 | |
WO2019194863A1 (en) | Methods for enhanced imaging based on semantic processing and dynamic scene modeling | |
CN110321964B (zh) | 图像识别模型更新方法及相关装置 | |
US11593637B2 (en) | Convolution streaming engine for deep neural networks | |
US11580399B2 (en) | System and method for convolutional layer structure for neural networks | |
US9471127B2 (en) | Method, device and system for energy management | |
CN112084959B (zh) | 一种人群图像处理方法及装置 | |
US11159731B2 (en) | System and method for AI enhanced shutter button user interface | |
CN114237861A (zh) | 一种数据处理方法及其设备 | |
CN114529914A (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 |