神经网络生成装置、神经网络运算装置、边缘设备、神经网络控制方法以及软件生成程序与流程

未命名 09-18 阅读:137 评论:0


1.本发明涉及神经网络生成装置、神经网络运算装置、边缘设备、神经网络控制方法以及软件生成程序。本技术基于2021年02月01日在日本技术的特愿2021-014621号主张优先权,在此引用其内容。


背景技术:

2.近年来,卷积神经网络(convolutional neural network:cnn)被作为图像识别等的模型来使用。卷积神经网络为具有卷积层、池化层的多层构造,需要卷积运算等大量运算。已设计出各种使基于卷积神经网络的运算高速化的运算方法(专利文献1等)。
3.现有技术文献
4.专利文献
5.专利文献1:日本特开2018-077829号公报


技术实现要素:

6.发明所要解决的技术课题
7.另一方面,在iot设备等嵌入式设备中也已使用利用卷积神经网络的图像识别等。为了使卷积神经网络在嵌入式设备中高效地工作,需要生成与嵌入式设备的硬件结构相配合的进行神经网络的运算的电路、模型。另外,需要使这些电路、模型高效且高速地工作的控制方法。另外,需要生成使这些电路、模型高效且高速地工作的软件的软件生成程序。
8.鉴于上述情况,本发明的目的在于提供:生成可嵌入于iot设备等嵌入式设备、且能够被使得进行高效且高速的工作的进行神经网络的运算的电路、模型的神经网络生成装置、能够被使得进行高效且高速的工作的进行神经网络的运算的神经网络运算装置、包括神经网络运算装置的边缘设备、使进行神经网络的运算的电路、模型高效且高速地工作的神经网络控制方法以及生成使进行神经网络的运算的电路、模型高效且高速地工作的软件的软件生成程序。
9.用于解决技术课题的技术方案
10.为了解决上述技术课题,本发明提出以下手段。
11.关于本发明的第一方案的神经网络生成装置,神经网络生成装置为生成对神经网络进行运算的神经网络执行模型的神经网络生成装置,所述神经网络执行模型基于包含8比特以上的元素的输入数据与多个阈值的比较,将该输入数据变换为比所述元素低比特的变换值。
12.发明效果
13.本发明的神经网络生成装置、神经网络运算装置、边缘设备、神经网络控制方法以及软件生成程序能够生成并控制可嵌入于iot设备等嵌入式设备、且能够被使得进行高性能工作的神经网络。
附图说明
14.图1为示出第一实施方式的神经网络生成装置的图。
15.图2为示出该神经网络生成装置的运算部的输入输出的图。
16.图3为示出卷积神经网络的一例的图。
17.图4为说明该卷积神经网络的卷积层进行的卷积运算的图。
18.图5为示出神经网络执行模型的一例的图。
19.图6为示出该神经网络执行模型的工作例的时序图。
20.图7为该神经网络生成装置的控制流程图。
21.图8为生成的卷积运算电路的内部框图。
22.图9为该卷积运算电路的乘法运算器的内部框图。
23.图10为该乘法运算器的积和运算单元的内部框图。
24.图11为该卷积运算电路的累加器电路的内部框图。
25.图12为该累加器电路的累加器单元的内部框图。
26.图13为该卷积运算电路的控制电路的状态转变图。
27.图14为该卷积运算电路的输入变换部的框图。
28.图15为说明该卷积运算的数据分割、数据展开的图。
29.图16为说明第二实施方式的电子设备(神经网络运算装置)的一例的图。
30.图17为示出该电子设备的工作例的时序图。
31.图18为示出该电子设备的处理器执行的对输入数据进行变换的程序的工作的流程图。
32.附图标记
33.300:神经网络生成装置;200:卷积神经网络(cnn);100:神经网络执行模型(nn执行模型);400:神经网络硬件模型;500:软件;600:神经网络硬件(神经网络运算装置);1:第一存储器;2:第二存储器;3:dma控制器(dmac);4:卷积运算电路;42:乘法运算器;43:累加器电路;49:输入变换部;5:量化运算电路;6:控制器;pm:学习完毕参数;ds:学习数据集;hw:硬件信息;nw:网络信息。
具体实施方式
34.(第一实施方式)
35.参照图1至图15对本发明的第一实施方式进行说明。
36.图1为示出本实施方式的神经网络生成装置300的图。
37.[神经网络生成装置300]
[0038]
神经网络生成装置300为生成可嵌入于iot设备等嵌入式设备的学习完毕的神经网络执行模型100的装置。神经网络执行模型100是为了使卷积神经网络200(以下称为“cnn 200”)在嵌入式设备中进行运算而生成的软件、硬件模型。
[0039]
神经网络生成装置300为具备cpu(central processing unit,中央处理单元)等处理器和存储器等硬件的能够执行程序的装置(计算机)。神经网络生成装置300的功能通过在神经网络生成装置300中执行神经网络生成程序及软件生成程序来实现。神经网络生成装置300具备存储部310、运算部320、数据输入部330、数据输出部340、显示部350和操作
输入部360。
[0040]
存储部310存储硬件信息hw、网络信息nw、学习数据集ds、神经网络执行模型100(以下称为“nn执行模型100”)和学习完毕参数pm。硬件信息hw、学习数据集ds及网络信息nw为被输入到神经网络生成装置300的输入数据。nn执行模型100及学习完毕参数pm为神经网络生成装置300输出的输出数据。此外,“学习完毕的nn执行模型100”包括nn执行模型100及学习完毕参数pm。
[0041]
硬件信息hw为使nn执行模型100工作的嵌入式设备(以后称为“工作对象硬件”)的信息。硬件信息hw例如为工作对象硬件的设备类别、设备限制、存储器结构、总线结构、工作频率、功耗、制造工艺类别等。设备类别例如为asic(application specific integrated circuit,专用集成电路)、fpga(field-programmable gate array,现场可编程门阵列)等类别。设备限制为工作对象设备中包含的运算器数的上限、电路规模的上限等。存储器结构为存储器类别、存储器个数、存储器容量、输入输出数据宽度。总线结构为总线种类、总线宽度、总线通信标准、同一总线上的连接设备等。另外,在nn执行模型100存在多个变体时,硬件信息hw中包含与使用的nn执行模型100的变体相关的信息。
[0042]
网络信息nw为cnn 200的基本信息。网络信息nw例如为cnn 200的网络结构、输入数据信息、输出数据信息、量化信息等。输入数据信息为图像和语音等输入数据类别和输入数据尺寸等。
[0043]
学习数据集ds具有学习中使用的学习数据d1和推断测试中使用的测试数据d2。
[0044]
图2为示出运算部320的输入输出的图。
[0045]
运算部320具有执行模型生成部321、学习部322、推断部323、硬件生成部324和软件生成部325。被输入到运算部320的nn执行模型100也可以由神经网络生成装置300以外的装置生成。
[0046]
执行模型生成部321基于硬件信息hw及网络信息nw生成nn执行模型100。nn执行模型100是为了使cnn 200在工作对象硬件中进行运算而生成的软件、硬件模型。软件包括控制硬件模型的软件。硬件模型可以为行为级(behavior level),也可以为rtl(register transfer level,寄存器传输级),也可以为表示门、电路模块之间的连接的网络列表,还可以为它们的组合。
[0047]
学习部322使用nn执行模型100及学习数据d1,生成学习完毕参数pm。推断部323使用nn执行模型100及测试数据d2来实施推断测试。
[0048]
硬件生成部324基于硬件信息hw及nn执行模型100生成神经网络硬件模型400。神经网络硬件模型400为可装配于工作对象硬件的硬件模型。基于硬件信息hw,针对工作对象硬件来优化神经网络硬件模型400。神经网络硬件模型400可以为rtl(register transfer level,寄存器传输级),也可以为表示门、电路模块之间的连接的网络列表,还可以为它们的组合。神经网络硬件模型400可以是为了将nn执行模型100装配于硬件所需的参数列表、配置文件。参数列表、配置文件也可以与另行生成的nn执行模型100组合使用。
[0049]
在以后的说明中,将神经网络硬件模型400装配于工作对象硬件而成的装置被称为“神经网络硬件600”。
[0050]
软件生成部325基于网络信息nw及nn执行模型100生成使神经网络硬件600工作的软件500。软件500包括根据需要将学习完毕参数pm转发到神经网络硬件600的软件。
[0051]
对数据输入部330输入为了生成学习完毕的nn执行模型100所需的硬件信息hw、网络信息nw等。硬件信息hw、网络信息nw等例如作为以预定数据格式记载的数据被输入。被输入的硬件信息hw、网络信息nw等存储于存储部310。硬件信息hw、网络信息nw等可以由使用者从操作输入部360进行输入或变更。
[0052]
在数据输出部340输出生成的学习完毕的nn执行模型100。例如生成的nn执行模型100和学习完毕参数pm在数据输出部340被输出。
[0053]
显示部350具有lcd显示器等公知的监视器。显示部350能够显示运算部320生成的gui(graphical user interface,图形用户界面)图像、用于接受指令等的控制台画面等。另外,在运算部320需要来自使用者的信息输入时,显示部350能够显示提醒使用者从操作输入部360输入信息的消息、信息输入所需的gui图像。
[0054]
操作输入部360为使用者输入对运算部320等的指示的装置。操作输入部360为触摸面板、键盘、鼠标等公知的输入设备。操作输入部360的输入被发送到运算部320。
[0055]
运算部320的全部或部分功能通过例如cpu(central processing unit,中央处理单元)、gpu(graphics processing unit,图形处理单元)这样的1个以上的处理器执行存储于程序存储器的程序来实现。然而,运算部320的全部或部分功能也可以通过lsi(large scale integration,大规模集成)、asic(application specific integrated circuit,专用集成电路)、fpga(field-programmable gate array,现场可编程门阵列)、pld(programmable logic device,可编程逻辑器件)等硬件(例如电路部:circuity)来实现。另外,运算部320的全部或部分功能还可以利用软件与硬件的组合来实现。
[0056]
运算部320的全部或部分功能可以使用设置于云服务器等外部设备的cpu、gpu、硬件等外部加速器来实现。运算部320能够通过并用例如云服务器上的高运算性能gpu、专用硬件来使运算部320的运算速度提高。
[0057]
存储部310通过闪存、eeprom(electrically erasable programmable read-only memory,电可擦可编程只读存储器)、rom(read-only memory,只读存储器)或ram(random access memory,随机存取存储器)等来实现。存储部310的全部或部分可以设置于云服务器等外部设备,利用通信线路与运算部320等连接。
[0058]
[卷积神经网络(cnn)200]
[0059]
接下来,对cnn 200进行说明。图3为示出cnn 200的一例的图。cnn 200的网络信息nw为与以下说明的cnn 200的结构相关的信息。cnn 200使用低比特的权重w和量化后的输入数据a等,易于嵌入于嵌入式设备。
[0060]
cnn 200为包括进行卷积运算的卷积层210、进行量化运算的量化运算层220和输出层230的多层构造的网络。在cnn 200的至少一部分中,卷积层210与量化运算层220交替连结。cnn 200为广泛用于图像识别、动态图像识别的模型。cnn 200可以还具有全连接层等具有其它功能的层(layer)。
[0061]
图4为说明卷积层210进行的卷积运算的图。
[0062]
卷积层210对输入数据a进行使用权重w的卷积运算。卷积层210进行以输入数据a和权重w为输入的积和运算。
[0063]
对卷积层210的输入数据a(也称为激活数据、特征图)为图像数据等多维数据。在本实施方式中,输入数据a为由元素(x,y,c)构成的三维张量。cnn 200的卷积层210对低比
特的输入数据a进行卷积运算。在本实施方式中,输入数据a的元素为2比特无符号整数(0,1,2,3)。输入数据a的元素也可以为例如4比特或8比特无符号整数。
[0064]
在输入到cnn 200的输入数据为例如32比特浮点型等格式与对卷积层210的输入数据a不同的情况时,cnn 200可以还具有在卷积层210之前进行类型变换、量化的输入层。
[0065]
卷积层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。
[0066]
卷积层210进行式1所示的卷积运算,将输出数据f输出。在式1中,s表示步幅(stride)。在图4中以虚线所示的区域示出了对输入数据a应用权重wo的区域ao(以后称为“应用区域ao”)之一。应用区域ao的元素以(x+i,y+j,c)来表示。
[0067]
[数学式1]
[0068][0069]
量化运算层220对卷积层210输出的卷积运算的输出实施量化等。量化运算层220具有池化层221、批量归一化(batch normalization)层222、激活函数层223和量化层224。
[0070]
池化层221对卷积层210输出的卷积运算的输出数据f实施平均池化(式2)或max池化(式3)等运算,对卷积层210的输出数据f进行压缩。在式2及式3中,u表示输入张量,v表示输出张量,t表示池化区域的大小。在式3中,max为输出u关于t中含有的i与j的组合的最大值的函数。
[0071]
[数学式2]
[0072][0073]
[数学式3]
[0074]
v(x,y,c)=max(u(t
·
x+i,t
·
y+j,c)),i∈t,j∈t......(式3)
[0075]
批量归一化层222利用例如式4所示的运算对量化运算层220、池化层221的输出数据进行数据分布的归一化。在式4中,u表示输入张量,v表示输出张量,α表示尺度(scale),β表示偏置(bias)。在学习完毕的cnn 200中,α及β为学习完毕的常数矢量。
[0076]
[数学式4]
[0077]
v(x,y,c)=α(c)
·
(u(x,y,c)-β(c))......(式4)
[0078]
激活函数层223对量化运算层220、池化层221、批量归一化层222的输出进行relu(式5)等激活函数的运算。在式5中,u为输入张量,v为输出张量。在式5中,max为输出自变量当中的最大数值的函数。
[0079]
[数学式5]
[0080]
v(x,y,c)=max(0,u(x,y,c))
……
(式5)
[0081]
量化层224基于量化参数,对池化层221、激活函数层223的输出进行例如式6所示的量化。式6所示的量化将输入张量u的比特削减至2比特。在式6中,q(c)为量化参数的矢量。在学习完毕的cnn 200中,q(c)为学习完毕的常数矢量。式6中的不等号“≤”也可以为“<”。
[0082]
[数学式6]
[0083]
qtz(x,y,c)=0当u(x,y,c)≤q(c).th0否则
[0084]
1当u(x,y,c)≤q(c).th1否则
[0085]
2当u(x,y,c)≤q(c).th2否则
[0086]3……
(式6)
[0087]
输出层230为利用恒等函数、归一化指数函数(softmax函数)等输出cnn 200的结果的层。输出层230的前级的层可以为卷积层210,也可以为量化运算层220。
[0088]
在cnn 200中,量化后的量化层224的输出数据被输入到卷积层210,因此与不进行量化的其它卷积神经网络相比,卷积层210的卷积运算的负荷小。
[0089]
[神经网络执行模型100(nn执行模型)100]
[0090]
接下来,对nn执行模型100进行说明。图5为示出nn执行模型100的一例的图。nn执行模型100是为了使cnn 200在工作对象硬件中进行运算而生成的软件、硬件模型。软件包括控制硬件模型的软件。硬件模型可以为行为级,也可以为rtl(register transfer level,寄存器传输级),也可以为表示门、电路模块之间的连接的网络列表,还可以为它们的组合。
[0091]
nn执行模型100具备第一存储器1、第二存储器2、dma控制器3(以下也称为“dmac 3”)、卷积运算电路4、量化运算电路5和控制器6。nn执行模型100的特征在于,卷积运算电路4和量化运算电路5经由第一存储器1及第二存储器2而形成为环状。
[0092]
第一存储器1例如为由sram(static ram,静态随机存取存储器)等构成的易失性存储器等可改写的存储器。在第一存储器1中,经由dmac 3、控制器6进行数据的写入及读取。第一存储器1与卷积运算电路4的输入端口连接,卷积运算电路4能够从第一存储器读取数据。另外,第一存储器1与量化运算电路5的输出端口连接,量化运算电路5能够将数据写入于第一存储器1。外部主机cpu能够通过对第一存储器1的数据的写入、读取来进行对nn电路100的数据的输入输出。
[0093]
第二存储器2为例如由sram(static ram,静态随机存取存储器)等构成的易失性存储器等可改写的存储器。在第二存储器2中,经由dmac 3、控制器6进行数据的写入及读取。第二存储器2与量化运算电路5的输入端口连接,量化运算电路5能够从第二存储器2读取数据。另外,第二存储器2与卷积运算电路4的输出端口连接,卷积运算电路4能够将数据写入于第二存储器2。外部主机cpu能够通过对第二存储器2的数据的写入、读取来进行对nn电路100的数据的输入输出。
[0094]
dmac 3连接于外部总线eb,进行dram等外部存储器与第一存储器1之间的数据转发。另外,dmac 3进行dram等外部存储器与第二存储器2之间的数据转发。另外,dmac 3进行dram等外部存储器与卷积运算电路4之间的数据转发。另外,dmac 3进行dram等外部存储器与量化运算电路5之间的数据转发。
[0095]
卷积运算电路4为进行学习完毕的cnn 200的卷积层210中的卷积运算的电路。卷积运算电路4读取保存于第一存储器1的输入数据a,对输入数据a实施卷积运算。卷积运算电路4将卷积运算的输出数据f(以后也称为“卷积运算输出数据”)写入于第二存储器2。
[0096]
量化运算电路5为进行学习完毕的cnn 200的量化运算层220中的量化运算的至少
一部分的电路。量化运算电路5读取保存于第二存储器2的卷积运算的输出数据f,对卷积运算的输出数据f进行量化运算(包括池化、批量归一化、激活函数及量化当中的至少量化的运算)。量化运算电路5将量化运算的输出数据(以后也称为“量化运算输出数据”)out写入于第一存储器1。
[0097]
控制器6连接于外部总线eb,作为外部的主机cpu的从设备而工作。控制器6具有包括参数寄存器、状态寄存器的寄存器61。参数寄存器为对nn执行模型100的工作进行控制的寄存器。状态寄存器为包括信号量s的表示nn执行模型100的状态的寄存器。外部主机cpu能够经由控制器6访问寄存器61。
[0098]
控制器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连接的专用布线被更新。
[0099]
nn执行模型100具有第一存储器1、第二存储器2等,因此在来自dram等外部存储器的利用dmac 3进行的数据转发中,能够降低重复数据的数据转发次数。据此,能够大幅降低由于存储器访问而产生的功耗。
[0100]
图6为示出nn执行模型100的工作例的时序图。nn执行模型100对于作为多个层的多层构造的cnn 200的运算,通过形成为环状的电路来进行运算。nn执行模型100通过环状的电路结构能够高效利用硬件资源。以下,说明图6所示的神经网络硬件600的工作例。
[0101]
dmac 3将层1(参照图3)的输入数据a保存于第一存储器1。dmac 3可以与卷积运算电路4进行的卷积运算的顺序相配合地分割层1的输入数据a并转发至第一存储器1。
[0102]
卷积运算电路4读取保存于第一存储器1的层1(参照图3)的输入数据a。卷积运算电路4对层1的输入数据a进行层1的卷积运算。层1的卷积运算的输出数据f被保存于第二存储器2。
[0103]
量化运算电路5读取保存于第二存储器2的层1的输出数据f。量化运算电路5对层1的输出数据f进行层2的量化运算。层2的量化运算的输出数据out被保存于第一存储器1。
[0104]
卷积运算电路4读取保存于第一存储器1的层2的量化运算的输出数据。卷积运算电路4将层2的量化运算的输出数据out作为输入数据a来进行层3的卷积运算。层3的卷积运算的输出数据f被保存于第二存储器2。
[0105]
卷积运算电路4读取保存于第一存储器1的层2m-2(m为自然数)的量化运算的输出数据out。卷积运算电路4将层2m-2的量化运算的输出数据out作为输入数据a来进行层2m-1的卷积运算。层2m-1的卷积运算的输出数据f被保存于第二存储器2。
[0106]
量化运算电路5读取保存于第二存储器2的层2m-1的输出数据f。量化运算电路5对2m-1层的输出数据f进行层2m的量化运算。层2m的量化运算的输出数据out被保存于第一存储器1。
[0107]
卷积运算电路4读取保存于第一存储器1的层2m的量化运算的输出数据out。卷积运算电路4将层2m的量化运算的输出数据out作为输入数据a来进行层2m+1的卷积运算。层2m+1的卷积运算的输出数据f被保存于第二存储器2。
[0108]
卷积运算电路4与量化运算电路5交替进行运算,推进图3所示的cnn 200的运算。在nn执行模型100中,卷积运算电路4通过时分方式实施层2m-1和层2m+1的卷积运算。另外,在nn执行模型100中,量化运算电路5通过时分方式实施层2m-2和层2m的量化运算。由此,与对每层装配各自的卷积运算电路4和量化运算电路5的情况相比,nn执行模型100的电路规模小得多。
[0109]
[神经网络生成装置300的工作]
[0110]
接下来,依据图7所示的神经网络生成装置300的控制流程图说明神经网络生成装置300的工作(神经网络控制方法)。神经网络生成装置300在实施初始化处理(步骤s10)之后,执行步骤s11。
[0111]
《硬件信息获取工序(s11)》
[0112]
在步骤s11中,神经网络生成装置300获取工作对象硬件的硬件信息hw(硬件信息获取工序)。神经网络生成装置300例如获取被输入到数据输入部330的硬件信息hw。神经网络生成装置300可以通过使显示部350显示输入硬件信息hw所需的gui图像并使使用者从操作输入部360输入硬件信息hw来获取硬件信息hw。
[0113]
具体而言,硬件信息hw具有被分配作为第一存储器1及第二存储器2的存储器的存储器类别、存储器容量、输入输出数据宽度。
[0114]
获取到的硬件信息hw被存储于存储部310。接下来,神经网络生成装置300执行步骤s12。
[0115]
《网络信息获取工序(s12)》
[0116]
在步骤s12中,神经网络生成装置300获取cnn 200的网络信息nw(网络信息获取工序)。神经网络生成装置300例如获取被输入到数据输入部330的网络信息nw。神经网络生成装置300可以通过使显示部350显示输入网络信息nw所需的gui图像并使使用者从操作输入部360输入网络信息nw来获取网络信息nw。
[0117]
具体而言,网络信息nw具有包括输入层和输出层230的网络结构、包括权重w和输入数据a的比特宽度的卷积层210的结构和包括量化信息的量化运算层220的结构。
[0118]
获取到的网络信息nw被存储于存储部310。接下来,神经网络生成装置300执行步骤s13。
[0119]
《神经网络执行模型生成工序(s13)》
[0120]
在步骤s13中,神经网络生成装置300的执行模型生成部321基于硬件信息hw和网络信息nw生成nn执行模型100(神经网络执行模型生成工序)。
[0121]
神经网络执行模型生成工序(nn执行模型生成工序)例如具有卷积运算电路生成工序(s13-1)、量化运算电路生成工序(s13-2)和dmac生成工序(s13-3)。
[0122]
《卷积运算电路生成工序(s13-1)》
[0123]
执行模型生成部321基于硬件信息hw和网络信息nw生成nn执行模型100的卷积运算电路4(卷积运算电路生成工序)。执行模型生成部321根据作为网络信息nw被输入的权重w、输入数据a的比特宽度等信息,生成卷积运算电路4的硬件模型。硬件模型可以为行为级,也可以为rtl(register transfer level,寄存器传输级),也可以为表示门、电路模块之间的连接的网络列表,还可以为它们的组合。以下,说明生成的卷积运算电路4的硬件模型的一例。
[0124]
图8为生成的卷积运算电路4的内部框图。
[0125]
卷积运算电路4具有权重存储器41、乘法运算器42、累加器电路43、状态控制器44和输入变换部49。卷积运算电路4具有针对乘法运算器42及累加器电路43的专用的状态控制器44,当被输入命令指令时,无需外部的控制器而能够实施卷积运算。
[0126]
权重存储器41为保存卷积运算中使用的权重w的存储器,例如为由sram(static ram,静态随机存取存储器)等构成的易失性存储器等可改写的存储器。dmac 3利用dma转发对权重存储器41写入卷积运算所需的权重w。
[0127]
图9为乘法运算器42的内部框图。
[0128]
乘法运算器42将输入数据a的各元素与权重w的各元素相乘。输入数据a的各元素为输入数据a被分割后的数据,为具有bc个元素的矢量数据(例如为后述的“输入矢量a”)。另外,权重w的各元素为权重w被分割后的数据,为具有bc
×
bd个元素的矩阵数据(例如为后述的“权重矩阵w”)。乘法运算器42具有bc
×
bd个积和运算单元47,能够并行实施输入矢量a与权重矩阵w的乘法运算。
[0129]
乘法运算器42从第一存储器1及权重存储器41读取乘法运算所需的输入矢量a和权重矩阵w并实施乘法运算。乘法运算器42输出bd个积和运算结果o(di)。
[0130]
图10为积和运算单元47的内部框图。
[0131]
积和运算单元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。
[0132]
积和运算单元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)得到的值。
[0133]
图11为累加器电路43的内部框图。
[0134]
累加器电路43在第二存储器2中累积乘法运算器42的积和运算结果o(di)。累加器电路43具有bd个累加器单元48,能够在第二存储器2并行地累积bd个积和运算结果o(di)。
[0135]
图12为累加器单元48的内部框图。
[0136]
累加器单元48具有加法运算器48a和屏蔽部48b。加法运算器48a将积和运算结果o的元素o(di)与保存于第二存储器2的式1所示的卷积运算的中间过程的部分和相加。作为加法运算结果,每个元素为16比特。加法运算结果不限于每个元素16比特,也可以为例如每个元素15比特或17比特。
[0137]
加法运算器48a将加法运算结果写入到第二存储器2的同一地址。当初始化信号clear(清除)被断言(assert)时,屏蔽部48b屏蔽来自第二存储器2的输出,并使与元素o(di)相加的对象为零。当第二存储器2中没有保存中间过程的部分和时,初始化信号clear被断言。
[0138]
当由乘法运算器42及累加器电路43进行的卷积运算完成时,第二存储器中保存有具有bd个元素的输出数据f(x,y,do)。
[0139]
状态控制器44控制乘法运算器42及累加器电路43的状态。另外,状态控制器44经由内部总线ib与控制器6连接。状态控制器44具有命令队列45和控制电路46。
[0140]
命令队列45为保存卷积运算电路4用的命令指令c4的队列,例如由fifo存储器构成。经由内部总线ib在命令队列45中写入命令指令c4。
[0141]
控制电路46为对命令指令c4进行解码并基于命令指令c4控制乘法运算器42及累加器电路43的状态机。作为控制电路46,可以利用逻辑电路来装配,也可以通过由软件控制的cpu来装配。
[0142]
图13为控制电路46的状态转变图。
[0143]
当命令指令c4被输入到命令队列45时(not empty:非空),控制电路46从空闲状态s1转变到解码状态s2。
[0144]
在解码状态s2下,控制电路46对从命令队列45输出的命令指令c3进行解码。另外,控制电路46读取保存于控制器6的寄存器61的信号量s,判定是否能够执行命令指令c4中指示的乘法运算器42、累加器电路43的工作。在无法执行时(not ready:未就绪),控制电路46等待(wait)直到能够执行。在能够执行时(ready:就绪),控制电路46从解码状态s2转变到执行状态s3。
[0145]
在执行状态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。
[0146]
执行模型生成部321根据作为网络信息nw被输入的权重w、输入数据a的比特宽度等信息,决定卷积运算电路4中的运算器的规格和尺寸(bc和bd)。在硬件信息hw中包含生成的nn执行模型100(神经网络硬件模型400、神经网络硬件600)的硬件规模时,执行模型生成部321与所指定的规模相配合地调整卷积运算电路4中的运算器的规格和尺寸(bc和bd)。
[0147]
图14是输入变换器49的框图。
[0148]
输入变换部49将包括多比特(8比特以上)元素的输入数据a变换为8比特以下的值。输入变换器49具有与cnn 200的输入层相当的功能。输入变换部49具有多个变换部491和阈值存储器492。
[0149]
在此,在输入变换部49说明中,为了简化说明,假设输入数据a是c轴方向的元素数量为1的图像数据(即xy平面上的二维图像)。另外,假设图像数据具有矩阵式数据结构,其中作为x轴方向和y轴方向的各元素,以8比特以上的多值作为像素数据。当用输入变换器49对该输入数据a进行变换时,各元素被量化而成为低比特(例如2比特或1比特)。
[0150]
变换部491将输入数据a的各元素与预定阈值进行比较。变换部491基于比较结果来量化输入数据a的各元素。变换部491例如将8比特的输入数据a量化为2比特或1比特的值。变换部491例如进行与量化层224实施的量化同样的量化。具体而言,变换部491如式6所示将输入数据a的各元素与阈值进行比较,将其结果输出为量化结果。在变换部491进行的
量化为1比特量化的情况下,使用1个阈值,在为2比特量化的情况下使用3个阈值。
[0151]
输入变换器49包括c0个变换器491,各个变换部491针对同一元素使用独立的阈值来进行量化。换言之,输入变换部49针对输入数据a最多输出c0个运算结果。此外,作为变换部491的输出的、将输入数据a变换而得到的结果的变换值的比特精度可根据输入数据a的比特精度等而适当变更。
[0152]
阈值存储器492是存储在变换部491的运算中使用的多个阈值th的存储器。存储于阈值存储器492的阈值th为预定值,针对c0个变换器491分别设定。此外,各个阈值th是学习对象参数,通过执行后述的学习步骤来决定和更新。
[0153]
图像数据被连结为在c轴方向上具有c0个元素的三维张量的数据结构。即,输入变换部49进行的处理相当于使图像数据的各像素数据变为低比特,并且生成基于不同阈值而生成的c0个图像数据。在此情况下,通过将c0个变换部491的输出在c轴方向上连结,从而作为由元素(x,y,c0)构成的三维数据结构被输出到乘法运算器42。
[0154]
在不具备输入变换部49的情况下,在乘法运算器42中不仅需要进行多比特的乘法运算,而且有时会浪费作为硬件而装配的c轴方向的运算资源。另一方面,通过在乘法运算器42的前级设置输入变换部49而对输入数据a进行量化,不仅能够用简易的逻辑运算替换乘法运算器42的乘法运算,而且还能够高效利用上述运算资源。
[0155]
另外,在本实施方式中示出了对多个变换部491输入输入数据a的同一元素的例子,但输入变换部49的方式不限于此。例如,在输入数据a为包括含有颜色分量的3个通道以上的元素的图像数据的情况下,也可以将变换部491分成对应的多个组,对各组输入对应的元素进行变换。另外,除了颜色分量以外,还可以对输入到预定变换部491的元素事先施加某些变换处理,也可以根据有无预处理来切换输入到哪个变换部491。另外,可以不对输入数据a的所有元素进行变换处理,例如可以仅对输入数据a内作为特定元素的与特定颜色对应的元素进行变换处理。
[0156]
此外,可以对多个变换部491输入输入数据a的不同元素。在这种情况下,输入变换部49仅用作对输入数据a进行量化的单元。
[0157]
优选的是,变换部491的个数c0的值不是固定值,而是与nn执行模型100的网络构造或硬件信息hw相配合地适当决定的值。此外,当需要补偿由变换部491的量化引起的运算精度下降时,优选的是变换部491的个数被设定为输入数据a的各元素的比特精度以上。更一般地说,优选的是将变换部491的个数设定为量化前后的输入数据a的比特精度的差分以上。具体地说,在将8比特的输入数据a量化为1比特的情况下,优选的是变换单元491的个数被设定为与差分即7比特相当的7个以上(例如16个或32个)。
[0158]
另外,输入变换部49可以不一定被装配为硬件。可以是在后述的软件生成工序(s17)中,作为预处理进行输入数据a的变换处理。
[0159]
《量化运算电路生成工序(s13-2)》
[0160]
执行模型生成部321基于硬件信息hw和网络信息nw生成nn执行模型100的量化运算电路5(量化运算电路生成工序)。执行模型生成部321根据作为网络信息nw被输入的量化信息,生成量化运算电路5的硬件模型。硬件模型可以为行为级,也可以为rtl(register transfer level,寄存器传输级),也可以为表示门、电路模块之间的连接的网络列表,还可以为它们的组合。
[0161]
《dmac生成工序(s13-3)》
[0162]
执行模型生成部321基于硬件信息hw和网络信息nw生成nn执行模型100的dmac 3(dmac生成工序)。执行模型生成部321根据作为网络信息nw被输入的信息,生成dmac 3的硬件模型。硬件模型可以为行为级,也可以为rtl(register transfer level,寄存器传输级),也可以为表示门、电路模块之间的连接的网络列表,还可以为它们的组合。
[0163]
《学习工序(s14)》
[0164]
在步骤s14中,神经网络生成装置300的学习部322及推断部323使用学习数据集ds,对生成的nn执行模型100的学习参数进行学习(学习工序)。学习工序(s14)具有例如学习完毕参数生成工序(s14-1)和推断测试工序(s14-2)。
[0165]
《学习工序:学习完毕参数生成工序(s14-1)》
[0166]
学习部322使用nn执行模型100及学习数据d1,生成学习完毕参数pm。学习完毕参数pm为学习完毕的权重w、量化参数q及输入变换部49的阈值等。
[0167]
例如,在nn执行模型100为实施图像识别的cnn 200的执行模型时,学习数据d1为输入图像与教师数据t的组合。输入图像为被输入到cnn 200的输入数据a。教师数据t为图像中拍摄到的被摄体的种类、图像中有无检测对象物、图像中的检测对象物的坐标值等。
[0168]
学习部322通过基于作为公知技术的误差反向传播法等的有监督学习,生成学习完毕参数pm。学习部322利用损失函数(误差函数)求出nn执行模型100针对输入图像的输出与对应于输入图像的教师数据t之差分e,以使差分e变小的方式更新权重w及量化参数q。另外,学习部322还更新进行在量化运算电路5实施的批量归一化中的数据分布的归一化时的归一化参数。具体而言,学习部322更新式4中所示的尺度α和偏置β。
[0169]
例如在更新权重w时,使用与权重w相关的损失函数的梯度。梯度例如通过对损失函数进行微分来计算。在使用误差反向传播法时,通过反向传番(backward)来计算梯度。
[0170]
在计算梯度来更新权重w时,学习部322使与卷积运算关联的运算的精度变高。具体而言,在学习中使用比nn执行模型100所使用的低比特的权重w(例如1比特)的精度高的32比特浮点型的权重w。另外,使在nn执行模型100的卷积运算电路4中实施的卷积运算的精度变高。
[0171]
在计算梯度来更新权重w时,学习部322使与激活函数关联的运算的精度变高。具体而言,在学习中使用比在nn执行模型100的量化运算电路5中实施的relu函数等激活函数的精度高的sigmond函数。
[0172]
另一方面,在利用正向传播(forward)计算针对输入图像的输出数据时,学习部322不使与卷积运算及激活函数关联的运算的精度变高而实施基于nn执行模型100的运算。利用查找表等将在更新权重w时使用的高精度的权重w变为低比特。
[0173]
在计算梯度来更新权重w时,学习部322通过使与卷积运算及激活函数关联的运算的精度变高,来防止运算中的中间数据的精度下降,能够生成可实现高推断精度的学习完毕参数pm。
[0174]
另一方面,在计算针对输入图像的输出数据时,学习部322不使正向传播(forward)的运算的精度变高而实施基于nn执行模型100的运算。由此,学习部322计算出的输出数据与使用生成的学习完毕参数pm的nn执行模型100的输出数据一致。
[0175]
进而,学习部322考虑学习后的权重w、量化参数q来决定阈值th。学习部322使用归
一化参数中包含的尺度α和偏置β来更新阈值th。作为一例,当将通过学习而更新的尺度设为α,将偏置设为β,将阈值th的初始值设为th0时,基于通过学习而更新的归一化参数来将阈值th更新为th=(th0-β)/α。另外,在此作为归一化参数,是假定为与一次函数相关的参数来进行说明的,但也可以是例如与非线性地单调增加或单调减少的函数相关的参数。另外,还可以使用权重w、量化参数q或它们的组合而非归一化参数来更新阈值th。
[0176]
《学习工序:推断测试工序(s14-2)》
[0177]
推断部323使用学习部322生成的学习完毕参数pm、nn执行模型100及测试数据d2来实施推断测试。例如,在nn执行模型100为实施图像识别的cnn 200的执行模型时,测试数据d2与学习数据d1同样地为输入图像与教师数据t的组合。
[0178]
推断部323在显示部350显示推断测试的进展及结果。推断测试的结果为例如针对测试数据d2的正解率。
[0179]
《确认工序(s15)》
[0180]
在步骤s15中,神经网络生成装置300的推断部323使显示部350显示提醒使用者从操作输入部360输入与结果相关的确认的消息、信息输入所需的gui图像。使用者从操作输入部360输入是否允许推断测试的结果。在从操作输入部360输入了表示使用者允许推断测试的结果这一情况的输入时,神经网络生成装置300接着实施步骤s16。在从操作输入部360输入了表示使用者不允许推断测试的结果这一情况的输入时,神经网络生成装置300再次实施步骤s12。此外,神经网络生成装置300也可以返回直至步骤s11,使使用者重新输入硬件信息hw。
[0181]
《输出工序(s16)》
[0182]
在步骤s16中,神经网络生成装置300的硬件生成部324基于硬件信息hw及nn执行模型100生成神经网络硬件模型400。
[0183]
《软件生成工序(s17)》
[0184]
在步骤s17中,神经网络生成装置300的软件生成部325基于网络信息nw及nn执行模型100等,生成使神经网络硬件600(将神经网络硬件模型400装配于工作对象硬件而成的装置)工作的软件500。软件500包括根据需要将学习完毕参数pm转发到神经网络硬件600的软件。
[0185]
软件生成工序(s17)例如具有输入数据变换工序(s17-1)、输入数据分割工序(s17-2)、网络分割工序(s17-3)和分配工序(s17-4)。
[0186]
《输入数据变换工序(s17-1)》
[0187]
当在卷积运算电路4中没有将输入变换部49作为硬件来装配的情况下,作为预处理,软件生成部325对事先可变的输入数据a进行变换而生成变换完毕输入数据a

。输入数据变换工序中输入数据a的变换方法与输入变换部49中的变换方法相同。
[0188]
《输入数据分割工序(s17-2):数据分割》
[0189]
软件生成部325基于被分配作为第一存储器1及第二存储器2的存储器的存储器容量、运算器的规格、尺寸(bc、bd)等,将卷积层210的卷积运算的输入数据a分割为部分张量。分割成部分张量的分割方法、分割数量没有特别限制。部分张量例如通过将输入数据a(x+i,y+j,c)分割为a(x+i,y+j,co)来形成。
[0190]
图15为说明卷积运算的数据分割、数据展开的图。
[0191]
在卷积运算的数据分割中,如式7所示,式1中的变量c按照尺寸bc的块被分割。另外,如式8所示,式1中的变量d按照尺寸bd的块被分割。在式7中,co为偏移量,ci为0至(bc-1)的索引。在式8中,do为偏移量,di为0至(bd-1)的索引。此外,尺寸bc与尺寸bd可以为相同。
[0192]
[数学式7]
[0193]
c=co
·
bc+ci......(式7)
[0194]
[数学式8]
[0195]
d=do
·
bd+di......(式8)
[0196]
式1中的输入数据a(x+i,y+j,c)在c轴方向上按照尺寸bc被分割,用分割后的输入数据a(x+i,y+j,co)来表示。在以后的说明中,也将分割后的输入数据a称为“分割输入数据a”。
[0197]
式1中的权重w(i,j,c,d)在c轴方向上按照尺寸bc被分割并且在d轴方向上按照尺寸bd被分割,用分割后的权重w(i,j,co,do)来表示。在以后的说明中,也将分割后的权重w称为“分割权重w”。
[0198]
按照尺寸bd分割后的输出数据f(x,y,do)通过式9来求出。能够通过组合分割后的输出数据f(x,y,do)来计算最终的输出数据f(x,y,d)。
[0199]
[数学式9]
[0200][0201]
《输入数据分割工序(s17-3):数据展开》
[0202]
软件生成部325在nn执行模型100的卷积运算电路4中展开分割后的输入数据a及权重w。
[0203]
分割输入数据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))作为元素。
[0204]
分割权重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))作为元素。
[0205]
通过将输入矢量a与权重矩阵w相乘来计算矢量数据。通过将针对每个i、j、co计算出的矢量数据整形为三维张量,能够得到输出数据f(x,y,do)。通过进行这样的数据展开,能够利用矢量数据与矩阵数据的乘法运算来实施卷积层210的卷积运算。
[0206]
《分配工序(s17-4)》
[0207]
软件生成部325生成将分割后的运算分配给神经网络硬件600并使之实施的软件500(分配工序)。生成的软件500包括命令指令c4。当在输入数据变换工序(s17-1)中对输入数据a进行过变换的情况下,软件500包括变换完毕输入数据a


[0208]
如以上说明的那样,根据本实施方式的神经网络生成装置300、神经网络控制方法以及软件生成程序,能够生成及控制可嵌入于iot设备等嵌入式设备且能够被使得进行高
性能工作的神经网络。
[0209]
以上参照附图对本发明的第一实施方式进行了详细说明,而具体结构不限于该实施方式,还包含不脱离本发明主旨的范围内的设计变更等。另外,在上述实施方式及变形例中示出的构成要素能够适当组合来构成。
[0210]
(变形例1-1)
[0211]
在上述实施方式中,第一存储器1和第二存储器2为分开的存储器,而第一存储器1和第二存储器2的形态不限于此。第一存储器1和第二存储器2例如可以为同一存储器中的第一存储器区域和第二存储器区域。
[0212]
(变形例1-2)
[0213]
例如,被输入到上述实施方式所记载的nn执行模型100、神经网络硬件600的数据不限于单一格式,而能够以静止图像、动态图像、语音、文字、数值及它们的组合来构成。此外,被输入到nn执行模型100、神经网络硬件600的数据不限于可被搭载于设置有神经网络硬件600的边缘设备的光传感器、温度计、全球定位系统(global positioning system,gps)测量仪、角速度测量仪、风速计等等物理量测量器的测量结果。也可以将从周边设备经由有线或无线通信而接收的基站信息、车辆/船舶等的信息、天气信息、与拥堵状况有关的信息等周边信息、金融信息、个人信息等不同信息进行组合。
[0214]
(变形例1-3)
[0215]
设想设置有神经网络硬件600的边缘设备是由电池等驱动的移动电话等通信设备、个人计算机等智能设备、数码相机、游戏设备、机器人产品等移动设备,但不限于此。即使在对用以太网供电(power on ethernet,poe)等的可供给峰值功率限制、降低产品发热或长时间驱动的要求高的产品中利用,也能够得到其它现有例子没有的效果。例如,通过应用于在车辆和船舶等搭载的车载相机、在公共设施和街道上等设置的监视相机等,不仅能够实现长时间的拍摄,还有助于轻量化和高耐用化。另外,通过应用于电视和显示器等显示装置、医疗相机和手术机器人等医疗设备、制造现场和建筑现场中使用的作业机器人等,也能够达到同样效果。
[0216]
(第二实施方式)
[0217]
参照图16至图18,对本发明第二实施方式的电子设备(神经网络运算装置)700进行说明。在以下的说明中,对于与已说明过的内容共用的结构,附加相同附图标记而省略重复的说明。
[0218]
图16为说明包括神经网络硬件600的电子设备700的结构的一例的图。电子设备700是由电池等电源驱动的移动产品,作为一例是移动电话等边缘设备。电子设备700具备:处理器710、存储器711、运算部712、输入输出部713、显示部714以及与通信网络716进行通信的通信部715。通过组合各构成要素,电子设备700实现nn执行模型100的功能。
[0219]
处理器710例如是cpu(central processing unit,中央处理单元),读取并执行事先存储于存储器711的软件500,与运算部712配合实现神经网络硬件600的各功能。另外,处理器710可以读取并执行软件500以外的程序,以实现在实现深度学习程序所具有的各功能时所需的功能。
[0220]
存储器711例如是ram(random access memory,随机存取存储器),并且预先存储有软件500,该软件500包括由处理器710读取并执行的命令群组和各种参数等。另外,存储
器711中存储有为了在用于显示部714上显示的gui中使用的图像数据和各种设定文件。此外,存储器711不限于ram,可以是例如硬盘驱动器(hdd:hard disk drive)、固态驱动器(ssd:solid state drive)、闪存(flash memory)、rom(read-only memory,只读存储器),也可以是将它们组合而成的存储器。
[0221]
运算部712包括图5所示的nn执行模型100的一个以上的功能,经由外部总线eb与处理器710协作实现神经网络硬件600的各功能。具体而言,经由外部总线eb读取输入数据a,进行与各种深度学习相关的运算,并将其结果写到存储器711等。
[0222]
输入输出部713例如是输入输出端口(input/output port)。对输入输出部713例如连接有1个以上相机装置、鼠标、键盘等输入装置、显示器、扬声器等输出装置。相机装置例如是连接于行车记录仪、防盗用监视系统的相机。另外,输入输出部713可以包括usb端口等通用数据输入输出端口。
[0223]
显示部714具有lcd显示器等各种监视器。显示部714能够显示gui图像等。另外,在处理器710需要来自使用者的信息输入时,显示部714能够显示提醒使用者从输入输出部713输入信息的消息、信息输入所需的gui图像。
[0224]
通信部715是用于经由通信网络716与其它设备执行通信的接口电路。另外,通信网络716例如是wan(wide area network,广域网)、lan(local area network,局域网)、因特网、内联网。另外,通信部716不仅具有发送包括与深度学习相关的运算结果的各种数据的功能,而且具有从服务器等外部装置接收预定数据的功能。例如,通信部715从外部装置接收处理器710所执行的各种程序、该程序中包含的参数、用于机器学习的学习模型、用于对该学习模型进行学习的程序和学习结果。
[0225]
此外,处理器710或运算部712的部分功能可以通过例如cpu(central processing unit,中央处理单元)、gpu(graphics processing unit,图形处理单元)这样的1个以上的处理器执行存储于程序存储器的程序来实现。然而,运算部712的全部或部分功能也可以通过lsi(large scale integration,大规模集成)、asic(application specific integrated circuit,专用集成电路)、fpga(field-programmable gate array,现场可编程门阵列)、pld(programmable logic device,可编程逻辑器件)等硬件(例如电路部:circuity)来实现。另外,运算部712的部分功能还可以利用软件与硬件的组合来实现。
[0226]
接下来,说明电子设备(神经网络运算装置)700的工作。
[0227]
在神经网络硬件600中,卷积运算电路4和量化运算电路5经由两个存储器而形成为环状。由此,构成为能够对量化后的输入数据a和权重w高效地实施卷积运算。然而,在执行特殊运算的情况下,有时效率会下降。
[0228]
对神经网络硬件600的各构成要素的控制由作为处理器710的从设备而工作的控制器6来进行。控制器6与处理器710对工作寄存器执行的写入同步地依次读取在存储器711的预定区域保存的命令集。处理器710根据读取的命令集实施对各构成要素的控制,以执行与nn执行模型100相关的运算。
[0229]
另一方面,不需要用神经网络硬件600执行nn执行模型100的全部运算,可以用作为外部运算资源的例如处理器710来执行部分运算。具体而言,通过处理器710执行在由神经网络硬件600执行时运算效率会降低的多比特运算、输入层和输出层的全部或部分运算,能够不使运算效率降低而扩大可运算的范围。
[0230]
在本实施方式中,对如下情况进行说明:在输入层中,用处理器710实施对多比特输入数据a(例如图像数据等)进行变换的运算(相当于输入变换部49的变换),用包括神经网络硬件600的运算部712实施之后的卷积运算。
[0231]
图17是示出电子设备700中的处理器710和运算部712实施nn执行模型100的运算处理工作的例子的时序图。通过由处理器710进行nn执行模型100中的部分运算,并由具有环状电路结构的神经网络硬件600进行之后的运算,能够高效利用硬件资源,能够实现运算整体的高效化。
[0232]
处理器710读取存储器711中保存的输入数据a。处理器710执行预定程序以实施对输入数据a的变换(相当于输入转换单元49的变换)。
[0233]
图18是处理器710所执行的对输入数据a进行变换的程序的工作的流程图。首先,在步骤s110,处理器710从存储器711读取部分输入数据a。具体而言,处理器710按照进行卷积运算的单位读取输入数据a。此外,优选的是,处理器71与神经网络硬件600所具备的存储器尺寸相配合地读取输入数据a。由此,处理器710处理后的数据能够由后级的运算部712高效地进行处理。此外,假设本实施方式中处理对象的输入数据a是x轴方向的元素数量为32、y轴方向的元素数量为32、c轴方向的元素数量为1的图像数据(即xy平面上的二维图像)。
[0234]
在步骤s111,处理器510创建在步骤s110读取的输入数据a的c0个副本。在此,要复制的对象数据是作为输入数据a的全部元素的32
×
32的像素数据。要复制的对象数据也可以是1个像素的数据,还可以是在卷积运算中能够同时运算的输入数据(例如9个像素的输入数据)。另外,在本实施方式中所生成的副本个数c0被设为32,但也可以是除此之外的个数。优选的是,所生成的副本个数c0被设定为与用运算部512能够处理的通道数量相同的数量或倍数。
[0235]
在步骤s112,处理器510将在步骤s111中复制的输入数据a的元素即像素数据a(i,j)与事先通过学习而决定的对应的阈值th(c)进行比较。c为0至(c0-1)的索引。此外,在本实施方式中,示出了将输入数据a的副本创建了c0个的例子,但输入数据a的变换方式不限于此。例如,当输入数据a是包括含有颜色分量的3个通道以上的元素的图像数据时,被变换成c0个的数据可以各不相同。此外,虽然阈值th(c)是事先学习过的参数,并且存储于存储器511,但也可以酌情经由通信部515从服务器、主机等外部装置获取。另外,关于步骤s112的处理,可以不是针对每1个像素数据来进行,而是针对多个像素数据并行进行。
[0236]
在步骤s113,当作为步骤s112的比较结果,像素数据aij大于阈值th(c)时,处理器710输出1作为输出y。另一方面,在步骤s114,当作为步骤s112比较结果,像素数据aij在阈值th(c)以下时,处理器710输出0作为输出y。其结果是,生成具有c0个比特宽度的二进制值。在此,步骤s112中的输出y不限于1比特值,也可以是2比特或4比特等多比特值。
[0237]
处理器510重复步骤s112到步骤s115,对全部变换对象的全部像素数据实施变换处理。
[0238]
如图17所示,处理器710在实施了对输入数据a的变换后,对变换完毕输入数据a

进行层1的卷积运算。
[0239]
处理器710对作为层1的卷积运算结果的包含多比特元素的数据进行层2的量化运算。该运算与运算部712中包括的量化运算电路5所执行的运算相同。在处理器710进行量化运算时,滤波器的尺寸或运算比特精度等可以与量化运算电路5不同。处理器710将量化运
算结果回写到存储器711。
[0240]
运算部712响应于处理器710对运算开始的寄存器的控制或预定的加权处理而开始运算。具体而言,运算部712在层2的量化运算结束并将数据写入存储器511之后,读取该数据,依次执行层3的卷积运算、层4的量化运算和所需的后级处理。
[0241]
如上所述,在执行神经网络相关的运算时,通过对作为运算对象的输入数据a进行量化而能够使运算效率提高。并且,在输入数据a为多比特的情况下,通过设置对输入数据a的变换处理(量化处理),能够在抑制运算精度降低的同时进一步提高运算效率。
[0242]
以上参照附图详细说明了本发明的第二实施方式,具体结构不限于该实施方式,还包含不脱离本发明主旨的范围内的设计变更等。另外,可以将上述实施方式及变形例中所示的构成要素适当组合来构成。
[0243]
(变形例2-1)
[0244]
虽然图17中示出了处理器710和运算部712经由存储器711实施运算处理工作的例子,但实施运算处理工作的主体的组合不限于此。
[0245]
例如,可以用运算部712来进行输入变换部49的比较处理等至少一部分处理。作为一例,量化运算电路5可以进行输入变换部49的比较处理。此时,可以将输入数据a修正为能够保存于第二存储器2的尺寸。另外,处理器710可以不经由存储器711而直接将层2的处理结果写入运算部712内的存储器。另外,在将层1的卷积运算结果临时保存于存储器711等的情况下,可以用运算部712经由第二存储器2来实施层2的量化运算。
[0246]
另外,虽然图17中示出了处理器710的运算处理和运算部712的运算处理以时分方式实施的例子,但在对多个输入数据a进行处理时等,可以设为将运算并行处理。由此,能够进一步使运算高效化。
[0247]
也可以将上述的实施方式的程序记录于计算机可读取的记录介质,使计算机系统读入并执行记录于该记录介质的程序来实现。此外,假设此处所称“计算机系统”包括os和外围设备等的硬件。另外,“计算机可读取的记录介质”是指软盘、磁光盘、rom、cd-rom等可移动介质、内置于计算机系统的硬盘等存储装置。并且所谓“计算机可读取的记录介质”还可以包括:如经由因特网等网络和电话线路等通信线路发送程序时的通信线那样,在短时间内动态地保持程序的介质,如作为这种情况时的服务器和客户端的计算机系统内部的易失性存储器那样,将程序保持一定时间的介质。另外上述程序可以为用于实现前述的功能的一部分的程序,还可以为通过与已记录于计算机系统的程序的组合来实现前述的功能的程序。
[0248]
另外,本说明书记载的效果仅为说明性或例示性的,而非限定性的。也就是说,本公开的技术可以与上述效果一起、或者代替上述效果而达到根据本说明书的记载对本领域技术人员而言显而易见的其它效果。
[0249]
工业适用性
[0250]
本发明能够应用于神经网络的生成。

技术特征:
1.一种神经网络生成装置,生成对神经网络进行运算的神经网络执行模型,其中,所述神经网络执行模型基于包含8比特以上的元素的输入数据与多个阈值的比较,将该输入数据变换为比所述元素低比特的变换值。2.根据权利要求1所述的神经网络生成装置,其中,所述神经网络执行模型将所述输入数据的至少一部分元素变换为2比特以下的所述变换值。3.根据权利要求1或2所述的神经网络生成装置,其中,具备学习部,该学习部对所述神经网络执行模型的学习参数进行学习,所述学习部在生成所述神经网络实施的卷积运算中使用的权重的同时生成所述阈值。4.根据权利要求1至3中任一项所述的神经网络生成装置,其中,具备软件生成部,该软件生成部生成使神经网络硬件工作的软件,其中该神经网络硬件是将所述神经网络执行模型的至少一部分装配于硬件而成的,所述软件生成部生成所述软件,其中该软件将所述输入数据变换为所述变换值,并将所述变换值作为对所述神经网络硬件的输入。5.一种神经网络运算装置,具备:输入变换部,基于包含8比特以上的元素的输入数据与多个阈值的比较,将该输入数据变换为比所述元素低比特的变换值;以及卷积运算电路,将所述变换值作为输入。6.根据权利要求5所述的神经网络运算装置,其中,所述输入变换部将所述输入数据的至少一部分元素变换为2比特以下的所述变换值。7.根据权利要求6所述的神经网络运算装置,其中,所述输入变换部具有将所述输入数据变换为所述变换值的多个变换部,所述多个变换部的个数为所述变换部进行变换前后的比特精度的差分以上。8.一种边缘设备,具备:权利要求5至7中任一项所述的神经网络运算装置;以及电源,使所述神经网络运算装置工作。9.一种神经网络控制方法,控制神经网络硬件,该神经网络硬件对神经网络进行运算,该方法具备:变换步骤,基于包含8比特以上的元素的输入数据与多个阈值的比较,将该输入数据变换为比所述元素低比特的变换值;以及运算步骤,对所述变换值实施卷积运算。10.根据权利要求9所述的神经网络控制方法,其中,所述变换步骤由所述神经网络硬件以外的装置进行事先处置。11.一种软件生成程序,生成控制神经网络硬件的软件,该神经网络硬件对神经网络进行运算,所述软件包括:变换步骤,使得基于包含8比特以上的元素的输入数据与多个阈值的比较,将该输入数据变换为比所述元素低比特的变换值;以及运算步骤,使得对所述变换值实施卷积运算。12.一种软件生成程序,生成控制神经网络硬件的软件,该神经网络硬件对神经网络进
行运算,所述程序生成包括如下运算步骤的所述软件:使得使用变换值实施卷积运算,该变换值是基于包含8比特以上的元素的输入数据与多个阈值的比较而将该输入数据变换为比所述元素低比特所得到的变换值。

技术总结
一种神经网络生成装置,生成对神经网络进行运算的神经网络执行模型,所述神经网络执行模型基于包含8比特以上的元素的输入数据与多个阈值的比较,将该输入数据变换为比所述元素低比特的变换值。低比特的变换值。低比特的变换值。


技术研发人员:德永拓之
受保护的技术使用者:利普麦德株式会社
技术研发日:2022.02.01
技术公布日:2023/9/16
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐