一种运算装置和方法与流程

文档序号:15801429发布日期:2018-11-02 21:28阅读:149来源:国知局
一种运算装置和方法与流程

本公开涉及人工智能技术领域,尤其涉及一种神经网络运算装置和方法。

背景技术

目前,深度学习技术已被广泛应用于各种分类及识别任务中。相对于传统的技术方法,深度学习能够达到更高的识别率和可并行度,受到学术界及工业界的广泛关注。然而,现有的深度学习系统通常需要占用大量的存储资源及运算资源,这对深度学习系统的推广使用是一个很大的阻碍。因此,设计一种节省存储资源和运算资源的神经网络运算装置及方法具有重要的意义。



技术实现要素:

(一)要解决的技术问题

鉴于上述技术问题,本公开提供了一种神经网络运算装置和方法,支持神经网络的稀疏,可采用多种神经网络数据表示,达到了节省存储资源和运算资源的效果。

(二)技术方案

根据本公开的一个方面,提供了一种神经网络运算装置,包括:

存储装置,用于存储数据和指令;

数据控制单元,与所述存储装置连接;

配置解析单元,与所述存储装置连接,接收其发送的神经网络配置数据;

指令缓存单元,与所述数据控制单元连接,用于接收所述数据控制单元发送的指令;

指令译码单元,与所述指令缓存单元连接,用于从指令缓存中读取指令,并将其译码成运算指令;

第一数据传输单元,与所述数据控制单元连接,根据映射关系从数据控制单元获取相应的输入神经元数据及权值数据,并分发给运算单元;

运算单元,同时与所述指令译码单元、第一数据传输单元连接,根据运算指令对输入的神经元数据及权值数据执行相应的运算,并输出运算后的数据;以及

第二数据传输单元,与所述运算单元连接,用于将运算输出的数据发送至数据控制单元或执行稀疏处理后再发送至所述数据控制单元;其中,

所述数据控制单元用于控制所述存储装置与所述指令缓存单元及第一数据传输单元之间的数据和指令交互。

优选地,所述第一数据传输单元包括:

映射单元,与所述数据控制单元连接,根据相应的映射模式对输入神经元和权值做优化映射,映射后的神经元和权值的对应关系为输入神经元-权值对,所述映射模式由所述配置解析单元根据神经网络配置数据来设定;

输入神经元缓存单元,与所述映射单元连接,根据映射单元的映射关系从数据控制单元获取相应的输入神经元数据并分发给运算单元;以及

权值缓存单元,与所述映射单元连接,根据映射单元的映射关系从数据控制单元获取相应的权值数据并分发给运算单元。

优选地,所述第二数据传输单元包括:

输出神经元缓存单元,与所述运算单元连接,用于接收所述运算单元输出的运算后的数据;以及

稀疏单元,与所述输出神经元缓存单元连接;该稀疏单元直接将经该输出神经元缓存单元输出的神经元数据发送至数据控制单元或执行稀疏处理后再发送至数据控制单元。

优选地,所述存储装置用于接收并存储从外部地址空间输入的数据,该数据包括神经元数据、神经网络权值数据以及神经网络的配置数据。

优选地,所述神经网络的配置数据包括:数据的表示参数和稀疏参数;其中,该数据的表示参数,包括:浮点型数据、定点型数据以及数据表示的长度。

优选地,所述稀疏参数包括:稀疏标志,稀疏率,稀疏模式;其中,所述稀疏标志用于确定神经网络是否做稀疏处理;所述稀疏率用于确定每次稀疏的比例;所述稀疏模式包括:仅权值数据稀疏、仅神经元数据稀疏、及权值和神经元数据同时稀疏。

根据本公开的一个方面,提供了一种神经网络运算方法,包括:

存储装置接收并读取输入数据;

配置解析单元接收并读取所述存储装置发送的神经网络的配置数据,并根据该神经网络的配置数据设置映射单元的映射模式;

映射单元根据设定的映射模式执行相应的映射操作,对输入神经元和权值做优化映射,映射后的神经元和权值的对应关系为输入神经元-权值对;

指令缓存单元接收数据控制单元的指令,并将其发送至指令译码单元,经由该指令译码单元读取并译码成各运算指令后发送至运算单元;

输入神经元缓存单元和权值缓存单元分别根据映射单元的对应映射关系,从数据控制单元获取相应的输入神经元或权值数据,并分发给运算单元;

运算单元接收运算指令、神经元数据及权值数据后执行对应的神经网络运算操作。

优选地,本发明神经网络运算方法,在运算单元接收运算指令、神经元数据及权值数据并执行对应的神经网络运算操作之后还包括:输出神经元缓存单元接收运算单元执行神经网络运算操作得到的数据,并将其发送至稀疏单元;稀疏单元接收输出神经元缓存单元发送的神经元数据,并根据稀疏模式确定是否需要对神经元数据执行稀疏操作;若需要,则在稀疏操作之后再将稀疏后的数据发送至数据控制单元,反之,则直接将数据发送至数据控制单元。

优选地,本公开神经网络运算方法,所述映射单元对神经元和权值数据执行映射操作,包括:

当处于仅权值数据稀疏模式时,所述映射单元根据权值稀疏选择神经元数据,对输入神经元和权值做优化映射,映射后的神经元和权值的对应关系为输入神经元-权值对;

当处于仅神经元数据稀疏模式时,映射单元根据输入神经元稀疏选择权值数据,对输入神经元和权值做优化映射,映射后的神经元和权值的对应关系为输入神经元-权值对;

当处于权值和神经元数据同时稀疏模式时,映射单元根据输入神经元稀疏和权值稀疏选择输入神经元和权值数据,对输入神经元和权值做优化映射,映射后的神经元和权值的对应关系为输入神经元-权值对。

优选地,本公开神经网络运算方法,所述稀疏单元对神经元数据执行稀疏操作,包括:

方法一:

首先,对神经元数据绝对值进行排序,根据稀疏率计算获得需要稀疏的数据个数;然后,根据需要稀疏的数据个数对神经元数据绝对值小的数据做稀疏,即置其值为0;最后,将稀疏后的稀疏神经元数据和神经元稀疏序列发送至数据控制单元;和/或,

方法二:

神经元数据为0的数据保持0值不变,神经元数据在某个取值区间内的数据置为0值,其中,所述取值区间为事先设定值,可由配置解析单元进行配置。

(三)有益效果

从上述技术方案可以看出,本公开神经网络运算装置和方法至少具有以下有益效果其中之一:

(1)本公开神经网络运算装置和方法,支持神经网络的映射处理,可根据不同的实际运用情况,采用不同的映射处理模式,能够节省存储资源和运算资源的效果。

(2)本公开神经网络运算装置和方法,支持神经网络的稀疏处理及多种数据表示形式的神经网络,可根据不同的实际运用情况,采用不同的数据表示形式和稀疏处理,能够进一步节省在神经网络性能与运算和存储资源上提高性能,达到最优效果。

(3)本公开神经网络运算装置和方法,支持神经网络的优化映射,对数据做优化映射,减小运算单元的运算负荷,加快运算速度。

附图说明

通过附图所示,本公开的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本公开的主旨。

图1为依据本公开实施例神经网络运算装置的示意图。

图2为依据本公开实施例神经网络运算装置的另一示意图。

图3为依据本公开实施例神经网络运算装置的另一示意图。

图4为依据本公开实施例神经网络运算方法的流程图。

图5为依据本公开实施例仅权值稀疏时映射单元处理模式示意图。

图6为依据本公开实施例仅神经元数据稀疏时映射单元处理模式示意图。

图7为依据本公开实施例神经元和权值同时稀疏时映射单元处理模式示意图。

具体实施方式

为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。

需要说明的是,在附图或说明书描述中,相似或相同的部分都使用相同的图号。附图中未绘示或描述的实现方式,为所属技术领域中普通技术人员所知的形式。另外,虽然本文可提供包含特定值的参数的示范,但应了解,参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应的值。实施例中提到的方向用语,例如“上”、“下”、“前”、“后”、“左”、“右”等,仅是参考附图的方向。因此,使用的方向用语是用来说明并非用来限制本公开的保护范围。

本公开提供了一种神经网络运算装置。图1为依据本公开实施例神经网络运算装置的示意图。请参照图1,本实施例神经网络运算装置,包括:

存储装置1,用于存储数据和指令;

其中,所述存储装置用于接收并存储从外部地址空间输入的数据,该数据包括神经元数据、神经网络权值、神经网络的配置数据及其他相关数据。

数据控制单元2,与所述存储装置连接;

配置解析单元11,与所述存储装置连接,接收经由所述存储装置输入的神经网络配置数据。

指令缓存单元3,与所述数据控制单元连接,用于接收所述数据控制单元发送的指令;

指令译码单元4,与所述指令缓存单元连接,用于从指令缓存中读取指令,并将其译码成各运算指令;

第一数据传输单元x,与所述数据控制单元连接,根据映射关系从数据控制单元获取相应的输入神经元数据及权值数据,并分发给运算单元;

运算单元7,同时与所述指令译码单元、第一数据传输单元连接,根据运算指令对输入的神经元数据及权值数据执行相应的运算,并输出运算后的数据;以及

第二数据传输单元y,与所述运算单元连接,用于将运算输出的神经元数据发送至数据控制单元或执行稀疏处理后再发送至所述数据控制单元;其中,

所述数据控制单元用于控制所述存储装置与所述指令缓存单元及第一数据传输单元之间的数据和指令交互。

请进一步参考图2,具体的,所述第一数据传输单元x包括:

映射单元10,与所述数据控制单元连接,根据相应的映射模式对输入神经元和权值做优化映射,映射后的神经元和权值的对应关系为输入神经元-权值对;

输入神经元缓存单元5,与所述映射单元连接,根据映射单元的映射关系从数据控制单元获取相应的输入神经元数据并分发给运算单元;以及

权值缓存单元6,与所述映射单元连接,根据映射单元的映射关系从数据控制单元获取相应的权值数据并分发给运算单元。

其中,所述运算单元同时与所述指令译码单元、第一数据传输单元的输入神经元缓存单元以及权值缓存单元连接,根据运算指令对输入的神经元数据和权值数据执行相应的运算,并输出运算后的数据。

有利的,所述运算单元支持多种数据类型的运算,根据指令要求选择相应的运算器完成对应运算。例如16位定点数据的运算,32位浮点数据的运算等。

所述映射单元与所述配置解析单元连接,由所述配置解析单元根据输入的神经网络配置数据,设置映射单元的映射模式。

请进一步参考图3,更具体而言,所述第二数据传输单元y包括:

输出神经元缓存单元8,与所述运算单元连接,用于接收所述运算单元输出的运算后的数据;以及

稀疏单元9,与所述输出神经元缓存单元连接;该稀疏单元直接将经该输出神经元缓存单元输出的神经元数据发送至数据控制单元或执行稀疏处理后再发送至数据控制单元。

其中,所述稀疏单元也与所述配置解析单元连接,由所述配置解析单元根据输入的神经网络配置数据,设置稀疏单元的稀疏模式。

另外,本公开实施例还提供了一种神经网络运算方法,

图4为本公开实施例神经网络运算方法的流程图。请参照图4,本实施例神经网络运算方法,包括:

步骤1,存储装置接收并读取输入数据;其中,该输入数据包括神经元数据、神经网络权值、神经网络的配置数据及其他相关数据。

其中,所述神经网络的配置数据包括:

(1)数据的表示参数,其包括:浮点型数据和定点型数据、数据表示的长度,例如16位长度浮点数据,32位长度定点数据等;该数据的表示参数确定了输入数据的神经元数据、权值和偏置数据的数据表示方法。

(2)稀疏参数,其包括:稀疏标志,稀疏率,稀疏模式等。

其中,稀疏标志用于确定神经网络是否做稀疏处理;在做稀疏处理的情况下,稀疏率用于确定每次稀疏的比例;稀疏模式用于确定稀疏处理的具体模式;稀疏模式主要包括3种:模式1,仅权值数据稀疏;模式2,仅神经元数据稀疏;模式3,权值和神经元数据都稀疏。另外,为便于后续说明理解,在未做稀疏处理的情况下记为模式0。

步骤2,配置解析单元接收并读取所述存储装置发送的神经网络的配置数据,并根据该神经网络的配置数据设置映射单元的处理模式。

其中,所述配置解析单元由该神经网络的配置数据解析获得的稀疏模式进而设置映射单元的处理模式,即根据不同的稀疏模式相应的设置映射模式。

步骤3,映射单元根据设定的映射模式执行相应的映射操作,根据对应的映射模式对输入神经元和权值做优化映射,映射后的神经元和权值的对应关系为输入神经元-权值对。具体的,

当稀疏模式处于模式0时,映射单元对输入神经元和权值做全映射,映射后的对应关系为输入神经元-权值对;稀疏单元直接将经所述输出神经元缓存单元输出的数据传送到数据控制单元。

当稀疏模式处于模式1时,映射单元根据权值稀疏选择神经元数据,对输入神经元和权值做优化映射,映射后的神经元和权值的对应关系为输入神经元-权值对;稀疏单元直接将经所述输出神经元缓存单元输出的数据传送到数据控制单元。

如图5所示,图5为本公开实施例提供的仅权值稀疏时映射单元处理模式示例图。其中,稀疏权值数据只存储权值中非零的数据,如图5中只存储w1,w5,w8,w9的权值数据,权值稀疏序列用于索引稀疏权值,如权值稀疏序列为100010011表示w1,w5,w8,w9的权值为非零值,而w2,w3,w4,w6,w7为零值。应当认识到,稀疏序列的表示方式并不唯一,可以使用0表示非稀疏,即数值非零,用1表示稀疏,即数值为零,也可以采用其他可行方式。根据权值稀疏序列,选择对应的输入神经元数据,如图5中选择d1,d5,d8,d9神经元数据,通过对输入神经元和权值数据的映射,获得对应的输入神经元-权值对映射关系。

当稀疏模式处于模式2时,映射单元根据输入神经元稀疏选择权值数据,对输入神经元和权值做优化映射,映射后的神经元和权值的对应关系为输入神经元-权值对。稀疏单元对输出神经元数据做稀疏处理并传送到数据控制单元。

如图6所示,图6为本公开实施例提供的仅神经元数据稀疏时映射单元处理模式示例图,其中稀疏神经元数据只存储神经元中非零的数据,如图6中只存储d1,d3,d5,d8的神经元数据,神经元稀疏序列用于索引稀疏神经元,如神经元稀疏序列101010010表示d1,d3,d5,d8的神经元为非零值,而d2,d4,d6,d7,d9为零值。应当认识到,稀疏序列的表示方式并不唯一,可以使用0表示非稀疏,即数值非零,用1表示稀疏,即数值为零,也可以采用其他可行方式。根据神经元稀疏序列,选择对应的权值数据,如图6中选择w1,w3,w5,w8权值数据,通过对输入神经元和权值数据的映射,获得对应的输入神经元-权值对映射关系。

稀疏单元对神经元数据执行稀疏操作方法,包括:

方法一:

首先对输出神经元数据绝对值进行排序,根据稀疏率计算获得需要稀疏的数据个数,然后对输出神经元绝对值小的数据做稀疏,即置其值为0,最后根据稀疏后的输出神经元获得稀疏神经元数据和神经元稀疏序列传送至数据控制单元;和/或,

方法二:

神经元数据为0的数据保持0值不变,神经元数据在某个取值区间内的数据置为0值,其中,所述取值区间为事先设定值,可由配置解析单元进行配置。

所述方法一与方法二相互独立,即可单独选择一种方法使用,也可多种方法一同使用。

当稀疏模式处于模式3时,映射单元根据输入神经元稀疏和权值稀疏选择输入神经元和权值数据,对输入神经元和权值做优化映射,映射后的神经元和权值的对应关系为输入神经元-权值对。稀疏单元对输出神经元做稀疏处理传送到数据控制单元,稀疏单元的稀疏处理与模式2一致,此处不再赘述。

如图7所示,图7为本公开实施例提供的神经元和权值都稀疏时映射单元处理模式示例图,根据神经元稀疏序列和权值稀疏序列,选择都为非零值的输入神经元数据和权值数据,如图7所示,选择神经元数据d1,d5,d8和权值数据w1,w5,w8,通过对输入神经元和权值数据的映射,获得对应的输入神经元-权值对映射关系。

步骤4,指令缓存单元接收数据控制单元的指令,并将其发送至指令译码单元,经由指令译码单元读取并译码成各运算指令后发送至运算单元。

步骤5,输入神经元缓存单元和权值缓存单元分别根据映射单元的对应映射关系,从数据控制单元获取相应的输入神经元或权值数据,并分发给运算单元。

步骤6,运算单元接收运算指令、神经元数据及权值数据并执行对应的神经网络运算操作。

所述运算单元支持多种数据类型的运算,根据指令要求选择相应的运算器完成对应运算。

步骤7,输出神经元缓存单元接收运算单元执行神经网络运算操作得到的数据,并将其发送至稀疏单元。

步骤8,稀疏单元接收输出神经元缓存单元发送的数据执行稀疏处理后发送至数据控制单元或直接发送至数据控制单元。

其中,稀疏单元根据稀疏模式确定是否需要对接收到的神经元数据做稀疏操作,若需要,则对接收到的神经元数据做稀疏再发送至数据控制单元,反之,则直接发送至数据控制单元。具体的,所述稀疏单元与所述配置解析单元连接,由所述配置解析单元根据输入的神经网络配置数据,设置稀疏单元的稀疏模式。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换。

以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1