CN116348883A - 神经网络生成装置、神经网络控制方法以及软件生成程序 - Google Patents
神经网络生成装置、神经网络控制方法以及软件生成程序 Download PDFInfo
- Publication number
- CN116348883A CN116348883A CN202180070438.5A CN202180070438A CN116348883A CN 116348883 A CN116348883 A CN 116348883A CN 202180070438 A CN202180070438 A CN 202180070438A CN 116348883 A CN116348883 A CN 116348883A
- Authority
- CN
- China
- Prior art keywords
- neural network
- memory
- hardware
- software
- data
- 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.)
- Pending
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 187
- 238000000034 method Methods 0.000 title claims description 47
- 230000015654 memory Effects 0.000 claims description 203
- 230000036961 partial effect Effects 0.000 claims description 79
- 230000011218 segmentation Effects 0.000 claims description 4
- 238000013139 quantization Methods 0.000 description 182
- 238000013527 convolutional neural network Methods 0.000 description 57
- 238000010586 diagram Methods 0.000 description 41
- 239000013598 vector Substances 0.000 description 40
- 230000006870 function Effects 0.000 description 34
- 238000012546 transfer Methods 0.000 description 31
- 238000011176 pooling Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 16
- 230000004913 activation Effects 0.000 description 15
- 238000012360 testing method Methods 0.000 description 14
- 239000011159 matrix material Substances 0.000 description 12
- 238000010606 normalization Methods 0.000 description 11
- 238000003860 storage Methods 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 7
- 230000006399 behavior Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000007704 transition Effects 0.000 description 6
- 239000008186 active pharmaceutical agent Substances 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000002829 reductive effect Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000001151 other effect Effects 0.000 description 2
- 238000007493 shaping process Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000020169 heat generation Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural 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/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
一种神经网络生成装置,为生成对神经网络进行运算的神经网络执行模型的神经网络生成装置,具备:执行模型生成部,基于所述神经网络执行模型进行工作的硬件的硬件信息和所述神经网络的网络信息来生成所述神经网络执行模型;以及软件生成部,生成使将所述神经网络执行模型安装于所述硬件而成的神经网络硬件工作的软件。
Description
技术领域
本发明涉及神经网络生成装置、神经网络控制方法以及软件生成程序。本申请基于2020年10月19日在日本申请的特愿2020-175606号主张优先权,在此引用其内容。
背景技术
近年来,卷积神经网络(Convolutional Neural Network:CNN)被作为图像识别等的模型来使用。卷积神经网络为具有卷积层、池化层的多层构造,需要卷积运算等大量运算。已设计出各种使基于卷积神经网络的运算高速化的运算方法(专利文献1等)。
现有技术文献
专利文献
专利文献1:日本特开2018-077829号公报
发明内容
发明所要解决的技术课题
另一方面,在IoT设备等嵌入式设备中也已使用利用卷积神经网络的图像识别等。为了使卷积神经网络在嵌入式设备中高效地工作,需要生成与嵌入式设备的硬件结构相配合的进行神经网络的运算的电路、模型。另外,需要使这些电路、模型高效且高速地工作的控制方法。另外,需要生成使这些电路、模型高效且高速地工作的软件的软件生成程序。
鉴于上述情况,本发明的目的在于提供:生成可嵌入于IoT设备等嵌入式设备、且能够被使得进行高效且高速的工作的进行神经网络的运算的电路、模型的神经网络生成装置、使进行神经网络的运算的电路、模型高效且高速地工作的神经网络控制方法以及生成使进行神经网络的运算的电路、模型高效且高速地工作的软件的软件生成程序。
用于解决技术课题的技术方案
为了解决上述技术课题,本发明提出以下手段。
本发明的第一方案的神经网络生成装置为生成对神经网络进行运算的神经网络执行模型的神经网络生成装置,具备:执行模型生成部,基于所述神经网络执行模型进行工作的硬件的硬件信息和所述神经网络的网络信息来生成所述神经网络执行模型;以及软件生成部,生成使将所述神经网络执行模型安装于所述硬件而成的神经网络硬件工作的软件。
本发明的第二方案的神经网络控制方法为控制对神经网络进行运算的神经网络硬件的方法,其中,将所述神经网络分割而使所述神经网络硬件进行运算。
本发明的第三方案的软件生成程序为生成控制对神经网络进行运算的神经网络硬件的软件的程序,其中,该程序使计算机生成将所述神经网络分割而使所述神经网络硬件进行运算的所述软件。
发明效果
本发明的神经网络生成装置、神经网络控制方法以及软件生成程序能够生成并控制可嵌入于IoT设备等嵌入式设备、且能够被使得进行高性能工作的神经网络。
附图说明
图1为示出第一实施方式的神经网络生成装置的图。
图2为示出该神经网络生成装置的运算部的输入输出的图。
图3为示出卷积神经网络的一例的图。
图4为说明该卷积神经网络的卷积层进行的卷积运算的图。
图5为示出神经网络执行模型的一例的图。
图6为示出该神经网络执行模型的工作例的时序图。
图7为该神经网络生成装置的控制流程图。
图8为生成的卷积运算电路的内部框图。
图9为该卷积运算电路的乘法运算器的内部框图。
图10为该乘法运算器的积和运算单元的内部框图。
图11为该卷积运算电路的累加器电路的内部框图。
图12为该累加器电路的累加器单元的内部框图。
图13为该卷积运算电路的控制电路的状态转变图。
图14为生成的量化运算电路的内部框图。
图15为该量化运算电路的矢量运算电路和量化电路的内部框图。
图16为该矢量运算电路的运算单元的框图。
图17为该量化电路的量化单元的内部框图。
图18为生成的DMAC的内部框图。
图19为说明该卷积运算的数据分割、数据展开的图。
图20为说明网络分割工序的图。
图21为说明网络分割工序的图。
图22为说明网络分割工序的图。
图23为说明网络分割工序的图。
图24为示出被分配有分割后的运算的神经网络硬件的时序图的图。
图25为示出对神经网络硬件的其它分配例的时序图。
附图标记
300:神经网络生成装置;200:卷积神经网络(CNN);100:神经网络执行模型(NN执行模型);400:神经网络硬件模型;500:软件;600:神经网络硬件;1:第一存储器;2:第二存储器;3:DMA控制器(DMAC);4:卷积运算电路;42:乘法运算器;43:累加器电路;5:量化运算电路;52:矢量运算电路;53:量化电路;6:控制器;61:寄存器;PM:已学习参数;DS:学习数据集;HW:硬件信息;NW:网络信息。
具体实施方式
(第一实施方式)
参照图1至图26对本发明的第一实施方式进行说明。
图1为示出本实施方式的神经网络生成装置300的图。
[神经网络生成装置300]
神经网络生成装置300为生成可嵌入于IoT设备等嵌入式设备的已学习的神经网络执行模型100的装置。神经网络执行模型100是为了使卷积神经网络200(以下称为“CNN200”)在嵌入式设备中进行运算而生成的软件、硬件模型。
神经网络生成装置300为具备CPU(Central Processing Unit,中央处理单元)等处理器和存储器等硬件的能够执行程序的装置(计算机)。神经网络生成装置300的功能通过在神经网络生成装置300中执行神经网络生成程序及软件生成程序来实现。神经网络生成装置300具备存储部310、运算部320、数据输入部330、数据输出部340、显示部350和操作输入部360。
存储部310存储硬件信息HW、网络信息NW、学习数据集DS、神经网络执行模型100(以下称为“NN执行模型100”)和已学习参数PM。硬件信息HW、学习数据集DS及网络信息NW为被输入到神经网络生成装置300的输入数据。NN执行模型100及已学习参数PM为神经网络生成装置300输出的输出数据。此外,“已学习的NN执行模型100”包括NN执行模型100及已学习参数PM。
硬件信息HW为使NN执行模型100工作的嵌入式设备(以后称为“工作对象硬件”)的信息。硬件信息HW例如为工作对象硬件的设备类别、设备限制、存储器结构、总线结构、工作频率、功耗、制造工艺类别等。设备类别例如为ASIC(Application Specific IntegratedCircuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)等类别。设备限制为工作对象设备中包含的运算器数的上限、电路规模的上限等。存储器结构为存储器类别、存储器个数、存储器容量、输入输出数据宽度。总线结构为总线种类、总线宽度、总线通信标准、同一总线上的连接设备等。另外,在NN执行模型100存在多个变体时,硬件信息HW中包含与使用的NN执行模型100的变体相关的信息。
网络信息NW为CNN 200的基本信息。网络信息NW例如为CNN 200的网络结构、输入数据信息、输出数据信息、量化信息等。输入数据信息为图像和语音等输入数据类别和输入数据尺寸等。
学习数据集DS具有学习中使用的学习数据D1和推断测试中使用的测试数据D2。
图2为示出运算部320的输入输出的图。
运算部320具有执行模型生成部321、学习部322、推断部323、硬件生成部324和软件生成部325。被输入到运算部320的NN执行模型100也可以由神经网络生成装置300以外的装置生成。
执行模型生成部321基于硬件信息HW及网络信息NW生成NN执行模型100。NN执行模型100是为了使CNN 200在工作对象硬件中进行运算而生成的软件、硬件模型。软件包括控制硬件模型的软件。硬件模型可以为行为级(behavior Level),也可以为RTL(RegisterTransfer Level,寄存器传输级),也可以为表示门、电路模块之间的连接的网络列表,还可以为它们的组合。
学习部322使用NN执行模型100及学习数据D1,生成已学习参数PM。推断部323使用NN执行模型100及测试数据D2来实施推断测试。
硬件生成部324基于硬件信息HW及NN执行模型100生成神经网络硬件模型400。神经网络硬件模型400为可安装于工作对象硬件的硬件模型。基于硬件信息HW,针对工作对象硬件来优化神经网络硬件模型400。神经网络硬件模型400可以为RTL(Register TransferLevel,寄存器传输级),也可以为表示门、电路模块之间的连接的网络列表,还可以为它们的组合。神经网络硬件模型400可以是为了将NN执行模型100安装于硬件所需的参数列表、配置文件。参数列表、配置文件也可以与另行生成的NN执行模型100组合使用。
在以后的说明中,将神经网络硬件模型400安装于工作对象硬件而成的装置被称为“神经网络硬件600”。
软件生成部325基于网络信息NW及NN执行模型100生成使神经网络硬件600工作的软件500。软件500包括根据需要将已学习参数PM转发到神经网络硬件600的软件。
对数据输入部330输入为了生成已学习的NN执行模型100所需的硬件信息HW、网络信息NW等。硬件信息HW、网络信息NW等例如作为以预定数据格式记载的数据被输入。被输入的硬件信息HW、网络信息NW等存储于存储部310。硬件信息HW、网络信息NW等可以由使用者从操作输入部360进行输入或变更。
在数据输出部340输出生成的已学习的NN执行模型100。例如生成的NN执行模型100和已学习参数PM在数据输出部340被输出。
显示部350具有LCD显示器等公知的监视器。显示部350能够显示运算部320生成的GUI(Graphical User Interface,图形用户界面)图像、用于接受指令等的控制台画面等。另外,在运算部320需要来自使用者的信息输入时,显示部350能够显示提醒使用者从操作输入部360输入信息的消息、信息输入所需的GUI图像。
操作输入部360为使用者输入对运算部320等的指示的装置。操作输入部360为触摸面板、键盘、鼠标等公知的输入设备。操作输入部360的输入被发送到运算部320。
运算部320的全部或部分功能通过例如CPU(Central Processing Unit,中央处理单元)、GPU(Graphics Processing Unit,图形处理单元)这样的1个以上的处理器执行存储于程序存储器的程序来实现。但是,运算部320的全部或部分功能也可以通过LSI(LargeScale Integration,大规模集成)、ASIC(Application Specific Integrated Circuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLD(Programmable Logic Device,可编程逻辑器件)等硬件(例如电路部:circuity)来实现。另外,运算部320的全部或部分功能还可以利用软件与硬件的组合来实现。
运算部320的全部或部分功能可以使用设置于云服务器等外部设备的CPU、GPU、硬件等外部加速器来实现。运算部320能够通过并用例如云服务器上的高运算性能GPU、专用硬件来使运算部320的运算速度提高。
存储部310通过闪存、EEPROM(Electrically Erasable Programmable Read-OnlyMemory,电可擦可编程只读存储器)、ROM(Read-Only Memory,只读存储器)或RAM(RandomAccess Memory,随机存取存储器)等来实现。存储部310的全部或部分可以设置于云服务器等外部设备,利用通信线路与运算部320等连接。
[卷积神经网络(CNN)200]
接下来,对CNN 200进行说明。图3为示出CNN 200的一例的图。CNN 200的网络信息NW为与以下说明的CNN 200的结构相关的信息。CNN 200使用低位的权重w和量化后的输入数据a等,易于嵌入于嵌入式设备。
CNN 200为包括进行卷积运算的卷积层210、进行量化运算的量化运算层220和输出层230的多层构造的网络。在CNN 200的至少一部分中,卷积层210与量化运算层220交替连结。CNN 200为广泛用于图像识别、动态图像识别的模型。CNN 200可以还具有全连接层等具有其它功能的层(layer)。
图4为说明卷积层210进行的卷积运算的图。
卷积层210对输入数据a进行使用权重w的卷积运算。卷积层210进行以输入数据a和权重w为输入的积和运算。
对卷积层210的输入数据a(也称为激活数据、特征图)为图像数据等多维数据。在本实施方式中,输入数据a为由元素(x,y,c)构成的三维张量。CNN 200的卷积层210对低位的输入数据a进行卷积运算。在本实施方式中,输入数据a的元素为2位无符号整数(0,1,2,3)。输入数据a的元素也可以为例如4位或8位无符号整数。
在输入到CNN 200的输入数据为例如32位浮点型等格式与对卷积层210的输入数据a不同的情况时,CNN 200可以还具有在卷积层210之前进行类型变换、量化的输入层。
卷积层210的权重w(也称为滤波器、卷积核)为具有作为可学习的参数的元素的多维数据。在本实施方式中,权重w为由元素(i,j,c,d)构成的四维张量。权重w具有d个由元素(i,j,c)构成的三维张量(以后称为“权重wo”)。已学习的CNN 200中的权重w为已学习的数据。CNN 200的卷积层210使用低位的权重w进行卷积运算。在本实施方式中,权重w的元素为1位有符号整数(0,1),值“0”表示+1,值“1”表示-1。
卷积层210进行式1所示的卷积运算,将输出数据f输出。在式1中,s表示步幅(stride)。在图4中以虚线所示的区域示出了对输入数据a应用权重wo的区域ao(以后称为“应用区域ao”)之一。应用区域ao的元素以(x+i,y+j,c)来表示。
[数学式1]
量化运算层220对卷积层210输出的卷积运算的输出实施量化等。量化运算层220具有池化层221、批量归一化(Batch Normalization)层222、激活函数层223和量化层224。
池化层221对卷积层210输出的卷积运算的输出数据f实施平均池化(式2)或MAX池化(式3)等运算,对卷积层210的输出数据f进行压缩。在式2及式3中,u表示输入张量,v表示输出张量,T表示池化区域的大小。在式3中,max为输出u关于T中含有的i与j的组合的最大值的函数。
[数学式2]
[数学式3]
v(x,y,c)=max(u(T·x+i,T·y+j,c)),i∈T,j∈T......(式3)
批量归一化层222利用例如式4所示的运算对量化运算层220、池化层221的输出数据进行数据分布的归一化。在式4中,u表示输入张量,v表示输出张量,α表示尺度(scale),β表示偏置(bias)。在已学习的CNN 200中,α及β为已学习的常数矢量。
[数学式4]
v(x,y,c)=α(c)·(u(x,y,c)-β(c))……(式4)
激活函数层223对量化运算层220、池化层221、批量归一化层222的输出进行ReLU(式5)等激活函数的运算。在式5中,u为输入张量,v为输出张量。在式5中,max为输出自变量当中的最大数值的函数。
[数学式5]
v(x,y,c)=max(0,u(x,y,c))……(式5)
量化层224基于量化参数,对池化层221、激活函数层223的输出进行例如式6所示的量化。式6所示的量化将输入张量u减位至2位。在式6中,q(c)为量化参数的矢量。在已学习的CNN 200中,q(c)为已学习的常数矢量。式6中的不等号“≤”也可以为“<”。
[数学式6]
qtz(x,y,c)=0当u(x,y,c)≤q(c).th0否则
1当u(x,y,c)≤q(c).th1否则……(式6)
2当u(x,y,c)≤q(c).th2否则
3
输出层230为利用恒等函数、归一化指数函数(Softmax函数)等输出CNN 200的结果的层。输出层230的前级的层可以为卷积层210,也可以为量化运算层220。
在CNN 200中,量化后的量化层224的输出数据被输入到卷积层210,因此与不进行量化的其它卷积神经网络相比,卷积层210的卷积运算的负荷小。
[神经网络执行模型100(NN执行模型)100]
接下来,对NN执行模型100进行说明。图5为示出NN执行模型100的一例的图。NN执行模型100是为了使CNN 200在工作对象硬件中进行运算而生成的软件、硬件模型。软件包括控制硬件模型的软件。硬件模型可以为行为级,也可以为RTL(Register TransferLevel,寄存器传输级),也可以为表示门、电路模块之间的连接的网络列表,还可以为它们的组合。
NN执行模型100具备第一存储器1、第二存储器2、DMA控制器3(以下也称为“DMAC3”)、卷积运算电路4、量化运算电路5和控制器6。NN执行模型100的特征在于,卷积运算电路4和量化运算电路5经由第一存储器1及第二存储器2而形成为环状。
第一存储器1例如为由SRAM(Static RAM,静态随机存取存储器)等构成的易失性存储器等可改写的存储器。在第一存储器1中,经由DMAC 3、控制器6进行数据的写入及读取。第一存储器1与卷积运算电路4的输入端口连接,卷积运算电路4能够从第一存储器读取数据。另外,第一存储器1与量化运算电路5的输出端口连接,量化运算电路5能够将数据写入于第一存储器1。外部主机CPU能够通过对第一存储器1的数据的写入、读取来进行对NN电路100的数据的输入输出。
第二存储器2为例如由SRAM(Static RAM,静态随机存取存储器)等构成的易失性存储器等可改写的存储器。在第二存储器2中,经由DMAC 3、控制器6进行数据的写入及读取。第二存储器2与量化运算电路5的输入端口连接,量化运算电路5能够从第二存储器2读取数据。另外,第二存储器2与卷积运算电路4的输出端口连接,卷积运算电路4能够将数据写入于第二存储器2。外部主机CPU能够通过对第二存储器2的数据的写入、读取来进行对NN电路100的数据的输入输出。
DMAC 3连接于外部总线EB,进行DRAM等外部存储器与第一存储器1之间的数据转发。另外,DMAC 3进行DRAM等外部存储器与第二存储器2之间的数据转发。另外,DMAC 3进行DRAM等外部存储器与卷积运算电路4之间的数据转发。另外,DMAC 3进行DRAM等外部存储器与量化运算电路5之间的数据转发。
卷积运算电路4为进行已学习的CNN 200的卷积层210中的卷积运算的电路。卷积运算电路4读取保存于第一存储器1的输入数据a,对输入数据a实施卷积运算。卷积运算电路4将卷积运算的输出数据f(以后也称为“卷积运算输出数据”)写入于第二存储器2。
量化运算电路5为进行已学习的CNN 200的量化运算层220中的量化运算的至少一部分的电路。量化运算电路5读取保存于第二存储器2的卷积运算的输出数据f,对卷积运算的输出数据f进行量化运算(包括池化、批量归一化、激活函数及量化当中的至少量化的运算)。量化运算电路5将量化运算的输出数据(以后也称为“量化运算输出数据”)out写入于第一存储器1。
控制器6连接于外部总线EB,作为外部的主机CPU的从设备而工作。控制器6具有包括参数寄存器、状态寄存器的寄存器61。参数寄存器为对NN执行模型100的工作进行控制的寄存器。状态寄存器为包括信号量S的表示NN执行模型100的状态的寄存器。外部主机CPU能够经由控制器6访问寄存器61。
控制器6经由内部总线IB与第一存储器1、第二存储器2、DMAC 3、卷积运算电路4和量化运算电路5连接。外部主机CPU能够经由控制器6对各块进行访问。例如,外部主机CPU能够经由控制器6来指示对DMAC 3、卷积运算电路4、量化运算电路5的命令。另外,DMAC 3、卷积运算电路4、量化运算电路5能够经由内部总线IB更新控制器6具有的状态寄存器(包括信号量S)。状态寄存器(包括信号量S)可以构成为经由与DMAC 3、卷积运算电路4、量化运算电路5连接的专用布线被更新。
NN执行模型100具有第一存储器1、第二存储器2等,因此在来自DRAM等外部存储器的利用DMAC 3进行的数据转发中,能够降低重复数据的数据转发次数。据此,能够大幅降低由于存储器访问而产生的功耗。
图6为示出NN执行模型100的工作例的时序图。NN执行模型100对于作为多个层的多层构造的CNN 200的运算,通过形成为环状的电路来进行运算。NN执行模型100通过环状的电路结构能够高效利用硬件资源。以下,说明图6所示的神经网络硬件600的工作例。
DMAC 3将层1(参照图3)的输入数据a保存于第一存储器1。DMAC 3可以与卷积运算电路4进行的卷积运算的顺序相配合地分割层1的输入数据a并转发至第一存储器1。
卷积运算电路4读取保存于第一存储器1的层1(参照图3)的输入数据a。卷积运算电路4对层1的输入数据a进行层1的卷积运算。层1的卷积运算的输出数据f被保存于第二存储器2。
量化运算电路5读取保存于第二存储器2的层1的输出数据f。量化运算电路5对层1的输出数据f进行层2的量化运算。层2的量化运算的输出数据out被保存于第一存储器1。
卷积运算电路4读取保存于第一存储器1的层2的量化运算的输出数据。卷积运算电路4将层2的量化运算的输出数据out作为输入数据a来进行层3的卷积运算。层3的卷积运算的输出数据f被保存于第二存储器2。
卷积运算电路4读取保存于第一存储器1的层2M-2(M为自然数)的量化运算的输出数据out。卷积运算电路4将层2M-2的量化运算的输出数据out作为输入数据a来进行层2M-1的卷积运算。层2M-1的卷积运算的输出数据f被保存于第二存储器2。
量化运算电路5读取保存于第二存储器2的层2M-1的输出数据f。量化运算电路5对2M-1层的输出数据f进行层2M的量化运算。层2M的量化运算的输出数据out被保存于第一存储器1。
卷积运算电路4读取保存于第一存储器1的层2M的量化运算的输出数据out。卷积运算电路4将层2M的量化运算的输出数据out作为输入数据a来进行层2M+1的卷积运算。层2M+1的卷积运算的输出数据f被保存于第二存储器2。
卷积运算电路4与量化运算电路5交替进行运算,推进图3所示的CNN 200的运算。在NN执行模型100中,卷积运算电路4通过时分方式实施层2M-1和层2M+1的卷积运算。另外,在NN执行模型100中,量化运算电路5通过时分方式实施层2M-2和层2M的量化运算。由此,与对每层安装各自的卷积运算电路4和量化运算电路5的情况相比,NN执行模型100的电路规模小得多。
[神经网络生成装置300的工作]
接下来,依据图7所示的神经网络生成装置300的控制流程图说明神经网络生成装置300的工作(神经网络控制方法)。神经网络生成装置300在实施初始化处理(步骤S10)之后,执行步骤S11。
<硬件信息获取工序(S11)>
在步骤S11中,神经网络生成装置300获取工作对象硬件的硬件信息HW(硬件信息获取工序)。神经网络生成装置300例如获取被输入到数据输入部330的硬件信息HW。神经网络生成装置300可以通过使显示部350显示输入硬件信息HW所需的GUI图像并使使用者从操作输入部360输入硬件信息HW来获取硬件信息HW。
具体而言,硬件信息HW具有被分配作为第一存储器1及第二存储器2的存储器的存储器类别、存储器容量、输入输出数据宽度。
获取到的硬件信息HW被存储于存储部310。接下来,神经网络生成装置300执行步骤S12。
<网络信息获取工序(S12)>
在步骤S12中,神经网络生成装置300获取CNN 200的网络信息NW(网络信息获取工序)。神经网络生成装置300例如获取被输入到数据输入部330的网络信息NW。神经网络生成装置300可以通过使显示部350显示输入网络信息NW所需的GUI图像并使使用者从操作输入部360输入网络信息NW来获取网络信息NW。
具体而言,网络信息NW具有包括输入层和输出层230的网络结构、包括权重w和输入数据a的位宽的卷积层210的结构和包括量化信息的量化运算层220的结构。
获取到的网络信息NW被存储于存储部310。接下来,神经网络生成装置300执行步骤S13。
<神经网络执行模型生成工序(S13)>
在步骤S13中,神经网络生成装置300的执行模型生成部321基于硬件信息HW和网络信息NW生成NN执行模型100(神经网络执行模型生成工序)。
神经网络执行模型生成工序(NN执行模型生成工序)例如具有卷积运算电路生成工序(S13-1)、量化运算电路生成工序(S13-2)和DMAC生成工序(S13-3)。
<卷积运算电路生成工序(S13-1)>
执行模型生成部321基于硬件信息HW和网络信息NW生成NN执行模型100的卷积运算电路4(卷积运算电路生成工序)。执行模型生成部321根据作为网络信息NW被输入的权重w、输入数据a的位宽等信息,生成卷积运算电路4的硬件模型。硬件模型可以为行为级,也可以为RTL(Register Transfer Level,寄存器传输级),也可以为表示门、电路模块之间的连接的网络列表,还可以为它们的组合。以下,说明生成的卷积运算电路4的硬件模型的一例。
图8为生成的卷积运算电路4的内部框图。
卷积运算电路4具有权重存储器41、乘法运算器42、累加器电路43和状态控制器44。卷积运算电路4具有针对乘法运算器42及累加器电路43的专用的状态控制器44,当被输入命令指令时,无需外部的控制器而能够实施卷积运算。
权重存储器41为保存卷积运算中使用的权重w的存储器,例如为由SRAM(StaticRAM,静态随机存取存储器)等构成的易失性存储器等可改写的存储器。DMAC 3利用DMA转发对权重存储器41写入卷积运算所需的权重w。
图9为乘法运算器42的内部框图。
乘法运算器42将输入数据a的各元素与权重w的各元素相乘。输入数据a的各元素为输入数据a被分割后的数据,为具有Bc个元素的矢量数据(例如为后述的“输入矢量A”)。另外,权重w的各元素为权重w被分割后的数据,为具有Bc×Bd个元素的矩阵数据(例如为后述的“权重矩阵W”)。乘法运算器42具有Bc×Bd个积和运算单元47,能够并行实施输入矢量A与权重矩阵W的乘法运算。
乘法运算器42从第一存储器1及权重存储器41读取乘法运算所需的输入矢量A和权重矩阵W并实施乘法运算。乘法运算器42输出Bd个积和运算结果O(di)。
图10为积和运算单元47的内部框图。
积和运算单元47实施输入矢量A的元素A(ci)与权重矩阵W的元素W(ci,di)的乘法运算。另外,积和运算单元47将乘法运算结果与其它积和运算单元47的乘法运算结果S(ci,di)相加。积和运算单元47输出加法运算结果S(ci+1,di)。ci为0至(Bc-1)的索引。di为0至(Bd-1)的索引。元素A(ci)为2位无符号整数(0,1,2,3)。元素W(ci,di)为1位有符号整数(0,1),值“0”表示+1,值“1”表示-1。
积和运算单元47具有反转器(反相器)47a、选择器47b和加法运算器47c。积和运算单元47不使用乘法运算器,而仅使用反转器47a及选择器47b来进行乘法运算。在元素W(ci,di)为“0”时,选择器47b选择元素A(ci)的输入。在元素W(ci,di)为“1”时,选择器47b选择由反转器使元素A(ci)反转得到的补数。元素W(ci,di)也被输入到加法运算器47c的进位输入(Carry-in)。当元素W(ci,di)为“0”时,加法运算器47c输出对S(ci,di)加上元素A(ci)得到的值。当W(ci,di)为“1”时,加法运算器47c输出从S(ci,di)减去元素A(ci)得到的值。
图11为累加器电路43的内部框图。
累加器电路43在第二存储器2中累积乘法运算器42的积和运算结果O(di)。累加器电路43具有Bd个累加器单元48,能够在第二存储器2并行地累积Bd个积和运算结果O(di)。
图12为累加器单元48的内部框图。
累加器单元48具有加法运算器48a和屏蔽部48b。加法运算器48a将积和运算结果O的元素O(di)与保存于第二存储器2的式1所示的卷积运算的中间过程的部分和相加。作为加法运算结果,每个元素为16位。加法运算结果不限于每个元素16位,也可以为例如每个元素15位或17位。
加法运算器48a将加法运算结果写入到第二存储器2的同一地址。当初始化信号clear(清除)被断言(assert)时,屏蔽部48b屏蔽来自第二存储器2的输出,并使与元素O(di)相加的对象为零。当第二存储器2中没有保存中间过程的部分和时,初始化信号clear被断言。
当由乘法运算器42及累加器电路43进行的卷积运算完成时,第二存储器中保存有具有Bd个元素的输出数据f(x,y,do)。
状态控制器44控制乘法运算器42及累加器电路43的状态。另外,状态控制器44经由内部总线IB与控制器6连接。状态控制器44具有命令队列45和控制电路46。
命令队列45为保存卷积运算电路4用的命令指令C4的队列,例如由FIFO存储器构成。经由内部总线IB在命令队列45中写入命令指令C4。
控制电路46为对命令指令C4进行解码并基于命令指令C4控制乘法运算器42及累加器电路43的状态机。作为控制电路46,可以利用逻辑电路来实现,也可以通过由软件控制的CPU来实现。
图13为控制电路46的状态转变图。
当命令指令C4被输入到命令队列45时(Not empty:非空),控制电路46从空闲状态S1转变到解码状态S2。
在解码状态S2下,控制电路46对从命令队列45输出的命令指令C3进行解码。另外,控制电路46读取保存于控制器6的寄存器61的信号量S,判定是否能够执行命令指令C4中指示的乘法运算器42、累加器电路43的工作。在无法执行时(Not ready:未就绪),控制电路46等待(Wait)直到能够执行。在能够执行时(ready:就绪),控制电路46从解码状态S2转变到执行状态S3。
在执行状态S3下,控制电路46控制乘法运算器42、累加器电路43,使乘法运算器42、累加器电路43实施命令指令C4中指示的工作。当乘法运算器42、累加器电路43的工作结束时,控制电路46从命令队列45中移除已执行完的命令指令C4,并且更新在控制器6的寄存器61保存的信号量S。在命令队列45中有命令时(Not empty:非空),控制电路46从执行状态S3转变到解码状态S2。在命令队列45中没有命令时(empty:空),控制电路46从执行状态S3转变到空闲状态S1。
执行模型生成部321根据作为网络信息NW被输入的权重w、输入数据a的位宽等信息,决定卷积运算电路4中的运算器的规格和尺寸(Bc和Bd)。在硬件信息HW中包含生成的NN执行模型100(神经网络硬件模型400、神经网络硬件600)的硬件规模时,执行模型生成部321与所指定的规模相配合地调整卷积运算电路4中的运算器的规格和尺寸(Bc和Bd)。
<量化运算电路生成工序(S13-2)>
执行模型生成部321基于硬件信息HW和网络信息NW生成NN执行模型100的量化运算电路5(量化运算电路生成工序)。执行模型生成部321根据作为网络信息NW被输入的量化信息,生成量化运算电路5的硬件模型。硬件模型可以为行为级,也可以为RTL(RegisterTransfer Level,寄存器传输级),也可以为表示门、电路模块之间的连接的网络列表,还可以为它们的组合。以下,说明生成的量化运算电路5的硬件模型的一例。
图14为生成的量化运算电路5的内部框图。
量化运算电路5具有量化参数存储器51、矢量运算电路52、量化电路53和状态控制器54。量化运算电路5具有针对矢量运算电路52及量化电路53的专用的状态控制器54,当被输入命令指令时,无需外部的控制器而能够实施量化运算。
量化参数存储器51为保存量化运算中使用的量化参数q的存储器,例如为由SRAM(Static RAM,静态随机存取存储器)等构成的易失性存储器等可改写的存储器。DMAC 3利用DMA转发对量化参数存储器51写入量化运算所需的量化参数q。
图15为矢量运算电路52和量化电路53的内部框图。
矢量运算电路52对保存于第二存储器2的输出数据f(x,y,do)进行运算。矢量运算电路52具有Bd个运算单元57,对输出数据f(x,y,do)并行地进行SIMD运算。
图16为运算单元57的框图。
运算单元57例如具有ALU 57a、第一选择器57b、第二选择器57c、寄存器57d和移位器57e。运算单元57可以还具有公知的通用SIMD运算电路具有的其它运算器等。
矢量运算电路52通过组合运算单元57具有的运算器等来对输出数据f(x,y,do)进行量化运算层220中的池化层221、批量归一化层222、激活函数层223的运算当中的至少一个运算。
运算单元57能够利用ALU 57a将保存于寄存器57d的数据与从第二存储器2读取的输出数据f(x,y,do)的元素f(di)相加。运算单元57能够将ALU 57a的加法运算结果保存于寄存器57d。运算单元57通过将“0”输入到ALU 57a以代替根据第一选择器57b的选择被保存于寄存器57d的数据,从而能够将加法运算结果初始化。例如在池化区域为2×2时,移位器57e通过将ALU 57a的输出右移位2比特(bit)而能够输出加法运算结果的平均值。矢量运算电路52通过重复进行由Bd个运算单元57进行的上述运算等而能够实施式2所示的平均池化的运算。
运算单元57能够利用ALU 57a来比较保存于寄存器57d的数据和从第二存储器2读取的输出数据f(x,y,do)的元素f(di)。
运算单元57能够根据ALU 57a的比较结果来控制第二选择器57c,以选择保存于寄存器57d的数据和元素f(di)中的较大者。运算单元57通过根据第一选择器57b的选择将元素f(di)的可取值的最小值输入到ALU 57a而能够将比较对象初始化为最小值。在本实施方式中,元素f(di)为16比特(bit)有符号整数,因此元素f(di)的可取值的最小值为“0x8000”。矢量运算电路52通过重复进行由Bd个运算单元57进行的上述运算等而能够实施式3的MAX池化的运算。此外,在MAX池化的运算中,移位器57e不对第二选择器57c的输出进行移位。
运算单元57能够利用ALU 57a对保存于寄存器57d的数据和从第二存储器2读取的输出数据f(x,y,do)的元素f(di)进行减法运算。移位器57e能够将ALU 57a的输出左移位(即乘法运算)或右移位(即除法运算)。矢量运算电路52通过重复进行由Bd个运算单元57进行的上述运算等而能够实施式4的批量归一化的运算。
运算单元57能够利用ALU 57a来比较从第二存储器2读取的输出数据f(x,y,do)的元素f(di)和由第一选择器57b选择出的“0”。运算单元57能够根据ALU 57a的比较结果,选择并输出元素f(di)和预先保存于寄存器57d的常数值“0”中的任意值。矢量运算电路52通过重复进行由Bd个运算单元57进行的上述运算等而能够实施式5的ReLU运算。
矢量运算电路52能够实施平均池化、MAX池化、批量归一化、激活函数的运算及这些运算的组合。由于矢量运算电路52能够实施通用SIMD运算,因此也可以实施量化运算层220中的运算所需的其它运算。另外,矢量运算电路52也可以实施除了量化运算层220中的运算以外的运算。
此外,量化运算电路5可以没有矢量运算电路52。在量化运算电路5没有矢量运算电路52的情况下,输出数据f(x,y,do)被输入到量化电路53。
量化电路53对矢量运算电路52的输出数据进行量化。如图15所示,量化电路53具有Bd个量化单元58,对矢量运算电路52的输出数据并行地进行运算。
图17为量化单元58的内部框图。
量化单元58对矢量运算电路52的输出数据的元素in(di)进行量化。量化单元58具有比较器58a和编码器58b。量化单元58对矢量运算电路52的输出数据(16位/元素)进行量化运算层220中的量化层224的运算(式6)。量化单元58从量化参数存储器51读取需要的量化参数q(th0,th1,th2),利用比较器58a进行对输入in(di)和量化参数q的比较。量化单元58利用编码器58b将比较器58a的比较结果量化为2位/元素。由于式4中的α(c)和β(c)为针对每个变量c而不同的参数,因此反映α(c)和β(c)的量化参数q(th0,th1,th2)为针对每个in(di)而不同的参数。
量化单元58将输入in(di)与3个阈值th0、th1、th2进行比较,从而将输入in(di)分类到4个区域(例如in≤th0、th0<in≤th1、th1<in≤th2、th2<in),将分类结果编码为2位并输出。量化单元58根据量化参数q(th0,th1,th2)的设定,还能够与量化一并进行批量归一化、激活函数的运算。
量化单元58通过将阈值th0设定为式4的β(c)、将阈值之差(th1-th0)及(th2-th1)设定为式4的α(c)来进行量化,由此能够与量化一并实施式4所示的批量归一化的运算。能够通过增大(th1-th0)及(th2-th1)来减小α(c)。能够通过减小(th1-th0)及(th2-th1)来增大α(c)。
量化单元58能够将激活函数的ReLU运算与输入in(di)的量化一并实施。例如,量化单元58在in(di)≤th0及th2<in(di)的区域中使输出值饱和。量化单元58通过以使输出为非线性的方式设定量化参数q,从而能够将激活函数的运算与量化一并实施。
状态控制器54控制矢量运算电路52及量化电路53的状态。另外,状态控制器54经由内部总线IB与控制器6连接。状态控制器54具有命令队列55和控制电路56。
命令队列55为保存量化运算电路5用的命令指令C5的队列,例如由FIFO存储器构成。经由内部总线IB在命令队列55中写入命令指令C5。
控制电路56为对命令指令C5进行解码并基于命令指令C5控制矢量运算电路52及量化电路53的状态机。控制电路56为与卷积运算电路4的状态控制器44的控制电路46同样的结构。
量化运算电路5将具有Bd个元素的量化运算输出数据写入到第一存储器1。此外,式7中示出Bd与Bc的优选关系。在式7中n为整数。
[数学式7]
Bd=2n·Bc……(式7)
执行模型生成部321根据作为网络信息NW被输入的量化信息,决定量化运算电路5中的、池化运算的有无及种类(平均池化、MAX池化等)、批量归一化运算的有无及方式、激活函数运算的有无及方式(ReLU运算等)、量化的方式(位数等)以及有无其它运算。在硬件信息HW中包含要生成的NN执行模型100(神经网络硬件模型400、神经网络硬件600)的硬件规模时,执行模型生成部321与所指定的规模相配合地调整量化运算电路5中的运算器的结构。
<DMAC生成工序(S13-3)>
执行模型生成部321基于硬件信息HW和网络信息NW生成NN执行模型100的DMAC 3(DMAC生成工序)。执行模型生成部321根据作为网络信息NW被输入的信息,生成DMAC 3的硬件模型。硬件模型可以为行为级,也可以为RTL(Register Transfer Level,寄存器传输级),也可以为表示门、电路模块之间的连接的网络列表,还可以为它们的组合。以下,说明生成的DMAC 3的硬件模型的一例。
图18为生成的DMAC 3的内部框图。
DMAC 3具有数据转发电路31和状态控制器32。DMAC 3具有针对数据转发电路31的专用的状态控制器32,当被输入命令指令时,无需外部的控制器而能够实施DMA数据转发。
数据转发电路31连接于外部总线EB,进行DRAM等外部存储器与第一存储器1之间的DMA数据转发。另外,数据转发电路31进行DRAM等外部存储器与第二存储器2之间的DMA数据转发。另外,数据转发电路31进行DRAM等外部存储器与卷积运算电路4之间的数据转发。另外,数据转发电路31进行DRAM等外部存储器与量化运算电路5之间的数据转发。数据转发电路31的DMA通道数量不受限制。例如,可以针对第一存储器1和第二存储器2分别具有专用的DMA通道。
状态控制器32控制数据转发电路31的状态。另外,状态控制器32经由内部总线IB与控制器6连接。状态控制器32具有命令队列33和控制电路34。
命令队列33为保存有DMAC 3用的命令指令C3的队列,例如由FIFO存储器构成。经由内部总线IB在命令队列33中写入1个以上命令指令C3。
控制电路34为对命令指令C3进行解码并基于命令指令C3依次控制数据转发电路31的状态机。控制电路34为与卷积运算电路4的状态控制器44的控制电路46同样的结构。
执行模型生成部321根据作为网络信息NW被输入的信息,决定DMAC 3中的DMA通道数量、数据总线宽度等。
例如,执行模型生成部321生成与主机侧的外部总线EB的规格相配合的规格(数据总线宽度等)的DMAC 3。能够通过增加数据总线宽度、DMA通道数量来使外部存储器与第一存储器1和第二存储器2的数据传输速度提高。
<学习工序(S14)>
在步骤S14中,神经网络生成装置300的学习部322及推断部323使用学习数据集DS,对生成的NN执行模型100的学习参数进行学习(学习工序)。学习工序(S14)具有例如已学习参数生成工序(S14-1)和推断测试工序(S14-2)。
<学习工序:已学习参数生成工序(S14-1)>
学习部322使用NN执行模型100及学习数据D1,生成已学习参数PM。已学习参数PM为已学习的权重w及量化参数q等。
例如,在NN执行模型100为实施图像识别的CNN 200的执行模型时,学习数据D1为输入图像与教师数据T的组合。输入图像为被输入到CNN 200的输入数据a。教师数据T为图像中拍摄到的被摄体的种类、图像中有无检测对象物、图像中的检测对象物的坐标值等。
学习部322通过基于作为公知技术的误差反向传播法等的有监督学习,生成已学习参数PM。学习部322利用损失函数(误差函数)求出NN执行模型100针对输入图像的输出与对应于输入图像的教师数据T之差分E,以使差分E变小的方式更新权重w及量化参数q。
例如在更新权重w时,使用与权重w相关的损失函数的梯度。梯度例如通过对损失函数进行微分来计算。在使用误差反向传播法时,通过反向传番(backward)来计算梯度。
在计算梯度来更新权重w时,学习部322使与卷积运算关联的运算的精度变高。具体而言,在学习中使用比NN执行模型100所使用的低位的权重w(例如1位)的精度高的32位浮点型的权重w。另外,使在NN执行模型100的卷积运算电路4中实施的卷积运算的精度变高。
在计算梯度来更新权重w时,学习部322使与激活函数关联的运算的精度变高。具体而言,在学习中使用比在NN执行模型100的量化运算电路5中实施的ReLU函数等激活函数的精度高的sigmond函数。
另一方面,在利用正向传播(forward)计算针对输入图像的输出数据时,学习部322不使与卷积运算及激活函数关联的运算的精度变高而实施基于NN执行模型100的运算。利用查找表等将在更新权重w时使用的高精度的权重w变为低位。
在计算梯度来更新权重w时,学习部322通过使与卷积运算及激活函数关联的运算的精度变高,来防止运算中的中间数据的精度下降,能够生成可实现高推断精度的已学习参数PM。
另一方面,在计算针对输入图像的输出数据时,学习部322不使正向传播(forward)的运算的精度变高而实施基于NN执行模型100的运算。由此,学习部322计算出的输出数据与使用生成的已学习参数PM的NN执行模型100的输出数据一致。
<学习工序:推断测试工序(S14-2)>
推断部323使用学习部322生成的已学习参数PM、NN执行模型100及测试数据D2来实施推断测试。例如,在NN执行模型100为实施图像识别的CNN 200的执行模型时,测试数据D2与学习数据D1同样地为输入图像与教师数据T的组合。
推断部323在显示部350显示推断测试的进展及结果。推断测试的结果为例如针对测试数据D2的正解率。
<确认工序(S15)>
在步骤S15中,神经网络生成装置300的推断部323使显示部350显示提醒使用者从操作输入部360输入与结果相关的确认的消息、信息输入所需的GUI图像。使用者从操作输入部360输入是否允许推断测试的结果。在从操作输入部360输入了表示使用者允许推断测试的结果这一情况的输入时,神经网络生成装置300接着实施步骤S16。在从操作输入部360输入了表示使用者不允许推断测试的结果这一情况的输入时,神经网络生成装置300再次实施步骤S12。此外,神经网络生成装置300也可以返回直至步骤S11,使使用者重新输入硬件信息HW。
<输出工序(S16)>
在步骤S16中,神经网络生成装置300的硬件生成部324基于硬件信息HW及NN执行模型100生成神经网络硬件模型400。
<软件生成工序(S17)>
在步骤S17中,神经网络生成装置300的软件生成部325基于网络信息NW及NN执行模型100等,生成使神经网络硬件600(将神经网络硬件模型400安装于工作对象硬件而成的装置)工作的软件500。软件500包括根据需要将已学习参数PM转发到神经网络硬件600的软件。
软件生成工序(S17)例如具有输入数据分割工序(S17-1)、网络分割工序(S17-2)和分配工序(S17-3)。
<输入数据分割工序(S17-1):数据分割>
软件生成部325基于被分配作为第一存储器1及第二存储器2的存储器的存储器容量、运算器的规格、尺寸(Bc、Bd)等,将卷积层210的卷积运算的输入数据a分割为部分张量。分割成部分张量的分割方法、分割数量没有特别限制。部分张量例如通过将输入数据a(x+i,y+j,c)分割为a(x+i,y+j,co)来形成。
图19为说明卷积运算的数据分割、数据展开的图。
在卷积运算的数据分割中,如式8所示,式1中的变量c按照尺寸Bc的块被分割。另外,如式9所示,式1中的变量d按照尺寸Bd的块被分割。在式8中,co为偏移量,ci为0至(Bc-1)的索引。在式9中,do为偏移量,di为0至(Bd-1)的索引。此外,尺寸Bc与尺寸Bd可以为相同。
[数学式8]
c=co·Bc+ci……(式8)
[数学式9]
d=do·Bd+di……(式9)
式1中的输入数据a(x+i,y+j,c)在c轴方向上按照尺寸Bc被分割,用分割后的输入数据a(x+i,y+j,co)来表示。在以后的说明中,也将分割后的输入数据a称为“分割输入数据a”。
式1中的权重w(i,j,c,d)在c轴方向上按照尺寸Bc被分割并且在d轴方向上按照尺寸Bd被分割,用分割后的权重w(i,j,co,do)来表示。在以后的说明中,也将分割后的权重w称为“分割权重w”。
按照尺寸Bd分割后的输出数据f(x,y,do)通过式10来求出。能够通过组合分割后的输出数据f(x,y,do)来计算最终的输出数据f(x,y,d)。
[数学式10]
<输入数据分割工序(S17-1):数据展开>
软件生成部325在NN执行模型100的卷积运算电路4中展开分割后的输入数据a及权重w。
分割输入数据a(x+i,y+j,co)被展开为具有Bc个元素的矢量数据。分割输入数据a的元素用ci来被索引(0≤ci<Bc)。在以后的说明中,按照每个i、j被展开为矢量数据的分割输入数据a也称为“输入矢量A”。输入矢量A以分割输入数据a(x+i,y+j,co×Bc)至分割输入数据a(x+i,y+j,co×Bc+(Bc-1))作为元素。
分割权重w(i,j,co,do)被展开为具有Bc×Bd个元素的矩阵数据。被展开为矩阵数据的分割权重w的元素用ci和di来被索引(0≤di<Bd)。在以后的说明中,按照每个i、j被展开为矩阵数据的分割权重w也称为“权重矩阵W”。权重矩阵W以分割权重w(i,j,co×Bc,do×Bd)至分割权重w(i,j,co×Bc+(Bc-1),do×Bd+(Bd-1))作为元素。
通过将输入矢量A与权重矩阵W相乘来计算矢量数据。通过将针对每个i、j、co计算出的矢量数据整形为三维张量,能够得到输出数据f(x,y,do)。通过进行这样的数据展开,能够利用矢量数据与矩阵数据的乘法运算来实施卷积层210的卷积运算。
例如假设输入数据a的大小为X×Y×C,权重w的大小为K×K×C×D,输出数据f的大小为X×Y×D。能够通过将在c轴方向上以尺寸Bc分割后的输入数据a(x+i,y+j,co)和按照尺寸Bc及Bd分割后的权重w(i,j,co,do)针对每个i、j、co进行卷积运算并相加来计算在d轴方向上以尺寸Bd分割后的输出数据f(x,y,do)。
在输出数据f的元素为16位时,在d轴方向上以尺寸Bd分割后的输出数据f(x,y,do)的尺寸为16·X·Y·Bd位。另一方面,在输入数据a的元素为2位时,为了计算以Bd分割后的输出数据f所需的输入数据a的尺寸为2·X·Y·Bc位。另外,在权重w的元素为1位时,为了计算以Bd分割后的输出数据f所需的权重w的尺寸为1·K·K·Bc·Bd位。
软件生成部325基于被分配作为第一存储器1及第二存储器2的存储器的存储器容量、运算器的规格、尺寸(Bc、Bd)等,将输入数据a分割为用神经网络硬件600容易运算的单位(部分张量)。软件生成部325例如将输入数据a分割为部分张量,以使得多个分割后的输入数据a(2·X·Y·Bc位)被保存于第一存储器1。软件生成部325针对每层来分割输入数据a。此外,关于用神经网络硬件600容易运算的单位,基于能够由神经网络硬件600并行运算的运算器的数量、第一存储器1或第二存储器2的容量、频带、耗电量、运算频率等来决定。例如,在能够并行运算的运算器的数量多时,优选的是输入数据a的分割数量少。
<网络分割工序(S17-2)>
软件生成部325将CNN 200的网络(层)分割并映射于形成为环状的卷积运算电路4和量化运算电路5(网络分割工序)。
图20至图23为说明网络分割工序的图。在本实施方式中,说明实施三次由卷积运算和量化运算构成的运算(实施层1至层6)的例子。在以后的说明中,将被输入到卷积运算电路4的层n的输入数据a称为“a[n]”。另外,将从卷积运算电路4输出的层n的输出数据f称为“f[n]”。将从量化运算电路5输出的量化运算的输出数据(量化运算输出数据)out称为“out[n]”。
在输入数据分割工序(S17-1)中,软件生成部325将输入到卷积运算电路4的层1的输入数据a[1]例如分割为“第一部分张量a[1]1”和“第二部分张量a[1]2”。
软件生成部325选择分割后的输入数据a[1]当中的DMAC 3转发到第一存储器1的数据。软件生成部325与卷积运算的顺序相配合地选择能够对第一存储器1的未使用区域转发的数据。
由于卷积运算的性质,在针对第一部分张量a[1]1的卷积运算中,需要第二部分张量a[1]2当中的与第一部分张量a[1]1邻接的部分区域(以后也称为“重复区域R(R1)”)。由此,在实施针对第一部分张量a[1]1的卷积运算时,重复区域R(R1)的数据也与第一部分张量a[1]1一并被读取并保存于第一存储器1。软件生成部325例如以易于进行存储器寻址的形态使第一部分张量a[1]1包含重复区域R(R1)。
同样地,在针对第二部分张量a[1]2的卷积运算中,需要第一部分张量a[1]1当中的与第二部分张量a[1]2邻接的部分区域(以后也称为“重复区域R(R2)”)。由此,在实施针对第二部分张量a[1]2的卷积运算时,重复区域R(R2)的数据也与第二部分张量a[1]2一并被读取并保存于第一存储器1。软件生成部325例如以易于进行存储器寻址的形态使第二部分张量a[1]2包含重复区域R(R2)。
卷积运算具有每次实施运算时数据尺寸变小的性质。由此,卷积运算的连续数量越增加,则最初在第一存储器1中保存的与部分张量相配合地读取的重复区域R越大。卷积运算的连续数量越增加则运算效率越高。另一方面,当重复区域R变大时,伴随于每个部分张量读取的重复区域R的数据尺寸增加,重复的数据的存储器转发回送增加。
软件生成部325考虑能够对第一存储器1的未使用区域转发的邻接区域R的数据量来决定卷积运算的连续数量。在本实施方式中,软件生成部325选择为将由卷积运算和量化运算构成的运算连续实施两次(实施层1至层4)。
如图20所示,被输入第一部分张量a[1]1的卷积运算电路4经由第二存储器2对量化运算电路5输出层1的卷积运算的输出数据f[1]1。被输入f[1]1的量化运算电路5对第一存储器1输入层2的量化运算的输出out[2]1。
如图21所示,被输入第二部分张量a[1]2的卷积运算电路4经由第二存储器2对量化运算电路5输出层1的卷积运算的输出数据f[1]2。被输入f[1]2的量化运算电路5对第一存储器1输入层2的量化运算的输出out[2]2。
层2的量化运算的输出out[2]1和层2的量化运算的输出out[2]2被合并而成为层2的量化运算的输出out[2]。
层2的量化运算的输出out[2]包括层3的卷积运算的全部输入数据a[3]。这是因为,与在第一存储器1保存的第一部分张量a[1]1及第二部分张量a[1]2伴随的重复区域R(R1,R2)以使得能够实施层1至层4的方式被选择。
软件生成部325基于在输入数据分割工序(S17-1)中决定的分割单位,将作为层2的量化运算的输出out[2]的、被输入到卷积运算电路4的层3的输入数据a输入数据a[3]分割为例如“第一部分张量a[3]1”和“第二部分张量a[3]2”。
如图22所示,被输入第一部分张量a[3]1的卷积运算电路4经由第二存储器2对量化运算电路5输出层3的卷积运算的输出数据f[3]1。被输入f[3]1的量化运算电路5对第一存储器1输入层4的量化运算的输出out[4]1。
在此,用于存储输出out[4]1的第一存储器1的存储器区域中已经存在输入数据a[1]1。通过释放第一存储器1中已使用的存储器区域当中最长时间未被参照的存储器区域,来确保保持输出数据f的存储器区域。在本实施方式中,由于输入数据a[1]1未被参照的时间最长,因此释放该存储器区域。另外,在需要另行保存被释放的存储器区域中保持过的数据时,在该存储器区域释放之前将该数据保存于外部存储器。
如图23所示,被输入第二部分张量a[3]2的卷积运算电路4经由第二存储器2对量化运算电路5输出层1的卷积运算的输出数据f[3]2。被输入f[3]2的量化运算电路5对第一存储器1输入层4的量化运算的输出out[4]2。
层4的量化运算的输出out[4]并不包括层5的卷积运算的全部输入数据a[5]。这是因为,与保存于第一存储器1的第一部分张量a[1]1及第二部分张量a[1]2伴随的重复区域R(R1,R2)以使得能够实施层1至层4的方式被选择。
于是,使用DMAC 3而层4的量化运算的输出out[4]被保存于外部存储器。CNN 200的网络(层)在层4与层5之间被分割。
软件生成部325使用外部主机CPU等实施对根据需要被保存于外部存储器的输出out[4]的数据整形等,对软件500追加使得生成层5的输入数据a[5]的代码。
软件生成部325将被输入到卷积运算电路4的层1的输入数据a[5]分割为例如“第一部分张量a[5]1”和“第二部分张量a[5]2”。在此,第一部分张量a[5]1、第二部分张量a[5]2中包含考虑了以后将实施的卷积运算的连续数量的重叠区域R。
软件生成部325对CNN 200整体实施上述那样的对CNN 200的网络(层)的分割。软件生成部325以使利用DMAC 3进行的第一存储器1与外部存储器之间的存储器转发尽可能变少的方式实施对CNN 200的网络(层)的分割。
在CNN 200中包含变更输入数据a的张量形状的运算的情况下,也在该运算之前分割网络(层)。作为变更输入数据a的张量形状的运算,例如为使输入数据a的深度方向(c轴方向)变短并在平面方向(xy轴方向)上扩展的运算、进行张量(数据)的合并的运算等。
另外,在CNN 200中包含步幅大于1的卷积运算情况下,也在该卷积运算之后分割网络(层)。这是由于在步幅大于1的卷积运算前后,数据的分割尺寸改变。优选的是,在卷积运算的输出数据f的x轴方向或y轴方向的尺寸与卷积运算的输入数据a相比发生一定以上(例如2倍以上、0.5倍以下等)的变化时,在该卷积运算之后分割网络(层)。
在上述的例子中,基于第一存储器1的容量来分割CNN 200的网络(层),省略了对基于第二存储器2的容量的分割的说明。软件生成部325基于第一存储器1及第二存储器2的容量来分割CNN 200的网络(层)。
此外,在本实施方式的网络分割工序(S17-2)中,可以是软件生成部325例如假定第一存储器1和第二存储器2相对于输入数据a具有足够大的容量等,实施对CNN 200的网络(层)的粗略分割。例如在需要分割网络(层)的上述运算的前后实施粗略分割。通过在粗略分割之后,实施上述的基于第一存储器1和第二存储器2的容量对网络(层)的分割(分段性网络分割),从而能够抑制网络分割工序(S17-2)的复杂化。
<分配工序(S17-3)>
软件生成部325生成将分割后的运算分配给神经网络硬件600并使之实施的软件500(分配工序)。生成的软件500包括命令指令C3、命令指令C4及命令指令C5。
图24为示出被分配有分割后的运算的神经网络硬件600的时序图的图。软件生成部325原则上按照网络(层)顺序将分割后的运算分配给神经网络硬件600。
在图24所示的例子中,生成将输入数据a[1]从外部存储器转发到第一存储器1的DMAC 3用的命令指令C3。接下来,生成对第一部分张量a[1]1实施卷积运算的卷积运算电路4用的命令指令C4和对输出f[1]1实施量化运算的量化运算电路5用的命令指令C5(图20所示的运算)。接下来,生成对第一部分张量a[1]2实施卷积运算的卷积运算电路4用的命令指令C4和对输出f[1]2实施量化运算的量化运算电路5用的命令指令C5(图21所示的运算)。
接下来,同样地生成对作为层2的量化运算的输出out[2]的、被输入到卷积运算电路4的层3的输入数据a[3]进行运算的命令指令C4和命令指令C5(图22及图23所示的运算)。
接下来,生成将输出out[4]从第一存储器1转发到外部存储器的DMAC 3用的命令指令C3。而且,生成将输入数据a[5]从外部存储器转发到第一存储器1的DMAC 3用的命令指令C3。
接下来,同样地生成对输入数据a[5]进行运算的命令指令C4与命令指令C5。
命令指令C3、命令指令C4及命令指令C5包括控制信号量S的指令。
软件生成部325以使利用DMAC 3进行的第一存储器1与外部存储器之间的存储器转发尽可能变少的方式实施对CNN 200的网络(层)的分割。因此,由于利用DMAC 3进行的存储器转发而使卷积运算电路4、量化运算电路5等待的期间变短,神经网络硬件600的工作效率提高。
在NN执行模型100中,由于电路被形成为环状,软件500包括根据需要适当更新在各层发生变化的卷积运算电路4、量化运算电路5中的参数的程序。
此外,软件生成部325通过与神经网络硬件600相配合地组合多个指令C3、C4、C5来实现分割后的网络(层)的各个运算。例如,关于权重w的尺寸为3x3的卷积运算,通过与神经网络硬件600相配合地将权重w的尺寸为1x1的卷积运算组合9次来实现。另外,也能够通过一个命令指令来实现分割网络时分割出的多个工作。例如可以利用将命令指令C3与C4合并后的命令指令,来控制卷积运算电路4及量化运算电路5的工作。在该情况下,在神经网络硬件600中,合并后的命令指令被替换为卷积运算电路4及量化运算电路5的工作来执行。
在CNN 200的运算中包含利用神经网络硬件600无法实施的运算时,关于软件500,对软件500追加使外部运算设备对利用神经网络硬件600无法实施的运算进行运算的代码。软件500将中间数据转发到外部主机CPU等外部运算设备,使外部运算设备实施运算。软件500将外部运算设备得到的运算结果输入到第一存储器1、第二存储器2,使神经网络硬件600重新进行针对外部运算设备得到的运算结果的运算。
图25为示出对神经网络硬件600的其它分配例的时序图。
如图25所示,与第一部分张量a1对应的卷积运算及量化运算和与第二部分张量a2对应的卷积运算及量化运算能够独立地实施。于是,软件生成部325可以改换网络(层)的一部分的顺序而对神经网络硬件600分配分割后的运算。
卷积运算电路4进行与第一部分张量a1对应的层2M-1的卷积运算(在图26中为用层2M-1(a1)表示的运算)。之后,卷积运算电路4进行与第二部分张量a2对应的层2M-1的卷积运算(在图25中为用层2M-1(a2)表示的运算)。另外,量化运算电路5进行与第一部分张量a1对应的层2M的量化运算(在图25中为用层2M(a1)表示的运算)。像这样,NN执行模型100能够并行实施与第二部分张量a2对应的层2M-1的卷积运算和与第一部分张量a1对应的层2M的量化运算。
接下来,卷积运算电路4进行与第一部分张量a1对应的层2M+1的卷积运算(在图25中为用层2M+1(a1)表示的运算)。另外,量化运算电路5进行与第二部分张量a2对应的层2M的量化运算(在图25中为用层2M(a2)表示的运算)。像这样,NN执行模型100能够并行实施与第一部分张量a1对应的层2M+1的卷积运算和与第二部分张量a2对应的层2M的量化运算。
通过将输入数据a分割为部分张量,神经网络硬件600能够使卷积运算电路4和量化运算电路5并行地工作。其结果是,卷积运算电路4和量化运算电路5待机的时间缩减,神经网络硬件600的运算处理效率提高。虽然在图25所示的工作例中分割成部分张量的数量为2,但在分割数量大于2时也是同样的,神经网络硬件600能够使卷积运算电路4和量化运算电路5并行地工作。
此外,作为对于部分张量的运算方法,示出了如下例子(方法1):在用卷积运算电路4或量化运算电路5进行同一层中的部分张量的运算之后,进行下一层中的部分张量的运算。例如,如图25所示,在卷积运算电路4,在进行与第一部分张量a1及第二部分张量a2对应的层2M-1的卷积运算(在图25中为用层2M-1(a1)及层2M-1(a2)表示的运算)之后,实施与第一部分张量a1及第二部分张量a2对应的层2M+1的卷积运算(在图25中为用层2M+1(a1)及层2M+1(a2)表示的运算)。
然而,对于部分张量的运算方法不限于此。对于部分张量的运算方法也可以为如下方法:在多个层中进行对一部分的部分张量的运算之后,实施对剩余部分的部分张量的运算(方法2)。例如,在卷积运算电路4,可以在进行与第一部分张量a1对应的层2M-1及与第一部分张量a1对应的层2M+1的卷积运算之后,实施与第二部分张量a2对应的层2M-1及与第二部分张量a2对应的层2M+1的卷积运算。
另外,对于部分张量的运算方法可以为组合方法1和方法2对部分张量进行运算的方法。不过在使用方法2时,需要根据与部分张量的运算顺序相关的依存关系来实施运算。
此外,除了与部分张量的运算顺序相关的依存关系以外,还基于第一存储器1、第二存储器2的未使用区域判断可否实施上述的部分张量的并行运算。在第一存储器1、第二存储器2中没有并行运算所需的未使用区域时,实施如下控制:对并行运算的部分运算不并行实施而以时分方式实施。
例如,在针对相同的输入数据a改变权重w来实施卷积运算时,连续实施使用相同输入数据a的卷积运算的效率更高。由此,软件生成部325以尽可能使得使用保存于第一存储器1、第二存储器2的相同数据的运算连续的方式,改换分割后的运算的顺序。
如以上说明的那样,根据本实施方式的神经网络生成装置300及神经网络控制方法,能够生成及控制可嵌入于IoT设备等嵌入式设备且能够被使得进行高性能工作的神经网络。根据本实施方式的软件生成程序,能够生成使神经网络生成装置300高效且高速地工作的软件500。
以上参照附图对本发明的第一实施方式进行了详细说明,而具体结构不限于该实施方式,还包含不脱离本发明主旨的范围内的设计变更等。另外,在上述实施方式及变形例中示出的构成要素能够适当组合来构成。
(变形例1)
在上述实施方式中,第一存储器1和第二存储器2为分开的存储器,而第一存储器1和第二存储器2的形态不限于此。第一存储器1和第二存储器2例如可以为同一存储器中的第一存储器区域和第二存储器区域。
(变形例2)
例如,被输入到上述实施方式所记载的NN执行模型100、神经网络硬件600的数据不限于单一格式,而能够以静止图像、动态图像、语音、文字、数值及它们的组合来构成。此外,被输入到NN执行模型100、神经网络硬件600的数据不限于可被搭载于设置有神经网络硬件600的边缘设备的光传感器、温度计、全球定位系统(Global Positioning System,GPS)测量仪、角速度测量仪、风速计等等物理量测量器的测量结果。也可以将从周边设备经由有线或无线通信而接收的基站信息、车辆/船舶等的信息、天气信息、与拥堵状况有关的信息等周边信息、金融信息、个人信息等不同信息进行组合。
(变形例3)
设想设置有神经网络硬件600的边缘设备是由电池等驱动的移动电话等通信设备、个人计算机等智能设备、数码相机、游戏设备、机器人产品等移动设备,但不限于此。即使在对用以太网供电(Power on Ethernet,PoE)等的可供给峰值功率限制、降低产品发热或长时间驱动的要求高的产品中利用,也能够得到其它现有例子没有的效果。例如,通过应用于在车辆和船舶等搭载的车载相机、在公共设施和街道上等设置的监视相机等,不仅能够实现长时间的拍摄,还有助于轻量化和高耐用化。另外,通过应用于电视和显示器等显示装置、医疗相机和手术机器人等医疗设备、制造现场和建筑现场中使用的作业机器人等,也能够达到同样效果。
也可以将上述的实施方式的程序记录于计算机可读取的记录介质,使计算机系统读入并执行记录于该记录介质的程序来实现。此外,假设此处所称“计算机系统”包括OS和外围设备等的硬件。另外,“计算机可读取的记录介质”是指软盘、磁光盘、ROM、CD-ROM等可移动介质、内置于计算机系统的硬盘等存储装置。并且所谓“计算机可读取的记录介质”还可以包括:如经由因特网等网络和电话线路等通信线路发送程序时的通信线那样,在短时间内动态地保持程序的介质,如作为这种情况时的服务器和客户端的计算机系统内部的易失性存储器那样,将程序保持一定时间的介质。另外上述程序可以为用于实现前述的功能的一部分的程序,还可以为通过与已记录于计算机系统的程序的组合来实现前述的功能的程序。
另外,本说明书记载的效果仅为说明性或例示性的,而非限定性的。也就是说,本公开的技术可以与上述效果一起、或者代替上述效果而达到根据本说明书的记载对本领域技术人员而言显而易见的其它效果。
工业适用性
本发明能够应用于神经网络的生成。
Claims (16)
1.一种神经网络生成装置,生成对神经网络进行运算的神经网络执行模型,该神经网络生成装置具备:
执行模型生成部,基于所述神经网络执行模型进行工作的硬件的硬件信息和所述神经网络的网络信息来生成所述神经网络执行模型;以及
软件生成部,生成使将所述神经网络执行模型安装于所述硬件而成的神经网络硬件工作的软件。
2.根据权利要求1所述的神经网络生成装置,其中,
所述软件生成部生成将所述神经网络分割而使所述神经网络硬件进行运算的所述软件。
3.根据权利要求2所述的神经网络生成装置,其中,
所述软件生成部生成将对所述神经网络的输入数据分割为部分张量而使所述神经网络硬件进行运算的所述软件。
4.根据权利要求3所述的神经网络生成装置,其中,
所述软件生成部基于使所述神经网络硬件实施的连续的卷积运算的连续数量来分割所述神经网络。
5.根据权利要求4所述的神经网络生成装置,其中,
所述神经网络硬件具有保存所述部分张量的存储器,
所述软件生成部生成如下软件:该软件在实施所述连续的卷积运算之前,将所述连续的卷积运算所需的数据从外部存储器向所述存储器进行存储器转发。
6.根据权利要求5所述的神经网络生成装置,其中,
所述软件生成部基于所述存储器的未使用区域的数据量,决定所述连续的卷积运算的所述连续数量。
7.根据权利要求3所述的神经网络生成装置,其中,
所述神经网络硬件具有保存所述部分张量的存储器,
所述软件生成部生成如下软件:该软件在所述运算所需的所述部分张量未保存于所述存储器时,在实施所述运算之前将所述运算所需的所述部分张量从外部存储器向所述存储器进行存储器转发。
8.根据权利要求2至5中任一项所述的神经网络生成装置,其中,
所述软件生成部将分割后的所述神经网络的运算分配给所述神经网络硬件。
9.一种神经网络控制方法,控制对神经网络进行运算的神经网络硬件,其中,
将所述神经网络分割而使所述神经网络硬件进行运算。
10.根据权利要求9所述的神经网络控制方法,其中,
通过将对所述神经网络的输入数据分割为部分张量来分割所述神经网络。
11.根据权利要求10所述的神经网络控制方法,其中,
基于使所述神经网络硬件实施的卷积运算的连续数量来分割所述神经网络。
12.根据权利要求9至11中任一项所述的神经网络控制方法,其中,
将分割后的所述神经网络的运算分配给所述神经网络硬件。
13.一种软件生成程序,为生成控制对神经网络进行运算的神经网络硬件的软件的程序,其中,
该程序使计算机生成将所述神经网络分割而使所述神经网络硬件进行运算的所述软件。
14.根据权利要求13所述的软件生成程序,其中,
通过将对所述神经网络的输入数据分割为部分张量来分割所述神经网络。
15.根据权利要求14所述的软件生成程序,其中,
基于使所述神经网络硬件实施的卷积运算的连续数量来分割所述神经网络。
16.根据权利要求13至15中任一项所述的软件生成程序,其中,
通过将分割后的所述神经网络的运算分配给所述神经网络硬件来使计算机生成所述软件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020-175606 | 2020-10-19 | ||
JP2020175606A JP2022066974A (ja) | 2020-10-19 | 2020-10-19 | ニューラルネットワーク生成装置、ニューラルネットワーク制御方法およびソフトウェア生成プログラム |
PCT/JP2021/038530 WO2022085661A1 (ja) | 2020-10-19 | 2021-10-19 | ニューラルネットワーク生成装置、ニューラルネットワーク制御方法およびソフトウェア生成プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116348883A true CN116348883A (zh) | 2023-06-27 |
Family
ID=81290555
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180070438.5A Pending CN116348883A (zh) | 2020-10-19 | 2021-10-19 | 神经网络生成装置、神经网络控制方法以及软件生成程序 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240037412A1 (zh) |
JP (1) | JP2022066974A (zh) |
CN (1) | CN116348883A (zh) |
WO (1) | WO2022085661A1 (zh) |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190286973A1 (en) * | 2018-03-14 | 2019-09-19 | Microsoft Technology Licensing, Llc | Hardware accelerated neural network subgraphs |
-
2020
- 2020-10-19 JP JP2020175606A patent/JP2022066974A/ja active Pending
-
2021
- 2021-10-19 CN CN202180070438.5A patent/CN116348883A/zh active Pending
- 2021-10-19 WO PCT/JP2021/038530 patent/WO2022085661A1/ja active Application Filing
- 2021-10-19 US US18/249,316 patent/US20240037412A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
JP2022066974A (ja) | 2022-05-02 |
WO2022085661A1 (ja) | 2022-04-28 |
US20240037412A1 (en) | 2024-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106228238B (zh) | 现场可编程门阵列平台上加速深度学习算法的方法和系统 | |
JP6977864B2 (ja) | 推論装置、畳み込み演算実行方法及びプログラム | |
JP2020074099A (ja) | 処理装置と処理方法 | |
KR102521054B1 (ko) | 조기 중단에 기반한 심층 신경망의 연산 제어 방법 및 시스템 | |
CN110008952B (zh) | 一种目标识别方法及设备 | |
TW202014939A (zh) | 修改機器學習模型以改善局域性 | |
WO2022163861A1 (ja) | ニューラルネットワーク生成装置、ニューラルネットワーク演算装置、エッジデバイス、ニューラルネットワーク制御方法およびソフトウェア生成プログラム | |
WO2021210527A1 (ja) | ニューラルネットワーク回路の制御方法 | |
CN113537479A (zh) | 神经网络电路、边缘设备以及神经网络运算方法 | |
CN116795324A (zh) | 混合精度浮点乘法装置和混合精度浮点数处理方法 | |
CN117112165A (zh) | 虚拟现实应用任务的处理方法、装置、虚拟现实系统 | |
CN116348883A (zh) | 神经网络生成装置、神经网络控制方法以及软件生成程序 | |
WO2022004815A1 (ja) | ニューラルネットワーク生成装置、ニューラルネットワーク生成方法およびニューラルネットワーク生成プログラム | |
US11586910B1 (en) | Write cache for neural network inference circuit | |
JP2023154880A (ja) | ニューラルネットワーク生成方法およびニューラルネットワーク生成プログラム | |
WO2022230906A1 (ja) | ニューラルネットワーク生成装置、ニューラルネットワーク演算装置、エッジデバイス、ニューラルネットワーク制御方法およびソフトウェア生成プログラム | |
KR102667790B1 (ko) | 뉴럴 네트워크 회로, 에지 디바이스 및 뉴럴 네트워크 연산 방법 | |
WO2024038662A1 (ja) | ニューラルネットワーク学習装置およびニューラルネットワーク学習方法 | |
WO2023058422A1 (ja) | ニューラルネットワーク回路およびニューラルネットワーク回路の制御方法 | |
JP2023006509A (ja) | ソフトウェア生成装置およびソフトウェア生成方法 | |
JP2022114698A (ja) | ニューラルネットワーク生成装置、ニューラルネットワーク制御方法およびソフトウェア生成プログラム | |
JP2022183833A (ja) | ニューラルネットワーク回路およびニューラルネットワーク演算方法 | |
WO2024111644A1 (ja) | ニューラルネットワーク回路およびニューラルネットワーク演算方法 | |
WO2023139990A1 (ja) | ニューラルネットワーク回路およびニューラルネットワーク演算方法 | |
JP2022105437A (ja) | ニューラルネットワーク回路およびニューラルネットワーク演算方法 |
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 |