神经网络处理装置、信息处理装置、信息处理系统、电子设备、神经网络处理方法和程序与流程



1.本技术涉及神经网络处理装置、信息处理装置、信息处理系统、电子设备、神经网络处理方法和程序。


背景技术:



2.常规上,已知存在自动判别技术,诸如对音频数据的判别处理(诸如语音识别、说话人判别或环境声音判别)和对图像数据的判别处理(诸如图像识别)。
3.作为用于执行这种判别处理的方法,已经提出使用线性判别、决策树、支持向量机或神经网络等的方法(例如,参见非专利文献1和非专利文献2)。
4.例如,在使用神经网络的判别处理中,数据被输入到具有通过学习而预先获得的神经网络结构的判别器,并且,判别器对数据执行诸如卷积处理、池化处理和寄存器双重处理之类的运算。然后,运算结果作为对于输入数据的判别结果从判别器被输出。
5.引文列表
6.非专利文献
7.非专利文献1:kevin p.murphy,machine learning:aprobabilistic perspective,the mit press,2012
8.非专利文献2:i an goodfellow,yoshua beng io,and aaron courville,deep learning,the mit press,2016


技术实现要素:



9.技术问题
10.同时,近年来,要求在诸如智能电话和耳机之类的便携式设备上安装与自动判别相关的功能,并因此也要求减少当执行使用神经网络等的判别处理时所需的存储量。
11.本公开提出能够减少存储量的神经网络处理装置、信息处理装置、信息处理系统、电子设备、神经网络处理方法和程序。
12.问题的解决方案
13.根据本公开的神经网络处理装置包括:解码单元,对编码为第一零系数位置表和第一非零系数表的第一系数矩阵进行解码,第一零系数位置表由第一值指示第一系数矩阵中分别为零值的第一系数的位置并且由第二值指示第一系数矩阵中分别为非零值的第二系数的位置,第一非零系数表保持第一系数矩阵中的第二系数;和积和电路,对由所述解码单元解码的第一系数矩阵和第一变量矩阵执行卷积处理,其中,所述解码单元通过将存储在第一非零系数表中的第二系数存储在第一零系数位置表上由第二值指示的位置处对第一系数矩阵进行解码。
附图说明
14.图1是用于说明神经网络的示图。
15.图2是用于说明卷积处理和池化处理的示图。
16.图3是用于说明帧处理的示图。
17.图4是用于说明根据第一实施例的具有神经网络结构的判别器的示图。
18.图5是用于说明根据第一实施例的具有神经网络结构的判别器的示图。
19.图6是用于说明根据第一实施例的压缩编码滤波器系数的示图。
20.图7是示出根据第一实施例的神经网络处理装置的构成示例的示图。
21.图8是用于说明根据第一实施例的判别处理的流程图。
22.图9是示出根据第一实施例的用于解码稀疏表示系数(sparsely represented coefficient)的处理的示例的流程图。
23.图10是用于说明根据第一实施例的由解码单元执行的解码处理的具体示例的示图。
24.图11是用于说明图10所示的具体示例中的相位指针和非零系数队列指针的移动的示图。
25.图12是示出根据第二实施例的用于解码稀疏表示系数的处理的示例的流程图。
26.图13是用于说明根据第二实施例的由解码单元执行的解码处理的具体示例的示图。
27.图14是用于说明根据第三实施例的优先级编码器的示图。
28.图15是示出根据第三实施例的用于解码稀疏表示系数的处理的示例的流程图。
29.图16是用于说明根据第三实施例的由解码单元执行的解码处理的具体示例的示图。
30.图17是用于说明图16所示的具体示例中的相位指针、非零系数队列指针和变量队列指针的移动的示图。
31.图18是示出根据第四实施例的用于解码稀疏表示系数的处理的示例的流程图。
32.图19是用于说明根据第四实施例的由解码单元执行的解码处理的具体示例的示图。
33.图20是用于说明图19所示的具体示例中的相位指针、非零系数队列指针和变量队列指针的移动的示图(部分1)。
34.图21是用于说明图19所示的具体示例中的相位指针、非零系数队列指针和变量队列指针的移动的示图(部分2)。
35.图22是用于说明根据比较例的将积和结果(product-sum result)写入存储器的示图。
36.图23是示出根据第五实施例的编码单元的示意性构成示例的电路图。
37.图24是示出根据第六实施例的编码单元的示意性构成示例的电路图。
38.图25是用于说明图24所示的编码单元的操作示例的示图。
39.图26是用于说明根据第六实施例的第一变更例的示意图。
40.图27是用于说明根据第六实施例的组合第一变更例和第二变更例的第三变更例的示意图。
41.图28是用于说明第一应用例的示图。
42.图29是用于说明第一应用例的变更例的示图。
43.图30是示出根据第二应用例的信息处理系统的示意性构成示例的框图。
44.图31是示出根据第三应用例的作为电子设备中的一个的自主机器人的示意性构成示例的示意图。
45.图32是示出根据第四应用例的作为电子设备中的一个的电视机的示意性构成示例的示意图。
46.图33是示出根据本技术的计算机的构成示例的示图。
具体实施方式
47.以下,将参考附图详细描述本公开的实施例。注意,在以下实施例中,相同的部分将相同的附图标记表示,并且,省略重复的描述。
48.另外,将按照以下项目顺序描述本公开。
49.0.关于本技术
50.1.第一实施例
51.1.1通过具有神经网络结构的判别器的判别处理的具体示例
52.1.2使用具有神经网络结构的预测器的回归处理的具体示例
53.1.3关于滤波器系数的压缩编码
54.1.4关于通过数据压缩的处理量的减少
55.1.5关于学习方法
56.1.6神经网络处理装置的构成示例
57.1.7判别处理的描述
58.1.8系数矩阵的稀疏表示的效果
59.1.9适于解码稀疏表示系数的解码单元
60.1.9.1由解码单元执行的解码处理
61.1.9.2解码处理的具体示例
62.1.10作用和效果
63.2.第二实施例
64.2.1适于解码稀疏表示系数的解码单元
65.2.1.1由解码单元执行的解码处理
66.2.1.2解码处理的具体示例
67.2.2作用和效果
68.3.第三实施例
69.3.1对零系数的积和运算的省略
70.3.2适于解码稀疏表示系数的解码单元
71.3.2.1由解码单元执行的解码处理
72.3.2.2解码处理的具体示例
73.3.3作用和效果
74.4.第四实施例
75.4.1适于解码稀疏表示系数的解码单元
76.4.1.1由解码单元执行的解码处理
77.4.1.2解码处理的具体示例
78.4.2作用和效果
79.5.第五实施例
80.5.1比较例
81.5.2编码单元
82.5.3作用和效果
83.6.第六实施例
84.6.1 编码单元
85.6.2 操作示例
86.6.3 作用和效果
87.6.4 变更例
88.6.4.1第一变更例
89.6.4.2第二变更例
90.6.4.3第三变更例
91.7.本技术的应用例
92.7.1 第一应用例
93.7.2 第二应用例
94.7.3 第三应用例
95.7.4 第四应用例
96.8.计算机的构成示例
97.0.关于本技术
98.根据本技术,在通过使用神经网络实施判别处理或回归处理的情况下,当以帧为单位对输入数据执行诸如卷积处理之类的运算处理时,可以通过使当前帧和过去帧之间的运算处理的处理边界彼此一致来减少存储量。
99.首先,将参考图1和图2描述通过使用神经网络对对其输入的某个时间区间的音频数据执行判别处理的判别器。注意,在图1和图2中,相互对应的部分用相同的附图标记表示,并且适当地省略其描述。
100.图1示出用于对输入音频数据执行判别处理并输出判别结果的具有神经网络结构的判别器的构成。
101.在图1中,各四边形代表数据的形状(shape)。特别地,在用于数据的各图中,垂直方向表示时间方向,并且水平方向表示维度数。在图1中,水平箭头代表数据的转换。这里,各数据形状根据数据的维度数和各维度中的数据条数(数据样本数)被确定。
102.例如,在图1中,最左侧四边形中的输入数据dt11是输入到具有神经网络结构的判别器的音频数据。
103.这里,在用于输入数据dt11的图中,垂直方向表示时间方向,并且水平方向表示维度数。特别地,在用于输入数据dt11的图中,向下方向是表示最新时间的方向(未来方向)。
104.输入数据dt11是对应于7910个样本的时间区间的一个信道的音频数据。换句话
说,输入数据dt11是包括7910个样本(时间样本)的样本值的一个信道的音频数据。
105.因此,这里,音频数据的信道对应于输入数据dt11的维度数,并且输入数据dt1的形状被定义为1维
×
7910样本。另外,在用于输入数据dt11的图中,上部样本是更以前的样本。
106.在图1所示的判别器中,以输入数据dt11作为输入,在五个层(阶层)中的每一个中作为运算处理执行数据转换,并且获得图1中最右侧四边形中的判别结果数据dt16作为输出。换句话说,通过从卷积层1到卷积层3总共执行五次数据转换,从而从输入数据dt11计算判别结果数据dt16。
107.判别结果数据dt16是表示由判别器获得的判别结果的1
×
1(1维
×
1样本)。更具体而言,判别结果数据dt16为例如表示基于输入数据dt11的语音是预定特定语音的概率的数据。
108.在图1所示的判别器中,首先,对于四种类型的滤波器中的每一种,在卷积层1中对输入数据dt11执行滤波处理。换句话说,对于四种类型的滤波器中的每一种,对配置滤波器的滤波器系数和输入数据dt11执行卷积处理。
109.在卷积层1中执行的卷积处理中使用的滤波器中的每一个是20
×
1抽头滤波器(tap filter)。换句话说,各滤波器的抽头数(即,滤波器系数的数量)为20
×
1。另外,作为各滤波器中的卷积处理,以10样本前进方式(10-sample advancing manner)执行滤波处理。
110.通过在卷积层1中执行这种卷积处理,输入数据dt11被转换为中间数据dt12。
111.中间数据dt12是4维
×
790样本的数据。即,中间数据dt12包括在其图的水平方向上排列的四个维度的数据,并且,各维度的数据包括790个样本,换句话说,在其图中在垂直方向上排列的790条数据。
112.随后,在作为第二层的池化层1中,对于在卷积层1中获得的中间数据dt12,以具有10样本宽度的数据区域为目标,并且以10样本前进方式执行从数据区域拾取(提取)最大值的处理。
113.换句话说,在池化层1中,以10样本前进方式对中间数据dt12执行用于提取具有10样本宽度的数据区域的最大值的池化处理。
114.通过执行这种池化处理,中间数据dt12被转换为中间数据dt13。这里,中间数据dt13是四维数据,并且,各维度的数据包括79个样本(条数据)。
115.这里,将参考图2描述卷积层1中的卷积处理和池化层1中的池化处理。
116.例如,如图2左侧所示,在由卷积层1中的一个滤波器执行的卷积处理中,对输入数据dt11中的包括样本sp11、样本sp12和样本sp13的20个样本和滤波器系数进行卷积。
117.即,执行卷积处理,以分别对在数据区域w11中沿时间方向连续排列的从样本sp11到样本sp13的20个样本和配置滤波器的滤波器系数进行卷积。然后,通过数据区域w11的卷积处理获得的值被设定为中间数据dt12的图中最左下侧的样本sp21的样本值。
118.由于用于卷积层1中的卷积处理的滤波器是20
×
1抽头滤波器,因此数据区域w11是1维
×
20样本的区域。
119.另外,由于卷积层1中的卷积处理的样本前进数为10(即,由于以10样本前进方式执行卷积处理),因此,对于要在数据区域w11的卷积处理之后执行的卷积处理,数据区域
w12被设定为要处理的区域。
120.数据区域w12是包括以样本sp12作为其头部连续排列的20个样本的区域,该样本sp12布置在样本sp11之前10个样本,该样本sp11是数据区域w11的头部。即,数据区域w2是在过去方向上从数据区域w1偏移10个样本的区域。这里,数据区域w12是从样本sp12到样本sp14的区域。
121.在数据区域w12的卷积处理中,与数据区域w11的卷积处理相似,分别对输入数据dt11的从样本sp12到样本sp14的20个样本和滤波器系数进行卷积。然后,通过数据区域w12的卷积处理获得的值被设定为中间数据dt12的图中最左、次最下侧的样本sp22的样本值。
122.在卷积层1中,通过在对于要在四个滤波器中的每一个中处理的数据区域偏移10个样本的同时重复执行卷积处理,生成中间数据dt12。中间数据dt12中的四个维度的数据是通过在卷积层1中分别由四个滤波器执行的卷积处理获得的数据。
123.另外,在池化层1中,对数据区域w21执行提取最大值的处理,该数据区域21包括第一维度的从样本sp21到样本sp23的在垂直方向上连续排列的10个样本。
124.即,数据区域w21中的10个样本的样本值中的最大值被设定为中间数据dt13的图中最左下侧的样本sp31的样本值。
125.在对数据区域w21执行提取最大值的处理之后,包括以布置在样本sp21之前10个样本的样本作为其头部、连续排列的10个样本的区域被设定为下一数据区域,该样本sp21是数据区域w21的头部。即,由于池化层1中的池化处理的样本前进数是10,因此要处理的数据区域偏移10个样本。
126.然后,执行提取以这种方式获得的新数据区域的最大值的处理,并然后执行类似的处理。作为结果,中间数据dt12被转换为中间数据dt13。
127.返回到图1的描述,当通过池化层1中的池化处理获得中间数据dt13时,在作为第三层的卷积层2中,通过使用八种类型的滤波器执行与卷积层1中的卷积处理相似的卷积处理。
128.即,在卷积层2中,使用八个不同的滤波器,每个滤波器具有10
×
4抽头(即,每个滤波器是10
×
4抽头滤波器),并且,对滤波器中的每一个以1样本前进方式执行卷积处理(滤波处理)。
129.作为结果,中间数据dt13被转换为8维
×
70样本的中间数据dt14。即,中间数据dt14是八维数据,并且,各维度的数据包括70个样本(条数据)。
130.在作为第四层的池化层2中,以10样本前进方式对中间数据dt14执行用于对具有10样本宽度的数据区域提取最大值的池化处理。结果,中间数据dt14被转换为8维
×
7样本的中间数据dt15。
131.此外,在作为第五层的卷积层3中,通过使用一种类型的滤波器执行与卷积层1中的卷积处理类似的卷积处理。
132.即,在卷积层3中,通过使用7
×
8抽头滤波器以1样本前进方式执行卷积处理(滤波处理)。
133.作为结果,作为判别器的输出,中间数据dt15被转换为1维
×
1样本的判别结果数据dt16,并且,以这种方式获得的判别结果数据dt16被输出作为对输入数据dt11的判别处理的结果(判别结果)。
134.如上所述的从卷积层1到卷积层3的五个层中的运算处理由具有神经网络结构的判别器执行。
135.然而,在具有这种神经网络结构的判别器的层中,需要对通过紧接之前层中的运算处理获得的所有数据执行当前层中的运算处理,因此,运算处理的处理量和运算处理所需的存储器的存储量增加。
136.这里,假定帧处理被应用于通过具有图1所示的神经网络结构的判别器的处理。
137.帧处理指的是以帧为单位对输入数据执行的处理,即,以输入数据的帧的头部或尾部的位置作为处理的开始位置执行的处理。应用帧处理主要是为了减少用于运算处理的存储量或调整神经网络的输出计算频率,例如,对输入数据的1024个样本执行一个输出。
138.例如,如图3所示,假定帧处理被应用于由具有与图1中的神经网络构成相同的神经网络构成的判别器执行的处理。即,假定以一次的频率在对应于输入数据dt11的一帧的1024个样本上执行用于计算判别结果数据dt16的帧处理。注意,图3中与图1中的部分对应的部分由相同的附图标记表示,并且,将适当地省略其描述。
139.在图3中,假定输入数据dt11中时间上的最新帧是当前帧。当前帧被设定为包括在输入数据dt11的图中最下侧连续排列的1024个样本的区间,并且,在图3中用阴影线表示对应于输入数据dt11中的当前帧的部分。
140.当要针对输入数据dt11的当前帧计算一条判别结果数据dt16时,卷积层1对作为处理目标的数据区域w41执行卷积处理。
141.数据区域w41是包括总共1030个样本的区间,这1030个样本包括构成当前帧的1024个样本和当前帧在时间上的紧接之前帧(以下也称为紧接之前帧)中的最后6个样本。
142.此时,如果可以在过去的帧中执行对输入数据dt11中的、除要在当前帧中处理的数据以外的数据(区间)的卷积,则不需要对由虚线绘制的数据区域w42的运算处理,由此使得能够如用于其的运算处理那样多地减少存储量。
143.然而,在图3所示的神经网络的构成中,不能够减少处理量和存储量。这是由于当前帧的处理边界与紧接之前帧的处理边界不一致。
144.这里,帧的处理边界为例如要开始帧的运算处理的数据的样本位置(即,帧的头部或尾部的位置),或要在帧的运算处理终了之后开始下一运算处理的数据的样本位置。
145.例如,当前帧的处理边界是要在当前帧的运算处理终了之后开始下一运算处理的输入数据dt11的样本位置。如果该样本位置与要开始与当前帧相邻的紧接之前帧的运算处理的输入数据dt11的样本位置(即,作为紧接之前帧的处理边界的紧接之前帧的尾部(最后)样本位置)不一致,则不能够减少运算处理量和存储量。
146.具体而言,例如,图3的输入数据dt11(第1至第n样本)从最下面的样本起位于第n的样本被定义为第n样本。因此,例如,输入数据dt11的在图中最下面的样本(即,最新时间的样本),是第1样本。
147.在这种情况下,在卷积层1中,首先,由20
×
1抽头滤波器对当前帧中的输入数据dt11的第1至第20样本执行卷积处理。
148.另外,由于卷积层1中的前进数(样本前进数)为10个样本,因此,接下来,由20
×
1抽头滤波器对第11至第30样本执行卷积处理。
149.然后,重复执行类似的卷积处理,最后,由20
×
1抽头滤波器对当前帧中的输入数
据dt11的第1011至第1030样本执行卷积处理。
150.常规上,要经受卷积处理的数据区域是输入数据dt11中的数据区域w41,并且,在当前帧中,以数据区域w42作为处理目标执行卷积处理。
151.另外,当对第1011至第1030样本执行卷积处理时,第1021至第1040样本要经受下一卷积处理。因此,当前帧中的卷积处理的处理边界是第1021样本。
152.在这种情况下,在当前帧紧接之前的紧接之前帧中,需要对第1021至第1040样本执行卷积处理。
153.然而,实际上不执行这种卷积处理。在执行帧处理的情况下(即,在以帧为单位执行处理的情况下),在紧接之前帧中,从作为当前帧的帧边界的第1025样本执行卷积处理。
154.即,紧接之前帧的处理边界是第1025样本,并且,第1025样本与作为当前帧的处理边缘的第1021样本不一致。
155.因此,在紧接之前帧中不能执行对于除上述当前帧中要处理的数据以外的数据(区间)的卷积(即,对于这里的从第1021样本的卷积),作为结果,不能够减少处理量和存储量。
156.另外,在图3的示例中,由于应用帧处理,因此卷积层1中的卷积处理与参考图1描述的卷积处理不同。即,执行与参考图1描述的数据区域不同的数据区域的卷积处理。
157.为了执行与参考图1描述的示例中相同的卷积处理,最终需要对对应于一帧的每1024个样本的所有输入数据dt11执行参考图1描述的处理,作为结果,需要大的处理量和大的存储量。
158.因此,在以下实施例中,应用帧处理来以帧为单位对输入数据执行运算处理,并且,神经网络被配置为具有在帧处理中当前帧和过去帧的处理边界彼此一致的结构,使得至少可以减少存储量。
159.具体而言,在至少一层中使用的判别器具有其中对层中的帧执行的运算处理的处理单位或样本前进数是基于输入数据的形状确定的大小或前进数的神经网络结构。
160.换句话说,在应用以下实施例的具有神经网络结构的判别器中,确定各层中的运算处理的处理单位、样本前进数和帧长度(各帧的样本数),使得相邻帧的处理边界彼此一致。
161.另外,在由具有神经网络结构的判别器通过预先确定各帧的大小(帧长度)来执行帧处理的情况下,可以不仅考虑输入数据的形状而且考虑各帧的大小(帧长度)来确定在层中执行的运算处理的处理单位或样本前进数。
162.这里,根据如上所述的数据的维度数和各维度中的数据条数(数据样本数),确定数据的形状(数据形状)。
163.例如,图1所示的输入数据dt11是包括一维的7910个样本的数据,并因此是具有1维
×
7910样本的数据形状的数据。另外,例如,图1所示的中间数据dt12是4维
×
790样本的数据形状的数据。
164.注意,在层中执行的运算处理的处理单位的大小是在层中执行一帧的运算处理时的最小处理单位。即,例如,处理单位的大小是当要在一个层中处理的数据区域彼此偏移的同时重复执行相同处理多次时的各数据区域的大小,即,在各数据区域中包括的样本数。
165.具体而言,作为示例,在参考图1描述的卷积层1中,处理单位是包括执行一次卷积
处理(滤波处理)的20个样本的数据区域,并且,该数据区域根据滤波器的抽头数被确定。
166.作为另一示例,在参考图1描述的池化层1中,处理单位是包括要从其提取最大值的10个样本的数据区域,并且,该数据区域基于样本宽度被确定。
167.通过使用如上面描述的具有其中以关于输入数据的形状和帧长度确定的抽头数、样本宽度(数据区域的大小)和样本前进数在层中执行运算处理的神经网络结构(构成)的判别器来执行判别处理,可以使相邻帧中的运算处理的处理边界彼此一致。作为结果,至少可以减少在运算处理时临时需要的存储器的存储量,由此更有效地执行判别。
168.根据以下实施例,例如,当在输入了包括几个帧的输入数据dt11的状态下从当前帧在时间上沿过去方向以帧为单位依次执行处理的情况下,或者在以帧为单位依次输入输入数据dt11并且从当前帧在时间上沿未来方向上以帧为单位依次执行处理的情况下,可以使相邻帧中的运算处理的处理边界彼此一致。此外,帧的运算处理的开始位置可以是帧头部处的样本或帧尾部处的样本。
169.注意,这里将描述关于输入数据的形状和帧长度确定抽头数、样本宽度和样本前进数的示例。然而,可以关于输入数据的形状确定数据的帧长度(即,构成帧的样本数(数据条数)),使得相邻帧中的运算处理的处理边界彼此一致。即使在这种情况下,相邻帧中的运算处理的处理边界也彼此一致,由此使得能够更有效地执行判别。
170.1.第一实施例
171.以下,将参考附图详细描述本技术的第一实施例。
172.1.1通过具有神经网络结构的判别器的判别处理的具体示例
173.首先,将描述由根据本实施例的具有神经网络结构的判别器执行的判别处理的具体示例。
174.在根据本实施例的具有神经网络结构的判别器中,例如,如图4所示,在各层中执行处理。
175.即,在图4所示的示例中,作为通过判别器的判别处理,在五个层中依次执行处理,并且,从作为音频数据的一维(一信道)输入数据dt11

计算判别结果数据dt16

作为最终判别结果。
176.特别地,这里,在从过去帧到未来帧的时间方向上,以帧为单位依次在五个层中执行处理,并且,处理是对帧中的每一帧输出判别结果数据dt16

的帧处理。在本示例中,一帧包括1024个样本。在一帧的处理中,输入数据dt11

被输入到判别器,并且,输出一条判别结果数据dt16


177.在图4中,各四边形代表数据。另外,在用于数据的各图中,垂直方向表示时间方向,并且水平方向表示维度数。特别地,在用于数据的各图中,向下方向是表示最新时间的方向(未来方向)。
178.此外,在图4中,水平箭头代表数据的转换。这里,第一层是卷积层1

,第二层是池化层1,并且第三层是卷积层2。另外,第四层是池化层2,并且第五层是卷积层3。
179.在这五个层中,第二池化层1至第五卷积层3中的每一个中的处理与参考图1描述的第二池化层1至第五卷积层3中的每一个中的处理相同,并因此适当地省略其描述。
180.在本示例中,输入数据dt11

是图1所示的包括7910个样本的输入数据dt11中作为最新时间的样本的第1样本至第1036样本的部分的数据。
181.这里,如果一帧包括1024个样本,则输入数据dt11

中的第1样本至第1024样本的区间对应于一帧,并且假定该帧是下面的当前帧。
182.另外,输入数据dt11

中的第1025至第1036样本中的每一个是在时间上紧接在当前帧之前的紧接之前帧中的样本。
183.在卷积层1

中,通过使用包括当前帧的数据(样本)和紧接之前帧的数据中的一些的输入数据dt11

作为输入来执行卷积处理,并且,输入数据dt11

被转换为中间数据dt12

。更具体而言,通过对于当前帧的卷积层1

中的卷积处理,只获得作为4维
×
790样本的中间数据dt12

中的一些的数据pdt1,并且,通过对于过去帧的卷积处理获得作为中间数据dt12

中的另一些的数据pdt2。
184.在卷积层1

中的卷积处理期间,使用四种类型的滤波器,每个滤波器具有20
×
1抽头(即,每个滤波器为20
×
1抽头滤波器),并且,对滤波器中的每一个以8样本前进方式对输入数据dt11

执行卷积处理(滤波处理)。
185.具体而言,在卷积层1

中,以帧为单位执行帧处理。即,作为卷积层1

中的帧的运算处理,通过使用四种类型的20
×
1抽头滤波器的滤波器系数以8样本前进方式对各帧执行卷积处理(滤波处理)。
186.在这种情况下,在当前帧的处理中,对包括作为目标区域的当前帧的所有样本的数据区域执行卷积处理。然后,作为在时间上在当前帧的卷积处理紧接之前的定时的卷积层1

中的运算处理,对作为目标区域的包括紧接之前帧的所有样本的数据区域执行卷积处理。
187.另外,在作为第二层的池化层1中,以10样本前进方式对中间数据dt12

执行用于对具有10样本宽度的数据区域提取最大值的池化处理。作为结果,中间数据dt12

被转换为4维
×
79样本的中间数据dt13


188.在作为第三层的卷积层2中,使用分别具有10
×
4抽头的八个不同的滤波器,并且,对于滤波器中的每一个以1样本前进方式执行卷积处理(滤波处理)。作为结果,中间数据dt13

被转换为8维
×
70样本的中间数据dt14


189.另外,在作为第四层的池化层2中,以10样本前进方式对中间数据dt14

执行用于对具有10样本宽度的数据区域提取最大值的池化处理。作为结果,中间数据dt14

被转换为8维
×
7样本的中间数据dt15


190.最后,在作为第五层的卷积层3中,通过使用具有7
×
8抽头的一个滤波器以1样本前进方式执行卷积处理,并且,中间数据dt15

被转换为1维
×
1样本的判别结果数据dt16

。以这种方式获得的判别结果数据dt16

被输出作为对输入数据dt11

的判别处理的结果(判别结果)。
191.这里,当将卷积层1

中的卷积处理与参考图1描述的卷积层1中的卷积处理进行比较时,样本前进数在卷积层1中为10,而样本前进数在卷积层1

中为8。
192.当如上面描述的那样、在当前帧中样本前进数为8时,对第1至第20样本的数据区域执行卷积处理,并随后对第9至第28样本的数据区域执行卷积处理。
193.然后,在各数据区域偏移八个样本的同时执行卷积处理,最后,对第1017至第1036样本的数据区域执行卷积处理。
194.在这种情况下,由于对其执行最后卷积处理的数据区域的头部是第1017样本,因
此,作为在时间方向上在第1017样本之前8个样本的第1025样本是当前帧中的处理边界。
195.这里,一帧包括1024个样本,并且,第1025样本是紧接之前帧的尾部(最后)样本。因此,第1025样本是紧接之前帧中的处理边界。因此,在图4的示例中,相邻的当前帧和紧接之前帧中的处理边界彼此一致。具体而言,在本示例中,帧的处理边界的位置是帧的边界位置。作为结果,在过去帧中执行对除要在当前帧中处理的数据以外的数据(区间)的卷积。
196.更具体而言,由于在本示例中执行帧处理,因此对作为输入的输入数据dt11的1024个样本计算一条判别结果数据dt16


197.在这种情况下,在当前帧中,以输入数据dt11中的对应于输入数据dt11

的部分为要处理的数据区域,执行卷积层1

的卷积处理。
198.因此,在当前帧中,不必对输入数据dt11中的对应于由虚线绘制的数据区域w51的部分执行卷积处理。因此,能够如输入数据dt11中的对应于数据区域w51的部分那样多地减少卷积处理的处理量和用于保持卷积处理的数据等的存储器的存储量。
199.在这种情况下,在当前帧的卷积层1

中的卷积处理期间,仅获得作为中间数据dt12

中的对应于图4下侧的4维
×
128样本的一些数据pdt1,而未获得作为中间数据dt12

中的另一些的数据pdt2。
200.然而,由于已经对于在时间上在当前帧之前的多个帧通过卷积层1

中的卷积处理获得数据pdt2,因此可以保持通过卷积处理获得的数据pdt2。然后,可以在当前帧的卷积层1

中的卷积处理终了的时间点获得中间数据dt12

,因此,此后可以立即开始池化层1中的处理。
201.另外,在图4中,描述了仅卷积层1

使用具有其中相邻帧中的处理边界彼此一致的神经网络结构的判别器的情况。然而,在卷积层1

之后的层中,相邻帧中的处理边界也可以彼此一致。
202.在这种情况下,在根据本实施例的具有神经网络结构的判别器中,例如,如图5所示,在各层中执行处理。注意,图5中与图4中的部分对应的部分由相同的附图标记表示,并且,将适当地省略其描述。
203.在图5所示的示例中,作为通过判别器的判别处理,在五个层中依次执行处理,并且从作为音频数据的一维(一信道)输入数据dt11

计算判别结果数据dt25作为最终判别结果。
204.具体而言,这里,在从过去帧到未来帧的时间方向上,以帧为单位在五个层中依次执行处理,并且该处理是对帧中的每一个输出判别结果数据dt25的帧处理。
205.在图5中,各四边形表示数据。另外,在用于数据的各图中,垂直方向表示时间方向,并且水平方向表示维度数。特别地,在用于数据的各图中,向下方向是表示最新时间的方向(未来方向)。
206.此外,在图5中,水平箭头表示数据的转换。这里,第一层是卷积层1

,第二层是池化层1

,并且第三层是卷积层2

。另外,第四层是池化层2

,并且第五层是卷积层3


207.在作为五个层中的第一层的卷积层1

中,执行与参考图4描述的卷积层1

中的处理完全相同的处理,因此,将适当省略其描述。
208.在图5所示的神经网络结构中,通过稍微改变图1所示的神经网络结构中的各层中的样本前进数或抽头数,各层中的相邻帧中的处理边界彼此一致。
209.由于仅通过如上面描述的那样稍微改变图1所示的神经网络结构来获得图5所示的神经网络结构,因此神经网络结构的这种改变对判别性能几乎没有影响。
210.在本示例中,在卷积层1

中,与参考图4描述的类似,以输入数据dt11

为输入执行帧处理。
211.即,作为当前帧的卷积层1

中的处理,对于滤波器中的每一个以8样本前进方式通过使用分别具有20
×
1抽头的四种类型的滤波器,对输入数据dt11

执行卷积处理(滤波处理)。作为结果,输入数据dt11

被转换为4维
×
128样本的中间数据dt21。中间数据dt21与图4所示的数据pdt1相同。
212.在卷积层1

中的这种卷积处理中,与图4中的卷积处理类似,与不应用帧处理的情况相比,可以如数据区域w61那样多地减少处理量和存储量。
213.另外,在作为第二层的池化层1

中,以8样本前进方式对中间数据dt21执行用于对具有8样本宽度的数据区域提取最大值的池化处理。作为结果,中间数据dt21被转换为4维
×
16样本的中间数据pdt21。
214.这里,关于输入数据dt11

的数据形状和帧长度以及卷积层1

中的处理(即,卷积层1

的构成(结构)),确定池化层1

中的样本宽度和样本前进数。因此,在池化层1

中,可以使得中间数据dt21中的相邻帧的处理边界彼此一致,并且,作为结果,与不应用帧处理的情况相比,可以在池化层1

中如数据区域w62那样多地减少处理量和存储量。
215.在作为第三层的卷积层2

中,使用分别具有10
×
4抽头的八个不同的滤波器,并且,对于滤波器中的每一个以2样本前进方式执行卷积处理。
216.因此,在卷积层2

中,输入数据的形状(换句话说,要处理的数据区域),对应于4维
×
24样本,而通过当前帧在池化层1

中的处理获得的中间数据pdt21是4维
×
16样本的数据。
217.然而,如果保持作为在时间上在当前帧前面一个帧的紧接之前帧中的池化层1

中获得的中间数据的一半的4维
×
8样本的中间数据pdt22,则可以从中间数据pdt21和中间数据pdt22获得4维
×
24样本的中间数据dt22。
218.在卷积层2

中,通过对滤波器中的每一个以2样本前进方式使用分别具有10
×
4抽头的八个不同的滤波器,对中间数据dt22执行卷积处理。作为结果,中间数据dt22被转换为8维
×
8样本的中间数据dt23。
219.关于输入数据dt11

的数据形状和帧长度以及卷积层2

之前的层中的每一个的构成(结构),确定卷积层2

中的抽头数和样本前进数。因此,在卷积层2

中,可以使得中间数据dt22中的相邻帧的处理边界彼此一致,并且,作为结果,与不应用帧处理的情况相比,可以在卷积层2

中如数据区域w63那样多地减少处理量和存储量。
220.在作为第四层的池化层2

中,以8样本前进方式对中间数据dt23执行用于对具有8样本宽度的数据区域提取最大值的池化处理。作为结果,中间数据dt23被转换为8维
×
1样本的中间数据pdt31。
221.这里,关于输入数据dt11

的数据形状和帧长度以及池化层2

之前的层中的每一个的构成(结构),确定池化层2

中的样本宽度和样本前进数。因此,在池化层2

中,可以使得中间数据dt23中的相邻帧的处理边界彼此一致,并且,作为结果,与不应用帧处理的情况相比,可以在池化层2

中如数据区域w64那样多地减少处理量和存储量。
222.在作为第五层的卷积层3

中,通过以1样本前进方式使用具有8
×
8抽头的一个滤波器,执行卷积处理。
223.因此,在卷积层3

中,输入数据的形状(换句话说,要处理的数据区域),对应于8维
×
8样本,而通过当前帧在池化层2

中的处理获得的中间数据pdt31是8维
×
1样本的数据。
224.然而,如果保持包括在时间上在当前帧之前的七个过去帧中的池化层2

中获得的中间数据的8维
×
7样本的中间数据pdt32,则可以从中间数据pdt1和中间数据pdt22获得8维
×
8样本的中间数据dt24。
225.在卷积层3

中,通过以1样本前进方式使用具有8
×
8抽头的滤波器对中间数据dt24执行卷积处理。作为结果,中间数据dt24被转换为1维
×
1样本的判别结果数据dt25。以这种方式获得的判别结果数据dt25被输出作为对输入数据dt11

的判别处理的结果(判别结果)。
226.关于输入数据dt11

的数据形状和帧长度以及卷积层3

之前的层中的每一个的构成(结构),确定卷积层3

中的抽头数和样本前进数。因此,在卷积层3

中,可以使得中间数据dt24中的相邻帧的处理边界彼此一致。
227.如上所述,当通过使用具有参考图5描述的神经网络结构的判别器来执行判别处理时,可以以基本上相同的性能、如图1中的约1/6那样多地减少处理量和存储量。
228.注意,尽管在图5中作为示例描述了对1024个样本(一帧)输出一条判别结果数据dt25的情况,但在具有图5所示的神经网络结构的判别器中,判别结果数据dt25可以以每几帧一次等的频率被输出。在这种情况下,也可以如数据区域w61到数据区域w64那样多地减少处理量和存储量。
229.此外,在图4和图5中的每一个中,为了简化描述,已经描述了使用相对简单和小规模的神经网络的情况作为示例。然而,神经网络可以具有任何规模,即,任意层数等。在本实施例中,随着神经网络具有更大规模变得更复杂,处理量和存储量以更高的速率减少。
230.此外,卷积处理和池化处理被描述为在神经网络的层中执行的处理的示例,但可以执行诸如残差处理之类的任何运算处理。残差处理是通过将当前层之前的层的输出与当前层的输入数据相加来获得当前层的输出的数据转换处理。
231.另外,本实施例不仅可以被应用于诸如语音判别、说话人判别和环境声音判别之类的自动判别音频数据的技术,还可以被应用于分别使用神经网络的各种技术。
232.1.2使用具有神经网络结构的预测器的回归处理的具体示例
233.例如,尽管上面描述了本实施例被应用于使用具有神经网络结构的判别器的判别处理的示例,但本实施例也可以被应用于使用具有神经网络结构的预测器的预测处理,即,回归处理。
234.在这种情况下,预测器的输出是表示通过回归处理的预测结果的概率。在预测器的各层中,以与判别器的各层中相似的方式执行处理。
235.作为具体示例,本实施例可以被应用于用于通过使用神经网络、基于音频信号(音频数据)的低频信号生成音频信号的高频信号的频带扩展技术。
236.作为频带扩展技术的示例,wo 2015/79946a(以下称为参考专利文献)公开了从自音频信号获得的多个低频子带的低频子带功率生成作为音频信号的高频分量的高频信号。
237.即,在参考专利文献中,针对多个低频子带中的每一个获得音频信号的低频子带
功率,并且,基于多个低频子带功率,获得音频信号的高频侧上的多个高频子带的高频子带功率的估计值作为伪高频子带功率。然后,基于伪高频子带功率生成高频信号。
238.这里,在参考专利文献中,如参考专利文献的公式(2)所示,以多个低频子带功率作为说明变量且多个高频子带功率作为被说明变量,通过使用由使用最小二乘法的回归分析预先获得的系数,计算伪高频子带功率。
239.另一方面,当本实施例被应用于伪高频子带功率的计算时,可以通过使用神经网络以更高的精度计算伪高频子带功率。
240.在这种情况下,音频信号的多个帧中的每一个的多个低频子带功率等被输入到具有神经网络结构的预测器。此外,从具有神经网络结构的预测器输出对于一帧的音频信号中的多个高频子带的高频子带功率(伪高频子带)等。
241.更具体而言,例如,16帧中的每一个的四个低频子带的低频子带功率等被输入到具有神经网络结构的预测器,并且,从预测器输出一帧的八个高频子带的高频子带功率等。
242.在这种情况下,16行4列的矩阵(即,4维
×
16样本的输入数据)被输入到预测器,输入数据的各样本表示一个低频子带中的低频子带功率。另外,从预测器输出1行8列的矩阵(即,8维
×
1样本的判别结果数据),判别结果数据的各样本表示一个高频子带中的高频子带功率。
243.以这种方式,本实施例还可以被应用于使用神经网络的频带扩展技术。类似地,本实施例还可以被应用于用于通过使用神经网络识别图像或视频的技术和提取物体区域的技术等。
244.1.3关于滤波器系数的压缩编码
245.同时,在执行具有神经网络结构的判别器的卷积层中的处理的情况下,使用滤波器的预定滤波器系数,并因此需要用于保持滤波器系数的存储器。
246.具体而言,在卷积层中,需要保持如抽头数
×
滤波器类型数那样多的滤波器系数。即,对于执行卷积的一个滤波器或多个滤波器中的每一个,需要保持如抽头数那样多的滤波器系数。
247.因此,当卷积层的数量或在卷积层中使用的滤波器的数量增加时,用于保持滤波器系数的存储量相应增加。
248.在这点上,在本实施例中,通过对滤波器系数进行压缩编码,减少用于保持滤波器系数的存储器的存储量。
249.在本实施例中,通过保持包括零系数位置表和非零系数表的两个表,实现对滤波器系数的数据量的压缩,该零系数位置表指示分别为0值的滤波器系数(即,零系数)的位置,该非零系数表指示除零系数以外的滤波器系数的值。
250.具体而言,例如,如图6中的箭头q11所示,假定存在包括4
×
4抽头的滤波器系数的系数矩阵。在本示例中,箭头q11所示的系数矩阵中的正方形代表滤波器系数,并且正方形中的数值表示滤波器系数的值。
251.在本实施例中,这种系数矩阵被压缩编码并被转换为箭头q12所示的零系数位置表和箭头q13所示的非零系数表。
252.箭头q12所示的零系数位置表是抽头数与原始系数矩阵中的抽头数相同的4
×
4表格,并且,零系数位置表中的正方形中的数值表示具有与正方形相同的位置关系的系数矩
阵中的滤波器系数的值是否为0(零)。
253.即,当零系数位置表中的正方形中的数值为0时,这表示具有与正方形相同的位置关系的系数矩阵中的滤波器系数的值为0。因此,例如,在零系数位置表的图中,最左上的正方形中的值“0”表示系数矩阵中的方框中的、具有相同位置关系的最左上的方框中的滤波器系数的值为“0”。
254.另一方面,当零系数位置表中的正方形中的数值为1时,这表示具有与正方形相同的位置关系的系数矩阵中的滤波器系数的值不为0。因此,例如,在零系数位置表的图中,最左、次最上的正方形中的值“1”表示,系数矩阵的图中的具有相同位置关系的最左、次最上的滤波器系数的值不是“0”。
255.另外,箭头q13所示的非零系数表是指示原始系数矩阵中的不是零系数的滤波器系数的值的表,并且,非零系数表中的一个正方形中的值指示系数矩阵中的不是零系数的一个滤波器系数的值。
256.在本示例中,在非零系数表中,不是零系数的滤波器系数的值(即,在零系数位置表中指示为“1”的滤波器系数的值)以在系数矩阵中的方框中从最左上滤波器系数开始的光栅扫描顺序排列。
257.例如,在非零系数表的图中,最左边正方形中的数值“3”表示系数矩阵中的第三左、最上的滤波器系数的值为“3”。
258.通过如上面描述的那样保持通过对系数矩阵进行压缩编码获得的零系数位置表和非零系数表,而不是保持系数矩阵本身,可以减少用于保持用于获得滤波器系数的信息的存储器的存储量。注意,在下面的描述中,“用于生成零系数位置表和非零系数表的系数矩阵(滤波器系数)的压缩编码”也将被称为“系数矩阵(滤波器系数)的稀疏表示”,并且,“通过压缩编码获得的零系数位置表和非零系数表”也将被称为“稀疏表示系数矩阵(滤波器系数)”。另外,“零系数位置表”也将被称为“稀疏矩阵”,并且,“非零系数表”也将被称为“非零数据队列”。
259.例如,在图6所示的示例中,如果一个滤波器系数是8位,则由于系数矩阵包括16个滤波器系数,因此系数矩阵的数据量是128(=16
×
8)位。
260.另一方面,在零系数位置表中,如果指示一个滤波器系数是否为零系数的值为1位,则零系数位置表的数据量为16(=16
×
1)位。
261.另外,在非零系数表中,如果一个滤波器系数的值是8位,则由于不是零系数的滤波器系数的数量在这里是5,因此非零系数表的数据量是40(=5
×
8)位。
262.然后,由于零系数位置表的数据量和非零系数表的数据量的和为56(=40+16)位,因此,可以看出,与原始系数矩阵的数据量(即,128位)相比,数据量(即,存储量)被压缩到约1/2。随着零系数的数量增加,包括滤波器系数的系数矩阵以更高的速率被压缩。
263.1.4关于通过数据压缩的处理量的减少
264.此外,在本实施例中,通过对系数矩阵进行压缩编码,当在卷积层中执行处理时,也可以减少处理量。
265.例如,在使用系数矩阵的卷积处理中,通过使用系数矩阵执行矩阵运算。因此,无论滤波器系数是否为零系数,都对所有滤波器系数计算滤波器系数与要卷积的数据的乘积(乘法处理)以及乘积的和(加法处理)。
266.另一方面,在系数矩阵被压缩编码的情况下,首先,基于零系数位置表和非零系数表执行解码处理,并且,通过使用作为结果获得的滤波器系数执行卷积处理。
267.此时,在解码处理中,只需要仅对于在零系数位置表中值不为0的位置从非零系数表加载滤波器系数,因此,与诸如huffman编码之类的其他压缩方法的处理量相比,解码的处理量小。
268.此外,在解码处理之后的卷积处理中,也只需要计算仅加载的滤波器系数和要卷积的数据的乘积(乘法处理)以及乘积的和(加法处理),因此,卷积处理本身的处理量可以被减少。
269.作为结果,当零系数的数量大时,解码处理和用于卷积处理的运算的总处理量比原样使用系数矩阵的情况下的卷积处理的处理量小。另外,零系数的数量越大,处理量的减少率越高。
270.1.5关于学习方法
271.注意,在神经网络的系数学习中,系数矩阵中的零系数的数量可以例如通过l1正则化、l2正则化或与其等效的正则化方法来增加。因此,当具有神经网络结构的判别器学习时,如果通过正则化适当地调整零系数的数量,则可以通过压缩编码滤波器系数来减少处理量和存储量。
272.注意,在例如“ian goodfellow,yoshua bengio,and aaron courville,deep learning,the mit press,2016”中详细描述了在神经网络的系数学习中的正则化。
273.1.6神经网络处理装置的构成示例
274.接下来,将描述根据上述本实施例的神经网络处理装置。
275.图7是示出根据本实施例的神经网络处理装置的某个方面的构成示例的示图。
276.图7所示的神经网络处理装置11是包括具有神经网络结构的判别器的信息处理装置,在该神经网络结构中,用关于输入数据的形状和帧长度确定的抽头数、样本宽度和样本前进数在层中执行运算处理。
277.神经网络处理装置11通过基于供给的输入数据在神经网络的层中的每一个中执行运算处理,执行对输入数据的判别处理并且输出表示判别结果的判别结果数据。
278.注意,这里将描述神经网络处理装置11是具有参考图5描述的神经网络结构的判别器的示例。
279.神经网络处理装置11包括卷积处理单元21、池化处理单元22、卷积处理单元23、池化处理单元24和卷积处理单元25。
280.在这种情况下,卷积处理单元21至卷积处理单元25构成具有参考图5描述的神经网络结构的判别器。换句话说,卷积运算单元21至卷积运算单元25构成神经网络。
281.卷积处理单元21在卷积层1

中对供给的输入数据执行处理,并将作为结果获得的中间数据供给到池化处理单元22。
282.卷积处理单元21包括解码单元41、存储器42和系数保持单元43。
283.例如,系数保持单元43包括非易失性存储器。系数保持单元43保持通过对分别具有20
×
1抽头的四种不同类型的滤波器中的每一种的滤波器系数进行压缩编码获得的零系数位置表和非零系数表,这些滤波器系数是通过学习预先获得的。
284.解码单元41基于各滤波器的零系数位置表和非零系数表,对滤波器系数执行解码
处理,以获得各滤波器的不是零系数的滤波器系数。存储器42包括例如用于临时保持供给的输入数据和正在运算的数据的易失性存储器。
285.池化处理单元22在池化层1

中对从卷积处理单元21供给的中间数据执行处理,并将作为结果获得的中间数据供给到卷积处理单元23。池化处理单元22包括存储器51。存储器51包括例如用于临时保持从卷积处理单元21供给的中间数据和正在运算的数据的易失性存储器。
286.卷积处理单元23在卷积层2

中对从池化处理单元22供给的中间数据执行处理,并将作为结果获得的中间数据供给到池化处理单元24。
287.卷积处理单元23包括解码单元61、存储器62和系数保持单元63。
288.例如,系数保持单元63包括非易失性存储器。系数保持单元63保持通过对分别具有10
×
4抽头的八种不同类型的滤波器中的每一种的滤波器系数进行压缩编码获得的零系数位置表和非零系数表,这些滤波器系数是通过学习预先获得的。
289.解码单元61基于各滤波器的零系数位置表和非零系数表对滤波器系数执行解码处理,以获得各滤波器的不是零系数的滤波器系数。存储器62包括例如用于临时保持从池化处理单元22供给的中间数据和正在运算的数据的易失性存储器。
290.池化处理单元24在池化层2

中对从卷积处理单元23供给的中间数据执行处理,并将作为结果获得的中间数据供给到卷积处理单元25。池化处理单元24包括存储器71。存储器71包括例如用于临时保持从卷积处理单元23供给的中间数据和正在运算的数据的易失性存储器。
291.卷积处理单元25在卷积层3

中对从池化处理单元24供给的中间数据执行处理,并输出作为结果获得的判别结果数据。
292.卷积处理单元25包括解码单元81、存储器82和系数保持单元83。
293.例如,系数保持单元83包括非易失性存储器。系数保持单元83保持通过对具有8
×
8抽头的滤波器的滤波器系数进行压缩编码获得的零系数位置表和非零系数表,这些滤波器系数是通过学习预先获得的。
294.解码单元81基于滤波器的零系数位置表和非零系数表对滤波器系数执行解码处理,以获得滤波器的不是零系数的滤波器系数。存储器82包括例如用于临时保持从池化处理单元24供给的中间数据和正在运算的数据的易失性存储器。
295.注意,这里描述了神经网络处理装置11由具有参考方框5描述的神经网络结构的判别器构成的示例。但是,神经网络处理装置11可以由具有参照图4描述的神经网络结构的判别器构成。
296.在这种情况下,卷积层1

中的处理由卷积处理单元21执行,池化层1中的处理由池化处理单元22执行,卷积层2中的处理由卷积处理单元23执行,池化层2中的处理由池化处理单元24执行,并且,卷积层3中的处理由卷积处理单元25执行。
297.1.7判别处理的描述
298.接下来,将描述神经网络处理装置11的操作。即,下面参考图8的流程图描述由神经网络处理装置11执行的判别处理。注意,针对输入数据的各帧执行该判别处理。
299.在步骤s11中,卷积处理单元21的解码单元41从系数保持单元43读取零系数位置表和非零系数表,并且基于零系数位置表和非零系数表对滤波器系数执行解码处理。另外,
卷积处理单元21的存储器42临时记录供给的输入数据。
300.在步骤s12中,卷积处理单元21基于通过步骤s11中的处理获得的四个滤波器的滤波器系数,对滤波器中的每一个以8样本前进方式对记录在存储器42中的输入数据执行卷积处理。例如,在步骤s12中,仅通过使用不是零系数的滤波器系数执行卷积处理。
301.卷积处理单元21将通过卷积处理获得的中间数据供给到池化处理单元22的存储器51,以临时记录中间数据。
302.该卷积处理使得能够如图5中的数据区域w61那样多地减少卷积处理的处理量和存储器42的存储量。此外,可以如零系数的数量那样多地减少运算处理的处理量。
303.在步骤s13中,池化处理单元22对记录在存储器51中的中间数据执行池化处理,来以8样本前进方式对具有8样本宽度的数据区域提取最大值。池化处理单元22将通过池化处理获得的中间数据供给到卷积处理单元23的存储器62,以临时记录中间数据。
304.池化处理使得能够如图5中的数据区域w62那样多地减少池化处理的处理量和存储器51的存储量。
305.在步骤s14中,卷积处理单元23的解码单元61从系数保持单元63读取零系数位置表和非零系数表,并且基于零系数位置表和非零系数表对滤波器系数执行解码处理。
306.在步骤s15中,卷积处理单元23基于通过步骤s14中的处理获得的八个滤波器的滤波器系数,对滤波器中的每一个以2样本前进方式对记录在存储器62中的中间数据执行卷积处理。例如,在步骤s15中,仅通过使用不是零系数的滤波器系数执行卷积处理。
307.卷积处理单元23将通过卷积处理获得的中间数据供给到池化处理单元24的存储器71,以临时记录中间数据。
308.该卷积处理使得能够如图5中的数据区域w63那样多地减少卷积处理的处理量和存储器62的存储量。此外,可以如零系数的数量那样多地减少运算处理的处理量。
309.在步骤s16中,池化处理单元24对记录在存储器71中的中间数据执行池化处理,来以8样本前进方式对具有8样本宽度的数据区域提取最大值。池化处理单元24将通过池化处理获得的中间数据供给到卷积处理单元25的存储器82,以临时记录中间数据。
310.该池化处理使得能够如图5中的数据区域w64那样多地减少池化处理的处理量和存储器71的存储量。
311.在步骤s17中,卷积处理单元25的解码单元81从系数保持单元83读取零系数位置表和非零系数表,并且基于零系数位置表和非零系数表对滤波器系数执行解码处理。
312.在步骤s18中,卷积处理单元25基于通过步骤s17中的处理获得的一个滤波器的滤波器系数,对滤波器以1样本前进方式对记录在存储器82中的中间数据执行卷积处理。例如,在步骤s18中,仅通过使用不是零系数的滤波器系数执行卷积处理。该卷积处理使得能够如零系数的数量那样多地减少运算处理的处理量。
313.卷积处理单元25输出通过卷积处理获得的判别结果数据,并且判别处理结束。
314.如上所述,神经网络处理装置11通过用关于输入数据的形状和帧长度确定的抽头数、样本宽度和样本前进数在层中的每一个中执行运算处理,来生成判别结果数据。通过这样做,可以减少处理量和存储量,由此更有效地执行判别。
315.此外,神经网络处理装置11基于预先保持的零系数位置表和非零系数表执行解码处理,并且通过使用作为结果获得的滤波器系数执行卷积处理。通过这样做,可以减少用于
保持滤波器系数的存储器的存储量,并且,由于省略零系数的积和运算,因此还可以减少卷积处理的处理量。
316.注意,神经网络处理装置11可以是预测用于上述频带扩展的高频子带功率(伪高频子带功率)的预测器。
317.在这种情况下,低频子带功率作为输入数据被输入到卷积处理单元21,并且,卷积处理结果(运算结果)作为高频子带功率的预测结果从卷积处理单元25被输出。然而,在这种情况下,以与参考图5描述的处理不同的方式在层中的每一个中执行处理。
318.1.8系数矩阵的稀疏表示的效果
319.在以上的描述中,描述了用于在神经网络的学习处理中生成包括许多零的系数矩阵的学习方法(1.5关于学习方法)、对系数矩阵进行压缩编码的方法(1.3关于滤波器系数的压缩编码)和用于通过数据压缩减少处理量的方法(1.4关于通过数据压缩的处理量的减少)。
320.这里,在本实施例中,通过将系数矩阵划分为零系数位置表和非零系数表并存储零系数位置表和非零系数组(即,通过稀疏表示系数矩阵),实施系数矩阵的压缩编码。当该方法被应用于使用实际神经网络的推理任务时,可以确认形成在系数矩阵中包括许多零系数的网络,并且在推理处理中,系数矩阵的存储量减少到1/4或更少。
321.这种结果表明,可以在保持精度和速度的同时减少存储量,并且,可以在抑制存储量增加的同时将神经网络的大小增加几倍。例如,关于需要诸如外部声音识别之类的实时处理的网络,通过将本实施例应用于在常规上如果其大小不受限制则不能确保实时处理的神经网络,能够在抑制存储量的增加的同时将神经网络的大小扩展两倍到四倍。另外,通过将本实施例应用于具有固定存储量的嵌入式系统,能够在不改变系统的物理构成的情况下通过神经网络另外实现推理任务。因此,能够更新系统,使得可以执行更复杂的识别处理。
322.如上所述,通过将正则化方法结合到神经网络的学习中,能够生成整体上生成许多零系数的学习模型。然后,通过使用其中通过划分以这种方式生成的系数矩阵来记录零系数位置表和非零系数表的稀疏表示方法,能够压缩系数矩阵并减少存储量。
323.1.9适于解码稀疏表示系数的解码单元
324.稀疏表示系数矩阵可以通过软件扩展,但也可以通过硬件扩展。在下面的描述中,将用具体示例描述作为硬件构成实现的解码单元。
325.1.9.1由解码单元执行的解码处理
326.图9是示出由根据本实施例的解码单元执行的一系列操作(即,用于解码稀疏表示系数的处理)的示例的流程图。在图9中,为了清楚起见,将由解码单元执行的解码处理描述为流程图,但实际上,根据图9的解码算法可以实施为图7所示的神经网络处理装置11的解码单元41、61和81中的硬件构成。注意,在下面的描述中,为了简单起见,当不相互区分解码单元41、61和81时,使用附图标记“101”;当不相互区分存储器42、62和82时,使用附图标记“102”;并且,当不相互区分系数保持单元43、63和83时,使用附图标记“103”。
327.如图9所示,解码单元101首先从系数保持单元103读取零系数位置表(spmat)q12和非零系数表q13(加载spmat)(步骤s101)。读取的零系数位置表q12和非零系数表q13例如存储在解码单元101的存储器102中的已知地址处。
328.接下来,解码单元101初始化指示零系数位置表q12中的系数w的位置的相位指针p
(p

0)(步骤s102)。
329.此外,解码单元101将用于指向位于存储器102中的非零系数表q13的头部的系数w(非零系数)的地址(以下称为头部地址)设定在指示非零系数表q13中的位置的非零系数队列指针wadr中(wadr

init)(步骤s103)。
330.接下来,解码单元101确定相位指针p关于存储器102中的零系数位置表q12指向的值是“0”还是“1”(spmat[p])(步骤s104)。注意,“0”可以对应于例如权利要求书中的第一值,并且,“1”可以对应于例如权利要求书中的第二值。
[0331]
当由相位指针p指向的值为“1”(步骤s104中的“1”)时,解码单元101从存储器102中的非零系数表q13读取由非零系数队列指针wadr指向的非零系数wque[wadr](加载wque[wadr])(步骤s105),并将读取的非零系数wque[wadr]存储在系数缓存器(wbuf)114中的预定位置处(将wque推送至wbuf)(步骤s106)。注意,系数缓存器114是在解码处理中依次组装系数矩阵q11中的系数的缓存器,并且,预定位置可以是对应于在系数矩阵q11中由相位指针p指向的位置的位置。
[0332]
然后,解码单元101递增非零系数队列指针wadr,即,设定在非零系数队列指针wadr中存储下一非零系数的地址(wadr++)(步骤s107),并且进行到步骤s109。
[0333]
另一方面,在步骤s104中,当由相位指针p指向的值为“0”(在步骤s104中为“0”)时,解码单元101将零值存储在系数缓存器114中的预定位置(将zero推送至wbuf)(步骤s108),并且进行到步骤s109。
[0334]
在步骤s109中,解码单元101将相位指针p递增1,即,将下一系数w的位置设定为相位指针p(p++)。
[0335]
然后,解码单元101确定递增的相位指针p是否超过指示零系数位置表q12的尾部的相位指针p的最大值pmax(p》pmax?)(步骤s110)。当递增的相位指针p超过最大值pmax(在步骤s110中为是)时,解码单元101结束该操作。另一方面,当递增的相位指针p不超过最大值pmax(在步骤s110中为否)时,解码单元101返回步骤s104并执行后续步骤。
[0336]
通过如上面描述的那样操作解码单元101,系数矩阵q11在系数缓存器114中恢复。
[0337]
1.9.2解码处理的具体示例
[0338]
随后,将参照图10和图11,根据图9所示的流程图描述由根据本实施例的解码单元101执行的解码处理的具体示例。图10是用于说明根据本实施例的由解码单元执行的解码处理的具体示例的示图。图11是用于说明图10所示的具体示例中的相位指针和非零系数队列指针的移动的示图。注意,图10和11示出系数矩阵q11具有1行和8列的构成并且非零系数存储在第三列、第五列和第八列中的情况。另外,假定第三列中的非零系数为0.1、第五列中的非零系数为-0.8且第八列中的非零系数为0.6。
[0339]
如图10所示,解码单元101包括生成并管理非零系数队列指针wadr的地址生成单元111、根据由相位指针p指向的值输出“非零系数wque[wadr]”或“0”的选择器112、通过将从选择器112输出的值依次存储在系数缓存器114中从而在系数缓存器114中恢复系数矩阵q11的积和器件113,和存储恢复的系数矩阵q11的系数缓存器114。
[0340]
在图10所示的构成中,解码单元101首先从系数保持单元103获取零系数位置表q12(=“00101001”)和非零系数表q13(=“0.1”、
“‑
0.8”、“0.6”)(对应于图9中的步骤s101)。另外,在第一重复(itr=0)处,解码单元101将相位指针p初始化为0,并在由地址生
成单元111管理的非零系数队列指针wadr中设定头地址(对应于图9中的步骤s102和s103)。作为结果,如图11所示,相位指针p指向作为零系数位置表q12中的最左边(头部)值的“0”,而非零系数队列指针wadr指向作为非零系数表q13中的头部值的“0.1”。
[0341]
接下来,解码单元101确定由相位指针p当前指向的值是“0”还是“1”(对应于图9中的步骤s104)。如上所述,在itr=0处,相位指针p指向“0”。因此,“0”被输入到选择器112的控制端子。在这种情况下(对应于图9中的步骤s104中的“0”),值“0”从选择器112被输入到积和器件113,无需解码单元101从非零系数表q13中取出值。同时,积和器件113将输入值“0”作为头部系数w存储在系数缓存器114中(对应于图9中的步骤s108)。
[0342]
然后,解码单元101将相位指针p递增1(对应于图9中的步骤s109),并偏移到下一重复(itr=1)(对应于图9中的步骤s110中的否)。
[0343]
如图11所示,在itr=1处,与itr=0类似,由相位指针p指向的值为“0”(对应于图9中的步骤s104中的“0”)。因此,值“0”从选择器112输入到积和器件113,无需解码单元101从非零系数表q13取出值,并且,该值“0”作为第二系数w存储在系数缓存器114中(对应于图9中的步骤s108)。然后,相位指针p递增1(对应于图9中的步骤s109),并且,执行下一重复(itr=2)(对应于图9中的步骤s110中的否)。
[0344]
如图11所示,在itr=2处,由相位指针p指向的值为“1”。因此,“1”被输入到选择器112的控制端子。在这种情况下(对应于图9中的步骤s104中的“1”),基于当前非零系数队列指针wadr参考非零系数表q13(对应图9中的步骤s105的一部分和图10中的步骤s105a),解码单元101从非零系数表q13取出由非零系数队列指针wadr指向的值(非零系数)wque[wadr](=0.1),并将该值输入到选择器112(对应于图9中的步骤s105的一部分和图10中的步骤s105b)。同时,由于输入到控制端子的值为“1”,因此选择器112将输入的非零系数wque[wadr](=0.1)输入到积和器件113。然后,积和器件113将输入的非零系数wque[wadr](=0.1)作为第三系数w存储在系数缓存器114中(对应于图9中的步骤s106)。
[0345]
然后,非零系数队列指针wadr通过地址生成单元111递增到用于指向下一非零系数w的地址(对应于图9中的步骤s107),并且,相位指针p递增1(对应于步骤s109)。然后执行下一重复(itr=3)(对应于图9中的步骤s110中的否)。
[0346]
如图11所示,在itr=3处,与itr=0类似,由相位指针p指向的值为“0”(对应于图9中的步骤s104中的“0”)。因此,值“0”从选择器112被输入到积和器件113,无需解码单元101从非零系数表q13取出值,并且,该值“0”作为第四系数w存储在系数缓存器114中(对应于图9中的步骤s108)。然后,相位指针p递增1(对应于图9中的步骤s109),并且执行下一重复(itr=4)(对应于图9中的步骤s110中的否)。
[0347]
如图11所示,在itr=4处,由相位指针p指向的值为“1”(对应于图9中的步骤s104中的“1”)。因此,基于当前非零系数队列指针wadr参考非零系数表q13(对应于图9中的步骤s105的一部分和图10中的步骤s105a),解码单元101取出由非零系数队列指针wadr指向的非零系数wque[wadr](=-0.8),并将非零系数输入到选择器112(对应于图9中的步骤s105的一部分和图10中的步骤s105b)。然后,取出的非零系数wque[wadr](=-0.8)经由选择器112被输入到积和器件113,并且作为第五系数w存储在系数缓存器114中(对应于图9中的步骤s106)。然后,非零系数队列指针wadr和相位指针p递增1(对应于图9中的步骤s107和s109),并且执行下一重复(itr=5和itr=6中的每一个)(对应于图9中的步骤s110中的
否)。
[0348]
如图11所示,在itr=5和itr=6中的每一个处,与itr=0类似,由相位指针p指向的值为“0”(对应于图9中的步骤s104中的“0”)。因此,在itr=5和itr=6中的每一个处,值“0”从选择器112被输入到积和器件113,无需解码单元101从非零系数表q13取出值,并且该值“0”作为第六和第七系数w中的每一个被存储在系数缓存器114中(对应于图9中的步骤s108)。然后,相位指针p递增1(对应于图9中的步骤s109),并执行下一重复(itr=7)(对应于图9中的步骤s110中的否)。
[0349]
如图11所示,在itr=7处,由相位指针p指向的值为“1”(对应于图9中的步骤s104中的“1”)。因此,基于当前非零系数队列指针wadr参考非零系数表q13(对应于图9中的步骤s105的一部分和图10中的步骤s105a),解码单元101取出由非零系数队列指针wadr指向的非零系数wque[wadr](=0.6),并将非零系数输入到选择器112(对应于图9中的步骤s105的一部分和图10中的步骤s105b)。然后,取出的非零系数wque[wadr](=0.6)经由选择器112被输入到积和器件113,并且作为第八系数w被存储在系数缓存器114中(对应于图9中的步骤s106)。
[0350]
然后,非零系数队列指针wadr和相位指针p递增1(对应于图9中的步骤s107和s109),但递增的相位指针p超过最大值pmax(图9中的步骤s110中的是)。因此解码单元101结束该操作而不转移到下一重复。
[0351]
通过如上面描述的那样操作解码单元101,在处理完成后,在系数缓存器114中恢复包括“0”、“0”、“0.1”、“0”、
“‑
0.8”、“0”、“0”和“0.6”的系数矩阵q11。注意,在系数缓存器114中恢复的系数矩阵q11可以适当地从系数缓存器114读取,以供用于由解码单元101执行的卷积处理。
[0352]
如上所述,可以在解码单元101中的硬件中实施上述解码算法。在以直到相位指针p递增1的处理所需的时钟数为1个时钟(clk)的方式配置顺序电路的情况下,读取零系数位置表q12需要1个clk,并且获得解码值“0”、“0”、“0.1”、“0”、
“‑
0.8”、“0”、“0”和“0.6”需要8个clk。因此,可以用总共9个clk对系数矩阵q11进行解码。
[0353]
1.10作用和效果
[0354]
如上所述,根据本实施例,由于系数矩阵q11通过稀疏表示进行压缩编码并且稀疏表示系数矩阵存储在存储器102中,因此可以减少需要的存储量。此外,可以通过硬件实现能够减少存储量的解码单元101。
[0355]
2.第二实施例
[0356]
在根据上述第一实施例的卷积处理中,需要在保持要运算的变量x和系数w之间的对应关系的同时执行卷积运算。因此,在以硬件构成实施解码单元101的情况下,需要以变量矩阵中的变量x的位置与系数矩阵q11中的系数w的位置对准的方式,将要卷积的变量矩阵和系数矩阵q11输入到执行积和运算的积和电路。
[0357]
这里,在第一实施例中,系数w以稀疏表示的状态存储在存储器102(和系数保持单元103)中,而变量x以正常表示的状态(即,未压缩状态)存储在存储器102中。因此,需要在考虑变量x和系数w之间的同步的同时解码系数矩阵q11并读取变量x。因此,在本实施例中,用示例描述使得能够实现变量x和系数w之间的同步的解码单元。
[0358]
注意,根据本实施例的神经网络处理装置可以具有与根据第一实施例参考图7等
描述的神经网络处理器装置11的构成类似的构成,因此,这里将省略其详细描述。此外,在下面的描述中,假定要卷积的变量矩阵q14具有与用于卷积处理的系数矩阵q11相同的数据长度和相同的数据结构。
[0359]
2.1适于解码稀疏表示系数的解码单元
[0360]
在使系数矩阵与变量x同步的同时对系数矩阵进行解码的解码单元可以实现为软件或者可以实现为硬件。在下面的描述中,将用具体示例描述作为硬件构成实现的解码单元。
[0361]
2.1.1由解码单元执行的解码处理
[0362]
图12是示出根据本实施例的由解码单元执行的一系列操作(即,用于解码稀疏表示系数的处理)的示例的流程图。在图12中,为了清楚起见,将由解码单元执行的解码处理描述为流程图,但实际上,根据图12的解码算法可以实施为图7所示的神经网络处理装置11的解码单元41、61和81中的硬件构成。另外,关于图12中与图9所示的操作相同的操作,将引用该操作,并且将省略其详细描述。
[0363]
如图12所示,通过执行图9中的步骤s101~s103中的操作,解码单元101首先从系数保持单元103读取零系数位置表(spmat)q12和非零系数表q13、初始化相位指针p并在非零系数队列指针wadr中设定头部地址。
[0364]
此外,在本实施例中,解码单元101在指示在变量矩阵q14中排列要处理的变量x的位置的变量队列指针xadr中,设定用于指向位于存储器102中的变量矩阵q14的头部的变量x的头部地址(xadr

init)(步骤s201)。
[0365]
接下来,与图9中的步骤s104类似,解码单元101确定相位指针p关于存储器102中的零系数位置表q12指向的值是“0”还是“1”。当相位指针p指向的数值是“1”时,与图9中的步骤s105~s107类似,解码单元102从存储器102中的非零系数表q13读取非零系数wque[wadr],将非零系数存储在系数缓存器wbuf中的预定位置处,并递增非零系数队列指针wadr。当相位指针p指向的值为“0”时,与图9的步骤s108类似,解码单元101将零值存储在系数缓存区wbuf的预定位置处。
[0366]
接下来,解码单元101从存储器102中的变量矩阵q14读取由变量队列指针xadr指向的变量xque[xadr](加载xque[xadr])(步骤s202),并将读取的变量xqe[xadr]存储在变量缓存器(xbuf)115中的预定位置处(将xque推送至xbuf)(步骤s303)。注意,变量缓存器115是在解码处理期间与系数矩阵q11的恢复同步地读取变量矩阵q14的缓存器,并且,预定位置可以是对应于变量队列指针xadr在变量矩阵q14中指向的位置的位置。
[0367]
然后,解码单元101递增变量队列指针xadr,即,设定在变量队列指针xadr中存储下一变量x的地址(xadr++)(步骤s204),并进行到步骤s110。
[0368]
在步骤s110中,与图9中的步骤s110类似,解码单元101确定递增的相位指针p是否超过指示零系数位置表q12的尾部的相位指针p的最大值pmax。当递增的相位指针p超过最大值pmax(在步骤s110中为是)时,解码单元102结束该操作。另一方面,当递增的相位指针p不超过最大值pmax(在步骤s110中为否)时,解码单元101返回步骤s104并执行后续步骤。
[0369]
通过如上面描述的那样操作解码单元101,在系数缓存器114中恢复系数矩阵q11,并且,要处理的变量矩阵q14被读取到变量缓存器115中。
[0370]
2.1.2解码处理的具体示例
[0371]
随后,将参照图13和图11,根据图12所示的流程图描述根据本实施例的由解码单元101执行的解码处理的具体示例。图13是用于说明根据第二实施例的由解码单元执行的解码处理的具体示例的示图。注意,与图10和图11类似,图13示出系数矩阵q11具有1行和8列的构成并且非零系数存储在第三、第五和第八列中的情况。另外,假定第三列中的非零系数为0.1、第五列中的非零系数为-0.8且第八列中的非零系数为0.6。此外,在图13中,假定变量矩阵q14具有包括系数x0~x7的八个系数x被排列在1行和8列中的配置。
[0372]
如图13所示,解码单元101包括生成和管理非零系数队列指针wadr的地址生成单元111a、生成和管理变量队列指针xadr的地址生成单元111b、根据相位指针p指向的值输出“非零系数wque[wadr]”或“0”的选择器112、通过将从选择器112输出的值依次存储在系数缓存器114中从而在系数缓存器113中恢复系数矩阵q11的积和器件113、存储恢复的系数矩阵q1的系数缓存器114,以及通过依次存储从存储器102读取的变量x保持变量矩阵q14的变量缓存器115。
[0373]
在图13所示的构成中,解码单元101首先从系数保持单元103获取零系数位置表q12(=“00101001”)和非零系数表q13(=“0.1”、
“‑
0.8”、“0.6”)(对应于图12中的步骤s101)。另外,在第一重复(itr=0)处,解码单元101将相位指针p初始化为0,并在由地址生成单元111a管理的非零系数队列指针wadr中设定头部地址(对应于图12中的步骤s102和s103)。作为结果,如图11所示,相位指针p指向作为零系数位置表q12中的最左边(头部)值的“0”,并且,非零系数队列指针wadr指向作为非零系数表q13中的头部值的“0.1”。
[0374]
此外,在第一重复(itr=0)处,解码单元101在由地址生成单元111b管理的变量队列指针xadr中设定头部地址(对应于图12中的步骤s201)。作为结果,变量队列指针xadr指向变量矩阵q14中的第一值x0。
[0375]
接下来,解码单元101确定相位指针p当前指向的值是“0”还是“1”(对应于图12中的步骤s104)。如上所述,在itr=0处,相位指针p指向“0”。因此,“0”被输入到选择器112的控制端子。在这种情况下(对应于图12中的步骤s104中的“0”),值“0”从选择器112被输入到积和器件113,无需解码单元101从非零系数表q13取出值。同时,积和器件113将输入值“0”作为头部系数w存储在系数缓存器114中(对应于图12中的步骤s108)。
[0376]
另外,基于当前变量队列指针xadr参考存储器102中的变量矩阵q14(对应于图12的步骤s202的一部分和图13的步骤s202a),解码单元101从变量矩阵q14取出由变量队列指针xadr指示的值xque[xadr](=x0),并将该值存储在变量缓存器115中(对应于图12中的步骤s203)。
[0377]
然后,解码单元101将相位指针p递增1(对应于图12中的步骤s109)并转移到下一重复(itr=1)(对应于图12中的步骤s110中的否)。
[0378]
如图11所示,在itr=1处,与itr=0类似,相位指针p指向的值为“0”(对应于图12中的步骤s104中的“0”)。因此,值“0”从选择器112被输入到积和器件113,无需解码单元101从非零系数表q13取出值,并且该值“0”作为第二系数w存储在系数缓存器114中(对应于图12中的步骤s108)。另外,基于当前变量队列指针xadr参考存储器102中的变量矩阵q14,并且,由此获取的变量xque[xadr](=x1)存储在变量缓存器115中(对应于图12中的步骤s202和s203)。然后,相位指针p递增1(对应于图12中的步骤s109),变量队列指针xadr通过地址生成单元111b递增到用于指向下一变量x2的地址(对应于图12中的步骤s204),并且,执行
下一重复(itr=2)(对应于图12的步骤s110中的否)。
[0379]
如图11所示,在itr=2处,相位指针p指向的值为“1”。因此,“1”被输入到选择器112的控制端子。在这种情况下(对应于图12中的步骤s104中的“1”),基于当前非零系数队列指针wadr参考非零系数表q13(对应图12中的步骤s105的一部分和图13中的步骤s105a),解码单元101从非零系数表q13取出由非零系数队列指针wadr指向的值(非零系数)wque[wadr](=0.1),并将该值输入到选择器112(对应于图12中的步骤s105的一部分和图13中的步骤s105b)。同时,由于输入到控制端子的值为“1”,因此选择器112将输入的非零系数wque[wadr](=0.1)输入到积和器件113。然后,积和器件113将输入的非零系数wque[wadr](=0.1)作为第三系数w存储在系数缓存器114中(对应于图12中的步骤s106)。另外,基于当前变量队列指针xadr参考存储器102中的变量矩阵q14,并且,由此获取的变量xque[xadr](=x2)被存储在变量缓存器115中(对应于图12中的步骤s202和s203)。
[0380]
然后,非零系数队列指针wadr通过地址生成单元111a递增到用于指向下一非零系数w的地址(对应于图12中的步骤s107),相位指针p递增1(对应于步骤s109),并且,变量队列指针xadr通过地址生成单元111b递增到用于指向下一变量x3的地址(对应于图12中的步骤s204)。然后,执行下一重复(itr=3)(对应于图12中的步骤s110中的否)。
[0381]
如图11所示,在itr=3处,与itr=0类似,由相位指针p指向的值为“0”(对应于图12中的步骤s104中的“0”)。因此,值“0”从选择器112被输入到积和器件113,无需解码单元101从非零系数表q13取出值,并且,该值“0”作为第四系数w被存储在系数缓存器114中(对应于图12中的步骤s108)。另外,基于当前变量队列指针xadr参考存储器102中的变量矩阵q14,并且,由此获取的变量xque[xadr](=x3)被存储在变量缓存器115中(对应于图12中的步骤s202和s203)。然后,相位指针p递增1(对应于图12中的步骤s109),变量队列指针xadr通过地址生成单元111b递增到用于指向下一变量x4的地址(对应于图12中的步骤s204),并执行下一重复(itr=4)(对应于图12中的步骤s110中的否)。
[0382]
如图11所示,在itr=4处,由相位指针p指向的值为“1”(对应于图12中的步骤s104中的“1”)。因此,基于当前非零系数队列指针wadr参考非零系数表q13(对应于图12中的步骤s105的一部分和图13中的步骤s105a),解码单元101取出由非零系数队列指针wadr指向的非零系数wque[wadr](=-0.8),并且将非零系数输入到选择器112(对应于图12中的步骤s105的一部分和图12中的步骤s105b)。然后,取出的非零系数wque[wadr](=-0.8)经由选择器112被输入到积和器件113,并且作为第五系数w存储在系数缓存器114中(对应于图12中的步骤s106)。另外,基于当前变量队列指针xadr参考存储器102中的变量矩阵q14,并且,由此获取的变量xque[xadr](=x4)被存储在变量缓存器115中(对应于图12中的步骤s202和s203)。然后,非零系数队列指针wadr、相位指针p和变量队列指针xadr递增(对应于图12中的步骤s107、s109和s204),并且执行接下来的重复(itr=5和itr=6)(对应于图9中的步骤s110中的否)。
[0383]
如图11所示,在itr=5和itr=6中的每一个处,与itr=0类似,由相位指针p所指向的值为“0”(对应于图12中的步骤s104中的“0”)。因此,在itr=5和itr=6中的每一个处,值“0”从选择器112被输入到积和器件113,无需解码单元101从非零系数表q13取出值,并且,该值“0”作为第六和第七系数w中的每一个被存储在系数缓存器114中(对应于图12中的步骤s108)。另外,基于当前变量队列指针xadr参考存储器102中的变量矩阵q14,并且,由此
获取的变量xque[xadr](=x5,x6)存储在变量缓存器115中(对应于图12中的步骤s202和s203)。然后,相位指针p递增1(对应于图12中的步骤s109),变量队列指针xadr通过地址生成单元111b递增到用于指向下一变量x7的地址(对应于图12中的步骤s204),并且,执行下一重复(itr=7)(对应于图12中的步骤s110中的否)。
[0384]
如图11所示,在itr=7处,由相位指针p指向的值为“1”(对应于图12中的步骤s104中的“1”)。因此,基于当前非零系数队列指针wadr参考非零系数表q13(对应于图12中的步骤s105的一部分和图13中的步骤s105a),解码单元101取出由非零系数队列指针wadr指向的非零系数wque[wadr](=0.6),并且将非零系数输入到选择器112(对应于图12中的步骤s105的一部分和图13中的步骤s105b)。然后,取出的非零系数wque[wadr](=0.6)经由选择器112被输入到积和器件113,并且作为第八系数w被存储在系数缓存器114中(对应于图12中的步骤s106)。另外,基于当前变量队列指针xadr参考存储器102中的变量矩阵q14,并且,由此获取的变量xque[xadr](=x7)被存储在变量缓存器115中(对应于图12中的步骤s202和s203)。
[0385]
然后,非零系数队列指针wadr、相位指针p和变量队列指针xadr递增(对应于图12中的步骤s107、s109和s204),但是递增的相位指针p超过最大值pmax(图12中的步骤s110中的是)。因此,解码单元101结束该操作而不转移到下一重复。
[0386]
通过如上面描述的那样操作解码单元101,在处理完成后,在系数缓存器114中恢复包括“0”、“0”、“0.1”、“0”、
“‑
0.8”、“0”、“0”和“0.6”的系数矩阵q11,并且在变量缓存器115中排列包括“x
0”、“x
1”、“x
2”、“x
3”、“x
4”、“x
5”、“x
6”和“x
7”的变量矩阵q14。注意,在系数缓存器114中恢复的系数矩阵q11的系数和在变量缓存器115中排列的变量矩阵q14的变量从各个头部被依次读取并且被输入到积和电路116,由此,基于积和运算执行卷积处理。
[0387]
可以在解码单元101中的硬件中实施上述解码算法。在以直到相位指针p递增1的处理所需的时钟数为1个时钟(clk)的方式配置顺序电路的情况下,读取零系数位置表q12需要1个clk,并且获得解码值“0”、“0”、“0.1”、“0”、
“‑
0.8”、“0”、“0”和“0.6”需要8个clk。因此,可以用总共9个clk对系数矩阵q11进行解码。
[0388]
2.2作用和效果
[0389]
通过如上面描述的那样在相位指针p递增1的定时递增变量队列指针xadr,由变量队列指针xadr指向的变量矩阵q14上的位置可以与由非零系数队列指针wadr指向的系数矩阵q11上的位置同步。作为结果,可以按运算次序排列系数缓存器114中的系数w和变量缓存器115中的变量x,由此使得易于将系数w和变数x输入到积和电路116。此时,通过将系数缓存器114和变量缓存器115配置为先入先出(fifo)缓存器,可以在所有系数w和变量x被完全存储在系数缓存器114和变量缓存器115中之前将系数w和参数x依次输入到积和电路116,由此使得能够进一步缩短从系数矩阵q11的解码开始到卷积处理的完成所需的时间。
[0390]
其他构成、操作和效果可以与上述实施例的构成、操作和效果类似,因此,这里将省略其详细描述。
[0391]
3.第三实施例
[0392]
在根据上述实施例的卷积处理中,无论系数w是零系数还是非零系数,都对所有系数w的变量x执行积和运算。但是,不管变量x具有什么值,零系数乘以变量x都导致零。因此,在本实施例中,将用示例描述省略对零系数的运算处理以提高总吞吐量并进一步缩短从系
数矩阵q11的解码开始到卷积处理的完成所需的时间的情况。
[0393]
注意,根据本实施例的神经网络处理装置可以具有与根据第一实施例参照图7等描述的神经网络处理器装置11的构成类似的构成,因此,这里将省略其详细描述。并且,在下面的描述中,假定要卷积的变量矩阵q14具有与用于卷积处理的系数矩阵q11相同的数据长度和相同的数据结构。
[0394]
3.1对零系数的积和运算的省略
[0395]
作为用于在积和运算中在省略对零系数的运算的同时对非零系数执行运算的构成,例如,可以使用优先级编码器。图14是用于说明根据本实施例的优先级编码器的示图。
[0396]
一般的优先级编码器是输出对应于输入“1”的输入的值的电路。在本实施例中,优先级编码器需要被配置为即使在“1”被输入到多个输入的情况下也输出一个值。因此,在本实施例中,对优先级编码器104的多个输入设定优先级。
[0397]
如图14所示,在本实施例中,优先级编码器104的有效输入的数量与在零系数位置表q12中包括“0”和“1”的次数(即,构成系数矩阵q11的系数w的数量(在图14中为8))相同。如在零系数位置表q12中排列的那样,值“0”或“1”被输入到输入中的每一个。因此,在本实施例中,根据零系数位置表q12中的值的排列,对优先级编码器104的各个输入设定优先级。
[0398]
在图14所示的示例中,优先级编码器104包括八个输入“a0”~“a7”,而当附加到“a”的数字较大时,设定较低优先级,使得最高优先级被设定给输入零系数位置表q12中的头部值的输入“a1”,并且最低优先级被设定给输入零系数位置表q12中的尾部值的输入“a7”。注意,在本说明书中,假定对应于各“a”所附数字的值q被设定为输入“a0”~“a7”中的每一个。
[0399]
优先级编码器104中的启用端子en可以是输出“1”是否被输入到输入“a0”~“a7”中的至少一个的端子。例如,在“0”被输入到所有输入“a0”~“a7”的情况下,优先级编码器104可以输出“1”作为启用信号。在这种情况下,可以从积和电路116输出“0”作为积和运算结果。另一方面,在“1”被输入到输入“a0”~“a7”中的至少一个的情况下,优先级编码器104可以输出例如“0”作为启用信号。在这种情况下,可以从积和电路116输出通过对存储在系数缓存器114中的系数w和存储在变量缓存器115中的变量x执行积和运算获得的值。
[0400]
例如,当“00101001”的零系数位置表q12被输入到优先级编码器104时,“0”被输入到输入“a0”、“a1”、“a3”、“a5”和“a6”,并且,“1”被输入到优先级编码器104的八个输入“a0”~“a7”中的输入“a2”、“s5”和“a8”。在这种情况下,由于输入“a2”、“s5”和“a8”中的具有最高优先级的输入是输入“a2”,因此,从优先级编码器104的输出o输出设定到输入“a2”的值q=2。
[0401]
从优先级编码器104输出的值q被用于例如设定相位指针q,该相位指针q指示从变量矩阵q14读取的变量x的位置。例如,在从优先级编码器104输出的值为“2”的情况下,“2”被设定为相位指针q,使得当从变量矩阵q14的头部计数时,相位指针q指向第三变量x2。类似地,在从优先级编码器104输出的值为“4”的情况下,“4”被设定为相位指针q,使得当从变量矩阵q14的头部计数时,相位指针q指向第五变量x4。
[0402]
注意,在根据优先级编码器104的输出设定相位指针q的值之后,对应于用作输出o的输入的零系数位置表q12上的值通过解码单元101例如从“1”重写为“0”。例如,在以“00101001”的零系数位置表q12为输入将相位指针q设定为设定到从优先级编码器104输出
的输入“a2”的“2”的itr=0处,零系数位置表q12通过解码单元101被重写为“00001001”。作为结果,输入到优先级编码器104的输入“a0”~“a7”的值变为“00000101”,并且,从优先级编码器104输出的值接着变为设定到输入“a4”的“4”。作为结果,在itr=1处,相位指针q被更新,使得当从变量矩阵q14的头部计数时,相位指针q指向第五变量x4。
[0403]
3.2适于解码稀疏表示系数的解码单元
[0404]
与根据上述实施例的解码单元101类似,根据本实施例的编码单元101可以实现为软件,也可以实现为硬件。在下面的描述中,将以具体示例描述作为硬件配置实现的解码单元。
[0405]
3.2.1解码单元执行的解码处理
[0406]
图15是示出根据本实施例的由解码单元执行的一系列操作(即,用于解码稀疏表示系数的处理)的示例的流程图。在图15中,为了清楚起见,将由解码单元执行的解码处理描述为流程图,但实际上,根据图15的解码算法可以实施为图7所示的神经网络处理装置11的解码单元41、61和81中的硬件构成。另外,关于与图9或图12所示的操作相同的图15中的操作,将引用该操作,并且将省略其详细描述。
[0407]
如图15所示,与图9中的步骤s101和s103类似,解码单元101首先从系数保持单元103读取零系数位置表(spmat)q12和非零系数表q13并在非零系数队列指针wadr中设定头部地址。另外,与图12中的步骤s201类似,解码单元101将头部地址设定为变量队列指针xadr。
[0408]
接下来,由解码单元101读取的零系数位置表q12被输入到优先级编码器104以供评估,使得指定输入“1”的输入中的具有最高优先级的输入(即,对应于零系数位置表q12中的第一“1”的输入)(p.e.spmat),并且,将被设定到指定输入的值设定到相位指针q(q

第一非零)(步骤s301)。
[0409]
接下来,与图9中的步骤s105和s106类似,解码单元101从存储器102中的非零系数表q13读取非零系数wque[wadr],并将非零系数wque[wadr]存储在系数缓存器wbuf中的预定位置。
[0410]
接下来,解码单元101读取存储器102中的变量矩阵q14中的、存储在变量队列指针xadr如相位针对q的值那样多地(从初始地址)偏移到的地址(xadr+q)处的变量xque[xadr+q],并将读取的变量xque[xadr+q]存储在变量缓存器(xbuf)115中的预定位置(将xque推送至xbuf)(步骤s303)。
[0411]
接下来,与图9中的步骤s107类似,解码单元101递增非零系数队列指针wadr。
[0412]
接下来,解码单元101将对应于在步骤s301中指定的输入的零系数位置表q12中的值重写为“0”(spmat[q])(步骤s304)。
[0413]
然后,解码单元101确定在步骤s304中更新后的零系数位置表q12中的所有值是否为“0”(spmat==0?)(步骤s305)。当更新后的零系数位置表q12中的所有值为“0”(在步骤s305中为是)时,解码单元101结束该操作。另一方面,当零系数位置表q12包括“1”(在步骤s305中为否)时,解码单元101返回步骤s301并执行后续操作。
[0414]
通过如上面描述的那样操作解码单元101,从系数矩阵q11提取的非零系数w被存储在系数缓存器114中,并且,对应于存储在系数缓存器114中的非零系数w的变量x被存储在变量缓存器115中。作为结果,由积和电路116执行的系数w和变量x的乘法次数可以大大
减少,由此大大减少从系数矩阵的解码开始到卷积处理的完成所需要的时间。
[0415]
3.2.2解码处理的具体示例
[0416]
随后,将参照图16和图17,根据图15所示的流程图,描述根据本实施例的由解码单元101执行的解码处理的具体示例。图16是用于说明根据本实施例的由解码单元执行的解码处理的具体示例的示图。图17是用于说明图16所示的具体示例中的相位指针、非零系数队列指针和变量队列指针的移动的示图。注意,与图10和图11类似,图16和17示出系数矩阵q11具有1行和8列的构成并且非零系数存储在第三、第五和第八列中的情况。另外,假定第三列中的非零系数为0.1、第五列中的非零系数为-0.8且第八列中的非零系数为0.6。此外,在图16和图17中,与图13类似,假定变量矩阵q14具有包括系数x0~x7的八个系数x被排列在1行和8列中的配置。
[0417]
如图16所示,解码单元101包括生成并管理非零系数队列指针wadr的地址生成单元111a、生成并管理变量队列指针xadr的地址生成单元111b、通过依次存储从存储器102读取的系数w保持包括非零系数w的系数矩阵q21的系数缓存器114,和通过依次存储从存储器102读取的变量x保持包括要乘以非零系数w的变量x的变量矩阵q24的变量缓存器115。
[0418]
在图16所示的构成中,解码单元101首先从系数保持单元103获取零系数位置表q12(=“00101001”)和非零系数表q13(=“0.1”、
“‑
0.8”、“0.6”)(对应于图15中的步骤s101)。另外,在第一重复(itr=0)处,解码单元101将头部地址设定到由地址生成单元111a管理的非零系数队列指针wadr,并将头部地址设定到由地址生成单元111b管理的变量队列指针xadr(对应于图15中的步骤s103和s201)。作为结果,如图17所示,非零系数队列指针wadr指向非零系数表q13中的头部值“0.1”,并且变量队列指针xadr指向变量矩阵q14中的头部变量x0。
[0419]
接下来,解码单元101将读取的零系数位置表q12输入到优先级编码器104,并指定头部的“1”的位置,即,系数矩阵q11中的头非零系数w的位置。如上所述,在itr=0处,由于零系数位置表q12是“00101001”的矩阵,因此优先级编码器104将设定到输入a2的值p=2作为输出o输出。同时,解码单元101将从优先级编码器104输出的值q=2设定到相位指针q(对应于图15中的步骤s301)。
[0420]
接下来,基于当前非零系数队列指针wadr参考非零系数表q13(对应于图15和图16中的步骤s105),解码单元101从非零系数表q13取出由非零系数队列指针wadr指向的值(非零系数)wque[wadr](=0.1),并将该值存储在系数缓存器114中(对应于图15和图16中的步骤s106)。
[0421]
另外,基于当前变量队列指针xadr和相位指针q参考变量矩阵q14(对应于图15和图16中的步骤s302),解码单元101从变量矩阵q14取出存储在变量队列指针wadr如相位指针q的值那样多地向变量矩阵q14的尾部偏移到的地址处的变量xque[wadr+q](=x2),并且将变量xque[wadr+q]存储在变量缓存器115中(对应于图15和图16中的步骤s303)。
[0422]
然后,非零系数队列指针wadr通过地址生成单元111a递增到用于指向下一非零系数w的地址(对应于图15中的步骤s107),并且,相位指针q当前指向的零系数位置表q12中的值“1”更新为“0”(对应于图15中的步骤s304)。随后,解码单元101确定是否零系数位置表q12中的所有值为“0”(对应于图15中的步骤s305),并执行下一重复(itr=1)(对应于图15中的步骤s305中的否)。
[0423]
如图17所示,在itr=1处,由于零系数位置表q12是“00001001”的矩阵,优先级编码器104将设定到输入a4的值p=4作为输出o输出。同时,解码单元101将从优先级编码器104输出的值q=4设定到相位指针q(对应于图15中的步骤s301)。
[0424]
接下来,基于当前非零系数队列指针wadr参考非零系数表q13(对应于图15和16中的步骤s105),解码单元101从非零系数表q13取出由非零系数队列指针wadr指向的值(非零系数)wque[wadr](=-0.8),并将该值存储在系数缓存器114中(对应于图15和图16中的步骤s106)。
[0425]
另外,基于当前变量队列指针xadr和相位指针q参考变量矩阵q14(对应于图15和图16中的步骤s302),解码单元101从变量矩阵q14取出存储在变量队列指针wadr如相位指针q的值那样多地向变量矩阵q14的尾部偏移到的地址处的变量xque[wadr+q](=x4),并将变量xque[wadr+q]存储在变量缓存器115中(对应于图15和图16中的步骤s303)。
[0426]
然后,非零系数队列指针wadr通过地址生成单元111a递增到用于指向下一非零系数w的地址(对应于图15中的步骤s107),并且,相位指针q当前指向的零系数位置表q12中的值“1”更新为“0”(对应于图15中的步骤s304)。随后,解码单元101确定是否零系数位置表q12中的所有值为“0”(对应于图15中的步骤s305),并执行下一重复(itr=2)(对应于图15中的步骤s305中的否)。
[0427]
如图17所示,在itr=2处,由于零系数位置表q12是“00000001”的矩阵,因此优先级编码器104将设定到输入a7的值p=7作为输出o输出。同时,解码单元101将从优先级编码器104输出的值q=7设定到相位指针q(对应于图15中的步骤s301)。
[0428]
接下来,基于当前非零系数队列指针wadr参考非零系数表q13(对应于图15和图16中的步骤s105),解码单元101从非零系数表q13取出由非零系数队列指针wadr指向的值(非零系数)wque[wadr](=0.6),并将该值存储在系数缓存器114中(对应于图15和图16中的步骤s106)。
[0429]
另外,基于当前变量队列指针xadr和相位指针q参考变量矩阵q14(对应于图15和图16中的步骤s302),解码单元101从变量矩阵q14取出存储在变量队列指针wadr如相位指针q的值那样多地向变量矩阵q14的尾部偏移到的地址处的变量xque[wadr+q](=x7),并将变量xque[wadr+q]存储在变量缓存器115中(对应于图15和图16中的步骤s303)。
[0430]
然后,非零系数队列指针wadr通过地址生成单元111a递增到用于指向下一非零系数w的地址(对应于图15中的步骤s107),并且将相位指针q当前指向的零系数位置表q12中的值“1”更新为“0”(对应于图15中的步骤s304)。但是,由于零系数位置表q12的所有值通过该更新变为“0”(在图15中的步骤s305中为是),解码单元101结束本操作而不执行下一重复。
[0431]
3.3作用和效果
[0432]
通过如上面描述的那样操作解码单元101,在处理完成后,在系数缓存器114中恢复包括非零系数w的系数矩阵q21,并且,在变量缓存器115中排列包括对应于非零系数w的变量x的变量矩阵q24。这使得能够将创建系数矩阵q21所需要的时钟数(例如,3个时钟)减少为小于恢复系数矩阵q11所需要的时钟数(例如,8个时钟)。另外,还能够省略在积和运算中将零系数w和变量x相乘的处理。作为结果,整体吞吐量得到提高,由此使得能够大大缩短从系数矩阵q11的解码开始到卷积处理的完成所需要的时间。注意,在系数缓存器114中恢
复的系数矩阵q21的系数和排列在变量缓存器115中的变量矩阵q24的变量从各个头部被依次读取并且被输入到积和电路116,由此基于积和运算执行卷积处理。
[0433]
另外,由于可以选择性地从存储器102读取积和运算所需的系数w和变量x,因此还能够减少总线流量并减少内部缓存器(系数缓存器114和变量缓存器115等)的规模。
[0434]
此外,与第二实施例类似,通过将系数缓存器114和变量缓存器115配置为fifo缓存器,可以在所有系数w和变量x完全存储在系数缓存器114和变量缓存器114中之前,将系数w和变数x依次输入到积和电路116,由此使得能够进一步缩短从系数矩阵q11的解码开始到卷积处理的完成所需要的时间。但是,在第三实施例中,系数w和变量x相乘的次数根据在零系数位置表q12中包括“1”的次数而变化。因此,在本实施例中,可以添加用于导致积和电路116以与在零系数位置表q12中包括“1”的次数相同的次数执行运算的配置或用于在fifo控制中将数据的结束通知给积和电路116的配置等。
[0435]
其他构成、操作和效果可以与上述实施例的构成、操作和效果类似,因此,这里将省略其详细描述。
[0436]
4.第四实施例
[0437]
在上述实施例中,例示了变量矩阵q14未被压缩编码的情况。然而,变量矩阵q14可以被压缩编码以进一步减少存储量。此外,在系数矩阵q11和变量矩阵q14两者通过稀疏表示进行压缩编码的情况下,能够省略除系数w和变量x两者被分类的部分以外的部分的运算,并因此还能够减少处理量以及缩短处理时间等。因此,在第四实施例中,将用示例描述除了系数矩阵q11之外还通过稀疏表示对变量矩阵q14进行压缩编码的情况。
[0438]
注意,根据本实施例的神经网络处理装置可以具有与在第三实施例中参照图7等描述的神经网络处理装置11的构成类似的构成,因此,这里将省略其详细描述。此外,在下面的描述中,假定要卷积的变量矩阵q14具有与用于卷积处理的系数矩阵q11相同的数据长度和相同的数据结构。
[0439]
此外,在本实施例中,假定与系数矩阵q11类似,变量矩阵q14如图6所示的那样被压缩编码为零变量位置表q32和非零变量表q33。注意,零变量位置表q32是具有与原始变量矩阵q14相同的抽头数的表,并且零变量位置表q32的各抽头中的数值可以指示对应于零变量位置表q32的抽头的变量矩阵q14的位置处的变量x的值是否为0(零)。另外,非零变量表q33是指示在原始变量矩阵q14中不是零变量的变量x的值的表,并且,非零变量表q33的各抽头中的值可以是在变量矩阵q14中不是零变量的一个变量x的数值。
[0440]
4.1适于解码稀疏表示系数的解码单元
[0441]
与根据上述实施例的解码单元101类似,根据本实施例的编码单元101可以实现为软件,或者可以实现为硬件。在下面的描述中,用具体示例描述实现为硬件构成的解码单元。
[0442]
4.1.1由解码单元执行的解码处理
[0443]
图18是示出根据本实施例的由解码单元执行的一系列操作(即,用于解码稀疏表示系数的处理)的示例的流程图。在图18中,为了清楚起见,将由解码单元执行的解码处理描述为流程图,但实际上,根据图18的解码算法可以实施为图7所示的神经网络处理装置11的解码单元41、61和81中的硬件构成。另外,关于与图9、图12或图15所示的操作相同的图18中的操作,将引用该操作,并且将省略其详细描述。
[0444]
如图18所示,解码单元101首先从系数保持单元103读取零系数位置表(spmatw)q12和非零系数表q13(步骤s401),并且读取存储在预定存储器区域中的稀疏表示变量矩阵(spmatx),即,零变量位置表(spmatx)32和非零变量表q33(步骤s402)。读取的零系数位置表q12和非零系数表q13以及读取的零变量位置表q32和非零变量表q33例如存储在解码单元101的存储器102中的已知地址处。
[0445]
接下来,解码单元101计算零系数位置表q12和零变量位置表q32之间的对应值的逻辑积(and),以生成指示在系数矩阵q11和变量矩阵q14中两者存在非零值的抽头的位置的非零位置表(spmat)q40(步骤s403)。
[0446]
接下来,解码单元101与图9中的步骤s103类似地将头部地址设定到非零系数队列指针wadr,并且与图12中的步骤s201类似地将头部地址设定到变量队列指针xadr。
[0447]
接下来,解码单元101将在步骤s403中生成的非零位置表q40输入到优先级编码器104以供评估,使得指定输入“1”的输入中的具有最高优先级的输入(即,对应于非零位置表q40中的第一“1”的输入)(p.e.spmat),并且,将设定到指定输入的值设定到相位指针q(q

第一非零)(步骤s404)。
[0448]
随后,解码单元101执行图18所示的步骤s410~s107的操作和步骤s420~s426的操作。可以在硬件上并行执行这些操作,并因此在图18的流程图中并行示出这些操作。
[0449]
在步骤s410~s107的操作中,解码单元101首先将在步骤s401中读取的零系数位置表(spmatw)q12输入到优先级编码器104以供评估,使得指定输入“1”的输入中的具有最高优先级的输入(即,对应于零系数位置表q12中的第一“1”的输入)(p.e.spmatw),并且,将设定到指定输入的值设定到相位指针qw(qw

第一非零)(步骤s410)。
[0450]
接下来,解码单元101确定在步骤s404中设定的非零位置表q40的相位指针q和在步骤s410中设定的零系数位置表q12的相位指针qw是否具有相同的值(qw==q?)(步骤s411)。当相位指针qw和相位指针q不具有相同的值(在步骤s411中为假)时,解码单元101递增非零系数队列指针wadr(wadr++)(步骤s412),将由相位指针qw指向的零系数位置表q12中的值从“1”重写为“0”(spmatw[qw]

0)(步骤s413),并返回步骤s410。另一方面,当相位指针qw和相位指针q具有相同值(在步骤s411中为真)时,与图9中的步骤s105~s107类似地,解码单元101从存储器102中的非零系数表q13读取非零系数wque[wadr],将非零系数wque[wadr]存储在系数缓存器wbuf中的预定位置处,并且递增非零系数队列指针wadr。然后,解码单元101转移到步骤s431。
[0451]
同时,在与步骤s410~s107并行执行的步骤s420~s426的操作中,解码单元101首先将在步骤s402中读取的零变量位置表(spmatx)q32输入到优先级编码器104以供评估,使得指定输入“1”的输入中的具有最高优先级的输入(即,对应于零变量位置表q32中的第一“1”的输入)(p.e.spmatx),并且,将设定到指定输入的值设定到相位指针qx(qx

第一非零)(步骤s420)。
[0452]
接下来,解码单元101确定在步骤s404中设定的非零位置表q40的相位指针q和在步骤s420中设定的零变量位置表q32的相位指针qx是否具有相同的值(qx==q?)(步骤s421)。当相位指针qx和相位指针q不具有相同的值(在步骤s421中为假)时,解码单元101递增变量队列指针xadr(xadr++)(步骤s422),将由相位指针qx指向的零变量位置表q32中的值从“1”重写为“0”(spmatx[qx]

0)(步骤s423),并返回到步骤s420。另一方面,当相位指
针qx和相位指针q具有相同的值(在步骤s421中为真)时,解码单元101从存储器102中的非零变量表q33读取非零变量xque[xadr](步骤s424),将读取的非零变量xque[xadr]存储在变量缓存器xbuf中的预定位置处(步骤s425),并递增非零变量队列指针xadr(步骤s426)。然后,解码单元101转移到步骤s431。
[0453]
通过如上面描述的那样并行执行步骤s410~s107的操作和步骤s420~s426的操作,系数w和变量x两者可以以分类的方式分别存储在系数缓存器114和变量缓存器115中。
[0454]
在步骤s431中,解码单元101将对应于在步骤s404中指定的输入的非零位置表q40中的值重写为“0”(spmat[q])。然后,解码单元101确定在步骤s431中更新后的非零位置表q40中的所有值是否为“0”(spmat==0?)(步骤s432)。当非零位置表q40中的所有值为“0”(在步骤s432中为是)时,解码单元101结束该操作。另一方面,当非零位置表q40包括“1”(在步骤s432中为否)时,解码单元101返回步骤s404并执行后续操作。
[0455]
通过如上面描述的那样操作解码单元101,系数w和变量x两者分别被分类到系数缓存器114和变量缓存器115中,即,非零系数w和非零变量x分别存储在系数缓存器114和变量缓存器114中。因此,可以减少存储量。此外,能够省略除系数w和变量x两者被分类到的部分以外的部分的运算,并因此也能够减少处理量以及缩短处理时间等。作为结果,由积和电路116执行的系数w和变量x的相乘次数可以大大减少,由此大大减少从系数矩阵的解码开始到卷积处理的完成所需要的时间。
[0456]
4.1.2解码处理的具体示例
[0457]
随后,将参照图19、图20和图21,根据图18所示的流程图,描述根据本实施例的由解码单元101执行的解码处理的具体示例。图19是用于说明根据本实施例的由解码单元执行的解码处理的具体示例的示图。图20和图21是用于说明图19所示的具体示例中的相位指针、非零系数队列指针和变量队列指针的移动的示图。注意,与图10和图11类似,图19~21示出系数矩阵q11具有1行和8列的构成并且非零系数存储在第三、第五和第八列中的情况。另外,假定第三列中的非零系数为0.1、第五列中的非零系数为-0.8且第八列中的非零系数为0.6。此外,在图19~21中,与图13类似,假定变量矩阵q14具有包括系数x0~x7的八个系数x被排列在1行和8列中的配置。
[0458]
如图19所示,解码单元101包括生成并管理非零系数队列指针wadr的地址生成单元111a、生成并管理变量队列指针xadr的地址生成单元111b、通过依次存储从存储器102读取的系数w保持包括非零系数w的系数矩阵q21的系数缓存器114,和通过依次存储从存储器102读取的变量x保持包括要乘以非零系数w的变量x的变量矩阵q24的变量缓存器115。
[0459]
在图19所示的构成中,解码单元101首先从系数保持单元103获取零系数位置表(spmatw)q12(=“00101001”)和非零系数表q13(=“0.1”、
“‑
0.8”、“0.6”)(对应于图18中的步骤s401),并从预定存储器区域获取零变量位置表(spmatx)q32和非零变量表q33(对应于图18中的步骤s402)。然后,解码单元101计算零系数位置表q12和零变量位置表q32的逻辑积,以生成指示系数w和变量x两者被分类到的位置的非零位置表(spmat)q40(对应于图18中的步骤s403)。
[0460]
另外,在第一重复(itr=0)处,解码单元101将头部地址设定到由地址生成单元111a管理的非零系数队列指针wadr,并将头部地址设定到由地址生成单元111b管理的变量队列指针xadr(对应于图18中的步骤s103和s201)。作为结果,如图20所示,非零系数队列指
针wadr指向非零系数表q13中的头部值“0.1”,并且,变量队列指针xadr指向非零变量表q33中的头部变量x0。
[0461]
接下来,解码单元101将读取的非零位置表q40输入到优先级编码器104,并指定头部的“1”的位置,即,系数w和变量x两者被分类的位置。如上所述,在itr=0处,由于非零位置表q40是“00100001”的矩阵,因此优先级编码器104将设定到输入a2的值p=2作为输出o输出。同时,解码单元101将从优先级编码器104输出的值q=2设定到相位指针q(对应于图18中的步骤s404)。
[0462]
接下来,解码单元101并行执行图18中的步骤s410~s107中的操作和步骤s420~s426中的操作。
[0463]
在图18中的步骤s410~s107的操作中,解码单元101将在步骤s401中读取的零系数位置表q12输入到优先级编码器104,并指定头部的“1”的位置,即,系数矩阵q11中头部非零系数w的位置。如图20所示,在itr=0处,由于零系数位置表q12是“00101001”的矩阵,因此优先级编码器104将设定到输入a2的值pw=2作为输出o输出。同时,解码单元101将从优先级编码器104输出的值qw=2设定到相位指针qw(对应于图18中的步骤s410)。
[0464]
随后,解码单元101将相位指针qw=2与相位指针q=2进行比较(对应于图18中的步骤s411)。由于相位指针qw和相位指针q彼此一致(对应于图18中的步骤s411中的真),因此解码单元101基于当前非零系数队列指针wadr参照非零系数表q13(对应于图18和图19中的步骤s105),从非零系数表q13取出由非零系数队列指针wadr指向的值(非零系数)wque[wadr](=0.1),并将该值存储在系数缓存器114中(对应于图18和图19中的步骤s106)。然后,解码单元101递增由地址生成单元111a管理的非零系数队列指针wadr(对应于图18中的步骤s107)。
[0465]
同时,在图18中的步骤s420~s426的操作中,解码单元101将在步骤s402中读取的零变量位置表q32输入到优先级编码器104,并指定头部的“1”的位置,即,变量矩阵q14中的头部非零变量x的位置。如图20所示,在itr=0处,由于零变量位置表q32是“10100111”的矩阵,因此优先级编码器104将设定到输入a0的值qx=0作为输出o输出。同时,解码单元101将从优先级编码器104输出的值qx=0设定到相位指针qx(对应于图18中的步骤s420)。
[0466]
随后,解码单元101将相位指针qx=0与相位指针q=2进行比较(对应于图18中的步骤s421)。由于相位指针qx和相位指针q彼此不一致(对应于图18中的步骤s421中的假),因此,如图20所示,解码单元101递增非零变量队列指针xadr(对应于图18中的步骤s422),将由相位指针qx当前指向的零变量位置表q32中的值重写为“0”(对应于图18的步骤s423),并将重写的零变量位置表q32再次输入到优先级编码器104(对应于图18中的步骤s420)。
[0467]
如图20所示,由于重写的零系数位置表q12是“00100111”的矩阵,因此值qx=2作为输出o从优先级编码器104被输出。同时,由于相位指针qx和相位指针q彼此一致(对应于图18中的步骤s421中的真),因此解码单元101基于当前非零变量队列指针xadr参考非零变量表q33(对应于图18和图19中的步骤s424),从非零变量表q33取出由非零变量队列指针wadr指向的值(非零变量)xque[xadr](=x2),并将该值存储在变量缓存器115中(对应于图18和图19中的步骤s425)。然后,解码单元101递增由地址生成单元111b管理的非零变量队列指针xadr(对应于图18中的步骤s426)。
[0468]
然后,解码单元101将由当前相位指针q当前指向的非零位置表q40中的值“1”更新
为“0”(对应于图18中的步骤s431)。随后,解码单元101确定是否非零位置表q40的所有值为“0”(对应于图18中的步骤s432),并且执行下一重复(itr=1)(对应于图18中的步骤s432中的否)。
[0469]
如图21所示,在itr=1处,由于非零位置表q40是“00000001”的矩阵,因此优先级编码器104将设定到输入a7的值p=7作为输出o输出。同时,解码单元101将从优先级编码器104输出的值q=7设定到相位指针q(对应于图18中的步骤s404)。
[0470]
接下来,在图18中的步骤s410~s107的操作中,解码单元101将在步骤s401中读取的零系数位置表q12输入到优先级编码器104,并指定头部的“1”的位置。如图21所示,在itr=1处,由于零系数位置表q12是“00001001”的矩阵,因此优先级编码器104将设定到输入a4的值pw=4作为输出o输出。同时,解码单元101将从优先级编码器104输出的值qw=4设定到相位指针qw(对应于图18中的步骤s410)。
[0471]
随后,解码单元101将相位指针qw=4与相位指针q=7进行比较(对应于图18中的步骤s411)。由于相位指针qw和相位指针q彼此不一致(对应于图18中的步骤s411中的假),因此,如图21所示,解码单元101递增非零系数队列指针wadr(对应于图18中的步骤s412),将由相位指针qw当前指向的零系数位置表q12中的值重写为“0”(对应于图18中的步骤s413),并将重写的零系数位表q12再次输入到优先级编码器104(对应于图18中的步骤s410)。
[0472]
如图21所示,由于重写的零系数位置表q12是“00000001”的矩阵,因此值qx=7作为输出o从优先级编码器104被输出。同时,由于相位指针qw和相位指针q彼此一致(对应于图18中的步骤s411中的真),因此解码单元101基于当前非零系数队列指针wadr参考非零系数表q13(对应于图18和图19中的步骤s105),从非零系数表q13取出由非零系数队列指针wadr指示的值(非零系数)wque[wadr](=0.6),并将该值存储在系数缓存器114中(对应于图18和图19中的步骤s106)。然后,解码单元101递增由地址生成单元111a管理的非零系数队列指针wadr(对应于图18中的步骤s107)。
[0473]
同时,在图18中的步骤s420~s426的操作中,解码单元101将在步骤s402中读取的零变量位置表q32输入到优先级编码器104,并指定头部的“1”的位置。如图21所示,在itr=1处,由于零变量位置表q32是“00000111”的矩阵,因此优先级编码器104将设定到输入a5的值qx=5作为输出o输出。同时,解码单元101将从优先级编码器104输出的值qx=5设定到相位指针qx(对应于图18中的步骤s420)。
[0474]
随后,解码单元101将相位指针qx=5与相位指针q=2进行比较(对应于图18中的步骤s421)。由于相位指针qx和相位指针q彼此不一致(对应于图18中的步骤s421中的假),因此,如图21所示,解码单元101递增非零变量队列指针xadr(对应于图18中的步骤s422),将由相位指针qx当前指向的零变量位置表q32中的值重写为“0”(对应于图18的步骤s423),并将重写的零变量位置表q32再次输入到优先级编码器104(对应于图18中的步骤s420)。
[0475]
如图21所示,由于重写的零系数位置表q12是“00000011”的矩阵,因此优先级编码器104将设定到输入a6的值qx=6作为输出o输出。同时,解码单元101将从优先级编码器104输出的值qx=6设定到相位指针qx(对应于图18中的步骤s420)。
[0476]
随后,解码单元101将相位指针qx=6与相位指针q=2进行比较(对应于图18中的步骤s421)。由于相位指针qx和相位指针q彼此不一致(对应于图18中的步骤s421中的假),
因此,如图21所示,解码单元101递增非零变量队列指针xadr(对应于图18中的步骤s422),将由相位指针qx当前指向的零变量位置表q32中的值重写为“0”(对应于图18的步骤s423),并将重写的零变量位置表q32再次输入到优先级编码器104(对应于图18中的步骤s420)。
[0477]
如图21所示,由于重写的零系数位置表q12是“00000001”的矩阵,因此值qx=7作为输出o从优先级编码器104被输出。同时,由于相位指针qx和相位指针q彼此一致(对应于图18中的步骤s421中的真),因此,解码单元101基于当前非零变量队列指针xadr参考非零变量表q33(对应于图18和图19中的步骤s424),从非零变量表q33取出由非零变量队列指针wadr指向的值(非零变量)xque[xadr](=x7),并将该值存储在变量缓存器115中(对应于图18和图19中的步骤s425)。然后,解码单元101递增由地址生成单元111b管理的非零变量队列指针xadr(对应于图18中的步骤s426)。
[0478]
然后,由相位指针q当前指向的非零位置表q40中的值“1”被更新为“0”(对应于图18中的步骤s431)。然而,由于非零位置表q40的所有值通过该更新变为“0”(在图18中的步骤s432中为是),因此解码单元101结束本操作而不执行下一重复。
[0479]
4.2作用和效果
[0480]
通过如上面描述的那样操作解码单元101,在处理完成后,系数w和变量x两者分别以分类状态存储在系数缓存器114和变量缓存器115中。作为结果,对积和运算没有实质贡献的系数w和变量x不存储在系数缓存器114和变量缓存器115中,由此使得能够进一步减少存储量。此外,能够省略除系数w和变量x两者被分类到的部分以外的部分的运算,并因此也能够减少处理量以及缩短处理时间等。
[0481]
其他构成、操作和效果可以与上述实施例的构成、操作和效果类似,因此,这里将省略其详细描述。
[0482]
5.第五实施例
[0483]
在上述实施例中,例示了对通过稀疏表示压缩编码的系数矩阵(和变量矩阵)进行解码的情况。相反,在第五实施例中,将用示例描述作为卷积处理的结果而获得的积和结果(即,变量矩阵)通过稀疏表示被压缩编码并且被写入到存储器中的情况。
[0484]
注意,根据本实施例的神经网络处理装置可以具有与根据第一实施例参考图7描述的神经网络处理器装置11的构成类似的构成,因此,这里将省略其详细描述。此外,在下面的描述中,假定要卷积的变量矩阵q14具有与用于卷积处理的系数矩阵q11相同的数据长度和相同的数据结构。
[0485]
5.1比较例
[0486]
图22是根据比较例的用于说明将积和结果写入存储器中的示图。如图22所示,在比较例中,无论变量x0~x7的值如何,作为从卷积处理单元21/23/25的积和电路116对于积和运算的各单位输出的积和运算结果的变量x0~x7都被依次写入到下一段的池化处理单元22/24的存储器51/71中。这里,例如,在变量x1、x3和x4如在上述实施例中例示的变量矩阵q14那样为零的情况下,能够通过由稀疏表示对变量矩阵q4进行压缩编码并然后将压缩编码的变量矩阵q14写入存储器51/71中,减少存储器51/71上的数据的量。
[0487]
5.2编码单元
[0488]
图23是示出根据本实施例的编码单元的示意性构成示例的电路图。注意,图23所示的编码单元200可以例如被排列在图7所示的神经网络处理装置11的各卷积处理单元21/
23/25的积和结果的输出段。
[0489]
如图23所示,根据本实施例的编码单元200包括例如缓存器电路201、确定电路202、选择器203、延迟电路204、稀疏矩阵缓存器(spmat buf)(第一缓存器)205和写入缓存器(第二缓存器)206。
[0490]
注意,积和电路116可以与上述实施例中的积和电路类似,并且包括例如将变量x和系数w相乘的乘法器161、将乘法结果相加的加法器162以及对于积和运算的各单位保持加法结果的累加器13。
[0491]
每次完成一次积和运算时,其结果从累加器163被输入到编码单元200的缓存器电路201。另外,每次完成一次积和运算时,积和结束通知例如从解码单元101或积和电路116被输入到缓存器电路201的启用端子en。当积和结束通知被输入到缓存器电路201时,缓存器电路201将保持在其中的积和运算结果(即,变量x)输出到确定电路202和写入缓存器206。
[0492]
确定电路202确定输入变量x中的每一个的值是零还是非零。当变量x的值为零(t:真)时,确定电路202向选择器203输出指示变量x为零的控制信号。另一方面,当变量x值为非零(f:假)时,判断电路202将指示变量x为非零的控制信号输出到写入缓存器206。
[0493]
选择器203根据从确定电路202输入的控制信号向稀疏矩阵缓存器205输入值“0”或“1”。例如,选择器203可以在向其输入指示变量x为零的控制信号时向稀疏矩阵缓存器205输出“0”,并且在不向其输入指示变量x为零的控制信号时输出“1”。注意,确定电路202可以被配置为向选择器203输出指示变量x为非零的控制信号,并且,选择器203可以接收控制信号并向稀疏矩阵缓存器205输出“1”。
[0494]
积和结束通知经由延迟电路204被输入到稀疏矩阵缓存器205,以供匹配定时。稀疏矩阵缓存器205根据积和结束通知的级别迁移依次保持从选择器203输入的值“0”或“1”。因此,零变量位置表q52在稀疏矩阵缓存器205中被构建为积和运算结果。然后,例如,当从解码单元101等输入映射结束通知(map end notification)时,保存在稀疏矩阵缓存器205中的零变量位置表q52被写入到下一段的池化处理单元22/24的存储器51/71中,并且,稀疏矩阵缓存器105中的零变位位置表q54被清除。注意,映射可以指的是经受一次卷积处理的所有数据。
[0495]
如上所述,从缓存器电路201输出的变量x和从确定电路202输出的控制信号被输入到写入缓存器206。要写入非零变量x的存储器区域的头部地址也被输入到写入缓存器206中。当指示变量x为非零的控制信号从确定电路202被输入到写入缓存器206中时,写入缓存器206临时保持从缓存器电路201输入的变量x。然后,例如,在对一个映射完成压缩编码处理的时间点,保持的变量x的矩阵(即,非零变量表q53)例如根据fifo控制从头部地址依次被存储在下一段的池化处理单元22/24的存储器51/71中。因此,非零变量表q53作为积和运算结果存储在存储器51/71中。注意,写入缓存器206可以保持与非零变量x的值同步地写入各非零变量的地址,并然后根据地址将非零变量x写入到存储器51/71中。
[0496]
5.3作用和效果
[0497]
通过将如上所述的编码单元200排列在各卷积处理单元21/23/25的输出段,能够通过稀疏表示对作为卷积处理结果获得的积和结果(即,变量矩阵q14)进行压缩编码,并将压缩编码的变量矩阵q14写入到存储器中。作为结果,可以减少存储器51/71上的数据量。
[0498]
其他构成、操作和效果可能与上述实施例的构成、操作和效果相似,因此,这里将省略其详细描述。
[0499]
6.第六实施例
[0500]
在上述的第五实施例中,当以稀疏表示方式将变量x写入到存储器51/71中时,考虑用于下一卷积处理单元23/25(以下,简称为下一层)中的卷积处理的系数w中的零系数的位置,使得可以进一步减少存储器容量。这是基于这样的思想:“在下一层的积和处理中,可以省略在从下一层的零系数位置表预先知道系数w为零的位置处对变量x进行的运算处理,因此,不需要将这种变量x写入当前层中的存储器中”。这在以偏移方式参考变量x的卷积神经网络(cnn)中的全连接层的后半部分也是有效的。因此,在第六实施例中,将用示例描述能够省略将从下一层的零系数位置表预先知道系数w为零的位置处的变量x写入到存储器中的配置。
[0501]
注意,根据本实施例的神经网络处理装置可以具有与根据第五实施例参考图7等描述的神经网络处理器装置11的构成类似的构成,因此,这里将省略其详细描述。此外,在下面的描述中,假定要卷积的变量矩阵q14具有与用于卷积处理的系数矩阵q11相同的数据长度和相同的数据结构。
[0502]
6.1编码单元
[0503]
图24是示出根据本实施例的编码单元的示意性构成示例的电路图。如图24所示,根据本实施例的编码单元300具有两个and电路301和302以及寄存器303被添加到在第五实施例中参考图23描述的编码单元200的构成的构成。注意,为了简化描述,图24示出卷积单元21、23和25中的存储器102以及池化处理单元22和24中的存储器51和71被排列在连续的存储器区域304上的情况。
[0504]
寄存器303存储预先从存储器区域304(下一层的存储器102)读取的下一层的零系数位置表q62。寄存器303根据积和结束通知的迁移,将构成零系数位置表q62的值“0”或“1”逐个输出到两个and电路301和302中的每一个。
[0505]
and电路301执行指示从确定电路202输出的变量x是零变量的控制信号“1”与指示从寄存器303输出的系数w是零系数还是非零系数的值(“0”或“1”)的逻辑积,并将逻辑积的结果输入到选择器203的控制端子。
[0506]
同时,选择器203在从and电路301输入的值为“1”时(即,在从缓存器电路201输入的变量x为非零变量x且下一层的系数矩阵中的对应系数w为非零系数w时)输出“1”,并且在从and电路301输入的值为“1”时(即,在下一层中的变量x和系数w中的至少一个的值为0时)输出“0”。因此,在稀疏矩阵缓存器(spmat-buf)205中构造指示非零变量x的位置的零变量位置表q52,该零变量位置表q52被有效地用于下一层的积和运算。
[0507]
and电路302执行指示从确定电路202输出的变量x是非零变量的控制信号“1”与指示从寄存器303输出的系数w是零系数还是非零系数的值(“0”或“1”)的逻辑积,并将逻辑积的结果输入到写入缓存器206。
[0508]
同时,当从and电路302输入的值为“1”时(即,当从缓存器电路201输入的变量x为非零变量x且下一层的系数矩阵中的对应系数w为非零系数w时),写入缓存器206存储从缓存器电路202输出的变量x。作为结果,在写入缓存器206中或在存储器区域207(存储器51/71)中构造包括非零变量x的非零变量表q53,该非零变量表q53被有效地用于下一层的积和
运算中。
[0509]
6.2操作示例
[0510]
接下来,将描述图24所示的编码单元300的操作。图25是用于说明图24所示的编码单元的操作示例的示图。注意,在图25中,为了便于说明,当前处理层(以下称为当前层)的变量x由x
0n
(n为自然数)表示,并且下一层的变量x由x
1n
表示。此外,为了简化描述,例示这样一种情况,即,指示关于通过执行当前层中的变量矩阵q14的零系数位置表q12和系数矩阵q11的零变量位置表的逻辑积获得的矩阵(即,变量矩阵q54)的非零位置的矩阵为“10100111”,而变量矩阵q14没有被稀疏表示。然而,本公开不限于此,并且,变量矩阵q14可以通过稀疏表示被压缩编码。
[0511]
如图25所示,从积和电路116输出通过将变量矩阵q14乘以当前层中的系数矩阵q11获得的变量矩阵q54。图24所示的写入缓存器206基于从and电路302输出的变量x
1n
与下一层的零系数位置表q62中的对应值的逻辑积的结果,将在下一层中有效的变量x
1n
写入到存储器区域304中。另外,保持在稀疏矩阵缓存器205中的零变量位置表q52也存储在存储器区域304中。
[0512]
6.3作用和效果
[0513]
通过将如上所述的编码单元300排列在各卷积处理单元21/23/25的输出段,能够进一步减少要写入存储器51/71中的变量矩阵的数据量。
[0514]
其他构成、操作和效果可能与上述实施例的构成、操作和效果相似,因此,这里将省略其详细描述。
[0515]
6.4变更例
[0516]
注意,在存在要在下一层中处理的多个映射的情况下,例如,在存在要读取的下一层的多个零系数位置表q62的情况下,可以采用以下变更例。
[0517]
6.4.1第一变更例
[0518]
图26是用于说明第一变更例的示意图。如图26所示,在要在各层中处理的数据包括多个映射(变量矩阵q14a~q14c)并且对各个映射设定不同的滤波器系数(系数矩阵)的情况下,也能够使用通过在登记在图24的寄存器303中之后对下一层的所有映射计算零系数位置表q62a~q62c的逻辑和获得的零系数位置表q72。
[0519]
6.4.2第二变更例
[0520]
另外,在如在第一变更例中那样要在各层中处理的数据包括多个映射(变量矩阵q14a~q14c)并且对各个映射设定不同的滤波器系数(系数矩阵)的情况下,也能够在图24的寄存器303中为下一层中的各个映射注册零系数位置表q62a~q62c,由此以多种方式输出各个映射的积和运算结果。
[0521]
6.4.3第三变更例
[0522]
可以组合上述的第一变更例和第二变更例。图27是用于说明组合了第一变更和第二变更例的第三变更例的示意图。如图27所示,在第三变更例中,将下一层的多个滤波器系数(系数矩阵)分组为多个组,并为各组计算零系数位置表的逻辑和。在图27所示的示例中,通过计算分组系数矩阵q62b和q62c的逻辑和生成零系数位置表q82b,并将其登记在寄存器303中。然而,当在组中只有一个零系数位置表q62a时,零系数位置表q62a可以原样登记在寄存器313中。
[0523]
7.本技术的应用例
[0524]
接下来,将用一些示例描述根据上述实施例的神经网络处理装置11的应用。
[0525]
7.1第一应用例
[0526]
图28是用于说明第一应用例的示图。如图28所示,在第一应用例中,神经网络处理装置11被配置为并入信息处理装置(也称为处理器)1000中的dnn引擎(加速器)1001。dnn引擎1001经由信息处理装置1000中的总线1003连接到处理器内核(也简称为芯)1002。作为结果,能够实现处理器内核1002和dnn引擎1001彼此紧密协作的处理。
[0527]
此外,如在图29所示的信息处理装置1000a中那样,多个dnn引擎1001a、1001b、1001c

可以经由总线1003连接到一个处理器内核1002。
[0528]
7.2第二应用例
[0529]
图30是示出根据第二应用例的物联网(iot)边缘人工智能(ai)系统(也称为信息处理系统)的示意性构成示例的框图。如图30所示,信息处理装置1000a~1000c(分别配备有根据第一应用例的神经网络处理装置11)可以并入iot边缘ai系统1100中,该iot边缘ai系统1100以无线或有线方式连接到安装在各种事物上的各种传感器1111~1114。
[0530]
7.3第三应用例
[0531]
图31是示出作为根据第三应用例的电子设备中的一个的自主机器人的示意性构成示例的示意图。如图31所示,根据第一应用例的信息处理装置1000可以被应用于例如处理由自主机器人1200中的对应于眼睛的图像传感器1211获取的数据的处理单元1201,以及处理由自主机器人1200中的对应于耳朵的麦克风1212获取的数据的处理单元1202。此外,根据第二变更例的iot边缘ai系统1100可以被应用于处理由安装在自主机器人1200的手臂和腿部上的各种传感器获得的信息的处理单元1203。此外,根据第二变更例的iot边缘ai系统1100还可以被应用于控制自主机器人1200整体的控制单元1204。
[0532]
注意,在信息处理装置1000被应用于处理由图像传感器1211获取的数据的处理单元1201的情况下,图像传感器1212的芯片和信息处理装置1000的芯片可以以叠层结构彼此接合。
[0533]
7.4第四应用例
[0534]
图32是示出作为根据第四应用例的电子设备中的一个的电视机的示意性构成示例的示意图。如图32所示,根据第一应用例的信息处理装置1000和根据第二应用例的iot边缘ai系统1100可以被应用于用于识别安装电视1300的空间(房间等)中的环境的子系统。
[0535]
根据第一应用例的信息处理装置1000可以被应用于例如处理由捕获电视1300周围的图像的图像传感器1311获取的数据的处理单元1301,和处理由获取电视机1300周围的状况的传感器(例如,飞行时间(tof)传感器、超声波传感器、低分辨率照相机或麦克风阵列)获取的数据的处理单元1302。
[0536]
注意,在信息处理装置1000被应用于处理由图像传感器1311获取的数据的处理单元1301的情况下,图像传感器1211的芯片和信息处理装置1000的芯片可以以叠层结构彼此接合。
[0537]
8.计算机的构成示例
[0538]
同时,根据上述实施例的一系列处理可以由硬件或软件执行。在一系列处理由软件执行的情况下,构成软件的程序被安装在计算机中。这里,计算机包括并入专用硬件中的
计算机或能够通过在其中安装各种程序执行各种功能的计算机(例如,通用个人计算机)等。
[0539]
图33是示出通过使用程序执行上述一系列处理的计算机的硬件的构成示例的框图。
[0540]
在计算机中,中央处理单元(cpu)2001、只读存储器(rom)2002和随机存取存储器(ram)2003通过总线2004相互连接。
[0541]
输入/输出接口2005进一步连接到总线2004。输入单元2006、输出单元2007、记录单元2008、通信单元2009和驱动器2010连接到输入/输出接口2005。
[0542]
输入单元2006包括键盘、鼠标、麦克风和成像元件等。输出单元2007包括显示器和扬声器等。记录单元2008包括硬盘和非易失性存储器等。通信单元2009包括网络接口等。驱动器2010驱动诸如磁盘、光盘、磁光盘或半导体存储器之类的可移除记录介质2011。
[0543]
在如上所述配置的计算机中,cpu 2001经由输入/输出接口2005和总线2004将记录在例如记录单元2008中的程序加载到ram 2003中并执行程序,由此执行上述一系列处理。
[0544]
由计算机(cpu 2001)执行的程序可以在例如作为封装介质等记录在可移除记录介质2011中之后被提供。或者,也可以经由诸如局域网、因特网或数字卫星广播之类的有线或无线传输介质提供程序。
[0545]
在计算机中,可以通过将可移除记录介质2011连接到驱动器2010,经由输入/输出接口2005将程序安装在记录单元2008中。或者,可以经由有线或无线传输介质由通信单元2009接收程序,并将其安装到记录单元2008。或者,程序可以预先安装在rom 2002或记录单元2008中。
[0546]
注意,由计算机执行的程序可以是使得能够按照根据在本说明书中描述的顺序的时间顺序执行处理的程序,或者可以是使得能够并行或在必要的定时(诸如当进行调用时)执行处理的程序。
[0547]
此外,上述实施例不限于上述实施例,并且,在不脱离本技术要点的情况下,可以进行各种修改。
[0548]
例如,本技术可以具有一个功能由经由网络相互协作的多个设备共享和处理的云计算构成。
[0549]
另外,在上述流程图中描述的步骤中的每一个可以由一个设备执行,或者可以由多个设备共享和执行。
[0550]
在一个步骤中包括多个处理的情况下,一个步骤中包括的多个处理可以由一个设备执行,或者可以由多个设备共享和执行。
[0551]
尽管上文已经描述了本公开的实施例,但本公开的技术范围不限于上述各实施例,并且可以在不脱离本公开的主旨的情况下进行各种修改。另外,可以适当地组合不同实施例和变更例中的构成要素。
[0552]
此外,在本说明书中描述的实施例中的每一个的效果仅是示例性的且不是限制性的,并且,在本说明书中描述的实施例中的每一个可能具有其他效果。
[0553]
另外,本技术可以具有以下构成。
[0554]
(1)
[0555]
一种神经网络处理装置,包括:
[0556]
解码单元,对编码为第一零系数位置表和第一非零系数表的第一系数矩阵进行解码,第一零系数位置表由第一值指示第一系数矩阵中分别为零值的第一系数的位置并且由第二值指示第一系数矩阵中分别为非零值的第二系数的位置,第一非零系数表保持第一系数矩阵中的第二系数;和
[0557]
积和电路,对由所述解码单元解码的第一系数矩阵和第一变量矩阵执行卷积处理,
[0558]
其中,所述解码单元通过将存储在第一非零系数表中的第二系数存储在第一零系数位置表上由第二值指示的位置处,对第一系数矩阵进行解码。
[0559]
(2)
[0560]
根据(1)所述的神经网络处理装置,
[0561]
其中,所述解码单元包括:
[0562]
选择器,当输入到控制端子的值是第一值时输出零,并且当输入到所述控制端子的值是第二值时输出与第一零系数位置表上由该第二值指示的位置对应的第二系数;和
[0563]
积和器件,通过排列从所述选择器输入的零和第二系数来恢复第一系数矩阵,以及
[0564]
所述解码单元依次地将构成第一零系数位置表的值输入到所述选择器。
[0565]
(3)
[0566]
根据(2)所述的神经网络处理装置,
[0567]
其中,当依次地将构成第一零系数位置表的值输入到所述选择器时,所述解码单元获取存储在第一变量矩阵上的、与要输入到所述选择器的值的在第一零系数位置表上的位置对应的位置处的变量。
[0568]
(4)
[0569]
根据(1)所述的神经网络处理装置,
[0570]
其中,所述解码单元获取与第一零系数位置表上由第二值指示的位置对应的第二系数,获取存储在第一变量矩阵上的、与第一零系数位置表上由第二值指示的位置对应的位置处的变量,并将获取的第二系数和获取的所述变量输入到所述积和电路,以及
[0571]
所述积和电路通过依次地将从所述解码单元输入的第二系数与所述变量相乘并将相乘结果相加,对第一系数矩阵和第一变量矩阵执行卷积处理。
[0572]
(5)
[0573]
根据(4)所述的神经网络处理装置,
[0574]
其中,所述解码单元包括优先级编码器,所述优先级编码器具有分别设定了优先级的多个输入并且输出对输入了第二值的一个或多个输入中的具有最高优先级的输入设定的值,以及
[0575]
所述解码单元将构成第一零系数位置表的值并行地输入到所述多个输入,并且基于针对所述多个输入从所述优先级编码器输出的值从第一非零系数表获取第二系数之一。
[0576]
(6)
[0577]
根据(1)所述的神经网络处理装置,
[0578]
其中,第一变量矩阵被编码为第一零变量位置表和非零变量表,第一零变量位置
表由第一值指示第一变量矩阵中分别为零值的第一变量的位置并且由第二值指示第一变量矩阵中分别为非零值的第二变量的位置,非零变量表保持第一变量矩阵中的第二变量,以及
[0579]
所述解码单元对构成第一零系数位置表的值和构成第一零变量位置表的值执行逻辑运算,基于所述逻辑运算的结果从第一非零系数表和非零变量表获取在相乘时不生成零的第二系数和第二变量,并将获取的第二系数和获取的第一变量输入到所述积和电路。
[0580]
(7)
[0581]
根据(6)所述的神经网络处理装置,
[0582]
其中,所述解码单元包括优先级编码器,所述优先级编码器具有分别设定了优先级的多个输入并且输出对输入了第二值的一个或多个输入中的具有最高优先级的输入设定的值,
[0583]
所述解码单元将构成第一零系数位置表的值并行地输入到所述多个输入,并且基于针对所述多个输入从所述优先级编码器输出的值从第一非零系数表获取第二系数之一,以及
[0584]
所述解码单元将构成第一零变量位置表的值并行输入到所述多个输入,并且基于针对所述多个输入从所述优先级编码器输出的值从非零变量表获取第二变量之一。
[0585]
(8)
[0586]
根据(1)~(7)中的任一项所述的神经网络处理装置,还包括:
[0587]
编码单元,将从所述积和电路输出的第二变量矩阵编码为第二零变量位置表和第二非零系数表,第二零变量位置表由第一值指示第二变量矩阵中分别为零值的第一变量的位置并且由第二值指示第二变量矩阵中分别为非零值的第二变量的位置,第二非零系数表保持第二变量矩阵中的第二系数。
[0588]
(9)
[0589]
根据(8)所述的神经网络处理装置,
[0590]
其中,所述编码单元包括:
[0591]
确定电路,确定输入到其的值是否为零;
[0592]
第一缓存器,在所述确定电路确定值为零时存储第一值,并且在所述确定电路确定值不为零时存储第二值;和
[0593]
第二缓存器,在所述确定电路确定值不为零时存储第二变量,以及
[0594]
所述编码单元依次地将构成第二变量矩阵的变量输入到所述确定电路。
[0595]
(10)
[0596]
根据(9)所述的神经网络处理装置,
[0597]
其中,所述编码单元还包括寄存器,所述寄存器存储要用于下一层中的卷积处理的第二零系数位置表,
[0598]
当存储在第二零系数位置表上的、与由所述确定电路确定为非零的变量的第二变量矩阵的位置对应的位置处的值是第一值时,第一缓存器存储第一值而不是第二值,以及
[0599]
当存储在第二零系数位置表上的、与由所述确定电路确定为非零的变量的第二变量矩阵的位置对应的位置处的值是第一值时,第二缓存器不存储该变量。
[0600]
(11)
[0601]
根据(10)所述的神经网络处理装置,
[0602]
其中,所述寄存器存储通过计算要用于下一层中的卷积处理的多个第二零系数位置表的逻辑和而获得的第三零系数位置表。
[0603]
(12)
[0604]
根据(10)所述的神经网络处理装置,
[0605]
其中,所述寄存器存储要用于下一层中的卷积处理的所述多个第二零系数位置表。
[0606]
(13)
[0607]
根据(10)所述的神经网络处理装置,
[0608]
其中,要用于下一层中的卷积处理的所述多个第二零系数位置表被分组为一个或多个组,以及
[0609]
所述寄存器存储通过针对各组计算第二零系数位置表的逻辑和而获得的第三零系数位置表。
[0610]
(14)
[0611]
一种信息处理装置,包括:
[0612]
根据(1)~(13)中的任一项所述的神经网络处理装置;和
[0613]
经由总线连接到所述神经网络处理装置的处理器内核。
[0614]
(15)
[0615]
一种信息处理系统,包括:
[0616]
根据权利要求14所述的信息处理装置;和
[0617]
连接到所述信息处理装置的一个或多个传感器。
[0618]
(16)
[0619]
一种电子设备,包括根据(14)所述的信息处理装置。
[0620]
(17)
[0621]
一种神经网络处理方法,包括:
[0622]
对编码为零系数位置表和非零系数表的系数矩阵进行解码,零系数位置表由第一值指示系数矩阵中分别为零值的第一系数的位置并且由第二值指示系数矩阵中分别为非零值的第二系数的位置,非零系数表保持系数矩阵中的第二系数;和
[0623]
对解码的系数矩阵和变量矩阵执行卷积处理,
[0624]
其中,通过将存储在非零系数表中的第二系数存储在由第二值指示的零系数位置表上的位置处,对系数矩阵进行解码。
[0625]
(18)
[0626]
一种程序,用于使计算机执行:
[0627]
解码处理,用于对编码为零系数位置表和非零系数表的系数矩阵进行解码,零系数位置表由第一值指示系数矩阵中分别为零值的第一系数的位置并且由第二值指示系数矩阵中分别为非零值的第二系数的位置,非零系数表保持系数矩阵中的第二系数;和
[0628]
积和处理,用于对通过所述解码处理解码的系数矩阵和变量矩阵执行卷积处理,
[0629]
其中,在所述解码处理中,通过将存储在非零系数表中的第二系数存储在由第二值指示的零系数位置表上的位置处,对系数矩阵进行解码。
[0630]
附图标记列表
[0631]
11神经网络处理装置
[0632]
21、23、25卷积处理单元
[0633]
22、24池化处理单元
[0634]
41、61、81、101解码单元
[0635]
42、51、62、71、82、102存储器
[0636]
43、63、83、103系数保持单元
[0637]
104优先级编码器
[0638]
111、111a、111b地址生成单元
[0639]
112、203选择器
[0640]
113积和器件
[0641]
114系数缓存器
[0642]
115变量缓存器
[0643]
116积和电路
[0644]
200、300编码单元
[0645]
201缓存器电路
[0646]
202确定电路
[0647]
204延迟电路
[0648]
205稀疏矩阵缓存器
[0649]
206写入缓存器
[0650]
301、302and电路
[0651]
303寄存器
[0652]
304存储器区域
[0653]
1000、1000a、1000a、1000b、1000c信息处理装置(处理器)
[0654]
1001、1001a、1001b、1001c dnn发动机(加速器)
[0655]
1002处理器内核
[0656]
1003总线
[0657]
1100iot边缘ai系统
[0658]
1111~1114传感器
[0659]
1200自主机器人
[0660]
1211图像传感器
[0661]
1212麦克风
[0662]
1201、1202、1203、1301、1302处理单元
[0663]
1204控制单元
[0664]
1300电视机

技术特征:


1.一种神经网络处理装置,包括:解码单元,对编码为第一零系数位置表和第一非零系数表的第一系数矩阵进行解码,第一零系数位置表由第一值指示第一系数矩阵中分别为零值的第一系数的位置并且由第二值指示第一系数矩阵中分别为非零值的第二系数的位置,第一非零系数表保持第一系数矩阵中的第二系数;和积和电路,对由所述解码单元解码的第一系数矩阵和第一变量矩阵执行卷积处理,其中,所述解码单元通过将存储在第一非零系数表中的第二系数存储在第一零系数位置表上由第二值指示的位置处,对第一系数矩阵进行解码。2.根据权利要求1所述的神经网络处理装置,其中,所述解码单元包括:选择器,当输入到控制端子的值是第一值时输出零,并且当输入到所述控制端子的值是第二值时输出与第一零系数位置表上由该第二值指示的位置对应的第二系数;和积和器件,通过排列从所述选择器输入的零和第二系数来恢复第一系数矩阵,以及所述解码单元依次地将构成第一零系数位置表的值输入到所述选择器。3.根据权利要求2所述的神经网络处理装置,其中,当依次地将构成第一零系数位置表的值输入到所述选择器时,所述解码单元获取存储在第一变量矩阵上的、与要输入到所述选择器的值的在第一零系数位置表上的位置对应的位置处的变量。4.根据权利要求1所述的神经网络处理装置,其中,所述解码单元获取与第一零系数位置表上由第二值指示的位置对应的第二系数,获取存储在第一变量矩阵上的、与第一零系数位置表上由第二值指示的位置对应的位置处的变量,并将获取的第二系数和获取的所述变量输入到所述积和电路,以及所述积和电路通过依次地将从所述解码单元输入的第二系数与所述变量相乘并将相乘结果相加,对第一系数矩阵和第一变量矩阵执行卷积处理。5.根据权利要求4所述的神经网络处理装置,其中,所述解码单元包括优先级编码器,所述优先级编码器具有分别设定了优先级的多个输入并且输出对输入了第二值的一个或多个输入中的具有最高优先级的输入设定的值,以及所述解码单元将构成第一零系数位置表的值并行地输入到所述多个输入,并且基于针对所述多个输入从所述优先级编码器输出的值从第一非零系数表获取第二系数之一。6.根据权利要求1所述的神经网络处理装置,其中,第一变量矩阵被编码为第一零变量位置表和非零变量表,第一零变量位置表由第一值指示第一变量矩阵中分别为零值的第一变量的位置并且由第二值指示第一变量矩阵中分别为非零值的第二变量的位置,非零变量表保持第一变量矩阵中的第二变量,以及所述解码单元对构成第一零系数位置表的值和构成第一零变量位置表的值执行逻辑运算,基于所述逻辑运算的结果从第一非零系数表和非零变量表获取在相乘时不生成零的第二系数和第二变量,并将获取的第二系数和获取的第一变量输入到所述积和电路。7.根据权利要求6所述的神经网络处理装置,其中,所述解码单元包括优先级编码器,所述优先级编码器具有分别设定了优先级的
多个输入并且输出对输入了第二值的一个或多个输入中的具有最高优先级的输入设定的值,所述解码单元将构成第一零系数位置表的值并行地输入到所述多个输入,并且基于针对所述多个输入从所述优先级编码器输出的值从第一非零系数表获取第二系数之一,以及所述解码单元将构成第一零变量位置表的值并行输入到所述多个输入,并且基于针对所述多个输入从所述优先级编码器输出的值从非零变量表获取第二变量之一。8.根据权利要求1所述的神经网络处理装置,还包括:编码单元,将从所述积和电路输出的第二变量矩阵编码为第二零变量位置表和第二非零系数表,第二零变量位置表由第一值指示第二变量矩阵中分别为零值的第一变量的位置并且由第二值指示第二变量矩阵中分别为非零值的第二变量的位置,第二非零系数表保持第二变量矩阵中的第二系数。9.根据权利要求8所述的神经网络处理装置,其中,所述编码单元包括:确定电路,确定输入到其的值是否为零;第一缓存器,在所述确定电路确定值为零时存储第一值,并且在所述确定电路确定值不为零时存储第二值;和第二缓存器,在所述确定电路确定值不为零时存储第二变量,以及所述编码单元依次地将构成第二变量矩阵的变量输入到所述确定电路。10.根据权利要求9所述的神经网络处理装置,其中,所述编码单元还包括寄存器,所述寄存器存储要用于下一层中的卷积处理的第二零系数位置表,当存储在第二零系数位置表上的、与由所述确定电路确定为非零的变量的第二变量矩阵的位置对应的位置处的值是第一值时,第一缓存器存储第一值而不是第二值,以及当存储在第二零系数位置表上的、与由所述确定电路确定为非零的变量的第二变量矩阵的位置对应的位置处的值是第一值时,第二缓存器不存储该变量。11.根据权利要求10所述的神经网络处理装置,其中,所述寄存器存储通过计算要用于下一层中的卷积处理的多个第二零系数位置表的逻辑和而获得的第三零系数位置表。12.根据权利要求10所述的神经网络处理装置,其中,所述寄存器存储要用于下一层中的卷积处理的所述多个第二零系数位置表。13.根据权利要求10所述的神经网络处理装置,其中,要用于下一层中的卷积处理的所述多个第二零系数位置表被分组为一个或多个组,以及所述寄存器存储通过针对各组计算第二零系数位置表的逻辑和而获得的第三零系数位置表。14.一种信息处理装置,包括:根据权利要求1所述的神经网络处理装置;和经由总线连接到所述神经网络处理装置的处理器内核。15.一种信息处理系统,包括:
根据权利要求14所述的信息处理装置;和连接到所述信息处理装置的一个或多个传感器。16.一种电子设备,包括根据权利要求14所述的信息处理装置。17.一种神经网络处理方法,包括:对编码为零系数位置表和非零系数表的系数矩阵进行解码,零系数位置表由第一值指示系数矩阵中分别为零值的第一系数的位置并且由第二值指示系数矩阵中分别为非零值的第二系数的位置,非零系数表保持系数矩阵中的第二系数;和对解码的系数矩阵和变量矩阵执行卷积处理,其中,通过将存储在非零系数表中的第二系数存储在由第二值指示的零系数位置表上的位置处,对系数矩阵进行解码。18.一种程序,用于使计算机执行:解码处理,用于对编码为零系数位置表和非零系数表的系数矩阵进行解码,零系数位置表由第一值指示系数矩阵中分别为零值的第一系数的位置并且由第二值指示系数矩阵中分别为非零值的第二系数的位置,非零系数表保持系数矩阵中的第二系数;和积和处理,用于对通过所述解码处理解码的系数矩阵和变量矩阵执行卷积处理,其中,在所述解码处理中,通过将存储在非零系数表中的第二系数存储在由第二值指示的零系数位置表上的位置处,对系数矩阵进行解码。

技术总结


在本发明中,存储量被减少。一种神经网络处理装置包括:对编码为零系数位置表和非零系数表的系数矩阵进行解码的解码单元(41),零系数位置表将系数矩阵中为零值的第一系数的位置表示为第一值并且将系数矩阵中为非零值的第二系数的位置表示为第二值,并且非零系数表保持系数矩阵中的第二系数;和对由解码单元解码的系数矩阵和变量矩阵执行卷积处理的积和电路(116),解码单元通过将存储在非零系数表中的第二系数存储在零系数位置表上由第二值表示的位置中,从而对系数矩阵进行解码。从而对系数矩阵进行解码。从而对系数矩阵进行解码。


技术研发人员:

高木聪

受保护的技术使用者:

索尼集团公司

技术研发日:

2021.07.09

技术公布日:

2023/3/24

本文发布于:2024-09-23 23:27:45,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/78754.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:系数   卷积   变量   单元
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议