1.本技术属于数据压缩技术领域,特别的涉及一种神经网络硬件加速器的数据在线压缩方法及装置。
背景技术:2.现有神经网络硬件加速器会受到神经网络数据规模变得越来越大的影响,例如由于存在大量的激活值和权重值,会导致相当大规模的计算和数据大规模的在不同内存层级之间的访问传递的现象。因此,现有神经网络硬件加速器在处理神经网络中所导致的激活值和权重值的效率问题,存在着很大的挑战。另一方面,在深度神经网络的运算过程中,神经网络的输出激活值会通过非线性激活函数relu,将所有负像素值均设置为零,导致其稀疏性进一步变大。
3.针对神经网络中的稀疏性特点,可设置特定的压缩方式,通过对激活值和权重值的压缩,提高数据在不同内存层级之间移动的有效性,进一步提高神经网络硬件加速器的高效性。
4.然而传统的cpu或gpu受到其架构和资源的限制,在传统嵌入式设备中运算神经网络效率低下且能量效率并不高,一些神经网络硬件加速器对部队则的神经网络并不友好,在实现神经网络的加速运算过程中,只能利用了dnn的规则访问模式并加以计算,并不能在稀疏性计算中得到相应的运算效率的提高。其次,另一些神经网络硬件加速器使用压缩方法来提高存储密度和效率,但解压缩的过程过于繁琐,需要将压缩好的数据还原为原本数据结构,依旧需要浪费资源于无效计算上,难以利用神经网络的不规则性带来的优点。除此之外,还有些神经网络硬件加速器在选择有效计算的过程中过于繁琐,造成能量效率和数据吞吐量不高等问题。
技术实现要素:5.本技术为解决上述提到的在实现神经网络的加速运算过程中,只能利用了dnn的规则访问模式并加以计算,并不能在稀疏性计算中得到相应的运算效率的提高、解压缩的过程过于繁琐,需要将压缩好的数据还原为原本数据结构等技术问题,提出一种神经网络硬件加速器的数据在线压缩方法及装置,其技术方案如下:第一方面,本技术实施例提供了一种神经网络硬件加速器的数据在线压缩方法,包括:对神经网络输出的第一激活值进行转换处理,得到第一激活掩码;将第一激活掩码划分为至少两组激活子掩码,并按照预设顺序依次对每组激活子掩码进行累加处理,得到激活位置掩码;基于第一激活掩码、激活位置掩码以及神经网络输出的权重值,计算出激活选择掩码;根据激活选择掩码对第一激活值进行筛选处理,得到目标激活值,并基于目标激
活值生成第二激活掩码。
6.在第一方面的一种可选方案中,按照预设顺序依次对每组激活子掩码进行累加处理,得到激活位置掩码,包括:基于第n组加法器对第n组激活子掩码进行累加处理,并根据第n-1个累加数以及经过处理后的第n组激活子掩码,计算出第n组激活位置子掩码;其中,n为大于或等于2的正整数;基于第n组激活位置子掩码的最后一位以及第n-1个累加数,确定出第n个累加数;基于第n+1组加法器对第n+1组激活子掩码进行累加处理,并根据第n个累加数以及经过处理后的第n+1组激活子掩码,计算出第n+1组激活位置子掩码;对所有激活位置子掩码进行合并处理,得到激活位置掩码。
7.在第一方面的又一种可选方案中,基于第一激活掩码、激活位置掩码以及神经网络输出的权重值,计算出激活选择掩码,包括:将神经网络输出的权重值输入至训练后的模型中,得到第一权重掩码;对第一权重掩码进行转换处理,得到与第一激活掩码的字符个数一致的第二权重掩码;基于第一激活掩码、激活位置掩码以及第二权重掩码,计算出激活选择掩码。
8.在第一方面的又一种可选方案中,在基于第一激活掩码、激活位置掩码以及第二权重掩码,计算出激活选择掩码之前,还包括:当检测到第一激活掩码中任意至少一组激活子掩码包含非零值时,生成与包含非零值的激活子掩码对应的第一激活掩码判断信号;当检测到第一激活掩码中任意至少一组激活子掩码全部为零值时,生成与全部为零值的激活子掩码对应的第二激活掩码判断信号;按照第一激活掩码中每组激活子掩码的排列顺序,对第一激活掩码判断信号以及第二激活掩码判断信号进行合并处理,得到目标激活掩码判断信号;基于第一激活掩码、激活位置掩码以及第二权重掩码,计算出激活选择掩码,包括:基于激活位置掩码、第二权重掩码以及目标激活掩码判断信号,计算出激活选择掩码。
9.在第一方面的又一种可选方案中,基于激活位置掩码、第二权重掩码以及目标激活掩码判断信号,计算出激活选择掩码,包括:基于目标激活掩码判断信号对第二权重掩码进行筛选处理,得到第三权重掩码;将第三权重掩码以及激活位置掩码输入至选择器,得到激活选择掩码。
10.在第一方面的又一种可选方案中,基于目标激活值生成第二激活掩码,包括:将目标激活值划分为至少两组子激活值;当任意至少一组子激活值包含非零值时,生成第二激活子掩码;按照目标激活值中每组子激活值的排列顺序,基于所有第二激活子掩码生成第二激活掩码。
11.在第一方面的又一种可选方案中,方法还包括:将目标激活值以及第二激活掩码输入至神经网络;
对神经网络输出的第二激活值进行转换处理。
12.第二方面,本技术实施例提供了一种神经网络硬件加速器的数据在线压缩装置,包括:处理单元模块,用于对神经网络输出的第一激活值进行转换处理,得到第一激活掩码;第一数据压缩模块,用于将第一激活掩码划分为至少两组激活子掩码,并按照预设顺序依次对每组激活子掩码进行累加处理,得到激活位置掩码;第二数据压缩模块,用于基于第一激活掩码、激活位置掩码以及神经网络输出的权重值,计算出激活选择掩码;第三数据压缩模块,用于根据激活选择掩码对第一激活值进行筛选处理,得到目标激活值,并基于目标激活值生成第二激活掩码。
13.在第二方面的一种可选方案中,第一数据压缩模块具体用于:基于第n组加法器对第n组激活子掩码进行累加处理,并根据第n-1个累加数以及经过处理后的第n组激活子掩码,计算出第n组激活位置子掩码;其中,n为大于或等于2的正整数;基于第n组激活位置子掩码的最后一位以及第n-1个累加数,确定出第n个累加数;基于第n+1组加法器对第n+1组激活子掩码进行累加处理,并根据第n个累加数以及经过处理后的第n+1组激活子掩码,计算出第n+1组激活位置子掩码;对所有激活位置子掩码进行合并处理,得到激活位置掩码。
14.在第二方面的又一种可选方案中,第二数据压缩模块具体用于:将神经网络输出的权重值输入至训练后的模型中,得到第一权重掩码;对第一权重掩码进行转换处理,得到与第一激活掩码的字符个数一致的第二权重掩码;基于第一激活掩码、激活位置掩码以及第二权重掩码,计算出激活选择掩码。
15.在第二方面的又一种可选方案中,第二数据压缩模块具体还用于:在基于第一激活掩码、激活位置掩码以及第二权重掩码,计算出激活选择掩码之前,当检测到第一激活掩码中任意至少一组激活子掩码包含非零值时,生成与包含非零值的激活子掩码对应的第一激活掩码判断信号;当检测到第一激活掩码中任意至少一组激活子掩码全部为零值时,生成与全部为零值的激活子掩码对应的第二激活掩码判断信号;按照第一激活掩码中每组激活子掩码的排列顺序,对第一激活掩码判断信号以及第二激活掩码判断信号进行合并处理,得到目标激活掩码判断信号;基于第一激活掩码、激活位置掩码以及第二权重掩码,计算出激活选择掩码,包括:基于激活位置掩码、第二权重掩码以及目标激活掩码判断信号,计算出激活选择掩码。
16.在第二方面的又一种可选方案中,第二数据压缩模块具体还用于:基于目标激活掩码判断信号对第二权重掩码进行筛选处理,得到第三权重掩码;将第三权重掩码以及激活位置掩码输入至选择器,得到激活选择掩码。
17.在第二方面的又一种可选方案中,第三数据压缩模块具体用于:将目标激活值划分为至少两组子激活值;当任意至少一组子激活值包含非零值时,生成第二激活子掩码;按照目标激活值中每组子激活值的排列顺序,基于所有第二激活子掩码生成第二激活掩码。
18.在第二方面的又一种可选方案中,装置还包括:将目标激活值以及第二激活掩码输入至神经网络;对神经网络输出的第二激活值进行转换处理。
19.第三方面,本技术实施例还提供了一种神经网络硬件加速器的数据在线压缩装置,包括处理器以及存储器;处理器与存储器连接;存储器,用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于实现本技术实施例第一方面或第一方面的任意一种实现方式提供的神经网络硬件加速器的数据在线压缩方法。
20.第四方面,本技术实施例提供了一种计算机存储介质,计算机存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时,可实现本技术实施例第一方面或第一方面的任意一种实现方式提供的神经网络硬件加速器的数据在线压缩方法。
21.在本技术实施例中,可在对神经网络硬件加速器的数据进行在线压缩时,对神经网络输出的第一激活值进行转换处理,得到第一激活掩码;将第一激活掩码划分为至少两组激活子掩码,并按照预设顺序依次对每组激活子掩码进行累加处理,得到激活位置掩码; 基于第一激活掩码、激活位置掩码以及神经网络输出的权重值,计算出激活选择掩码;根据激活选择掩码对第一激活值进行筛选处理,得到目标激活值,并基于目标激活值生成第二激活掩码。通过对激活值进行在线掩码的设置以及对权重值的离线压缩,不仅对不同的神经网络压缩的适应性强,还可提高数据移动效率,在降低功耗的同时保证了吞吐量。
附图说明
22.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
23.图1为本技术实施例提供的一种神经网络硬件加速器的数据在线压缩方法的整体流程示意图;图2为本技术实施例提供的一种神经网络硬件加速器的数据压缩方法的应用结构示意图;图3为本技术实施例提供的一种激活位置掩码的计算过程示意图;图4为本技术实施例提供的一种激活选择掩码的计算过程示意图;图5为本技术实施例提供的一种神经网络硬件加速器的数据在线压缩装置的结构示意图;图6为本技术实施例提供的又一种神经网络硬件加速器的数据在线压缩装置的结
构示意图。
具体实施方式
24.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。
25.在下述介绍中,术语“第一”、“第二”仅为用于描述的目的,而不能理解为指示或暗示相对重要性。下述介绍提供了本技术的多个实施例,不同实施例之间可以替换或者合并组合,因此本技术也可认为包含所记载的相同和/或不同实施例的所有可能组合。因而,如果一个实施例包含特征a、b、c,另一个实施例包含特征b、d,那么本技术也应视为包括含有a、b、c、d的一个或多个所有其他可能的组合的实施例,尽管该实施例可能并未在以下内容中有明确的文字记载。
26.下面的描述提供了示例,并且不对权利要求书中阐述的范围、适用性或示例进行限制。可以在不脱离本技术内容的范围的情况下,对描述的元素的功能和布置做出改变。各个示例可以适当省略、替代或添加各种过程或组件。例如所描述的方法可以以所描述的顺序不同的顺序来执行,并且可以添加、省略或组合各种步骤。此外,可以将关于一些示例描述的特征组合到其他示例中。
27.请参阅图1,图1示出了本技术实施例提供的一种神经网络硬件加速器的数据在线压缩方法的整体流程示意图。
28.如图1所示,该神经网络硬件加速器的数据在线压缩方法至少可以包括以下步骤:步骤102、对神经网络输出的第一激活值进行转换处理,得到第一激活掩码。
29.在本技术实施例中,神经网络硬件加速器的数据在线压缩方法可以但不局限于应用在神经网络,或是用于运行神经网络的移动终端,或是用于运行神经网络的服务器终端中,此处提到的神经网络、用于运行神经网络的移动终端或是用于运行神经网络的服务器终端在执行该神经网络硬件加速器的数据在线压缩方法时,还可以但不局限于通过离线压缩的方式对神经网络所输出的权重值进行压缩,并结合权重值的压缩结果得到激活值的在线压缩结果。
30.可以理解的是,此处提到的神经网络、用于运行神经网络的移动终端或是用于运行神经网络的服务器终端为了区分权重值以及激活值,还可设置有分别用于存储权重值的权重缓存模块、用于存储权重掩码的权重掩码缓存模块、用于存储激活值的激活缓存模块以及用于存储激活掩码的激活掩码缓存模块,且该神经网络、用于运行神经网络的移动终端或是用于运行神经网络的服务器终端还可设置有用于对权重掩码以及激活掩码进行数据处理的掩码处理模块以及用于对神经网络所输出的激活值以及权重值进行处理的数据在线压缩模块。
31.此处可参阅图2示出的本技术实施例提供的一种神经网络硬件加速器的数据压缩方法的应用结构示意图。如图2所示,处理单元模块可用于执行神经网络的运算过程,并可将神经网络的输出结果发送至数据在线压缩模块。该数据在线压缩模块可用于对神经网络的输出结果中的激活值按照预设格式压缩,生成相应的激活掩码,并分别将该激活值输出至外部数据存储模块的激活缓存模块,以及将该激活掩码输出至外部掩码存储模块的激活掩码缓存模块;同时还可将神经网络的输出结果中的权重值按照预设格式压缩,生成相应
的权重掩码,并分别将该权重值输出至外部数据存储模块的权重缓存模块,以及将该权重掩码输出至外部掩码存储模块的权重掩码缓存模块。可以理解的是,对权重值进行压缩的方式还可为离线压缩,也即是说数据在线压缩模块可将神经网络的输出结果中的权重值输出至其他压缩模块,以通过离线压缩的方式将权重值进行压缩得到相应的权重掩码,并由该数据在线压缩模块再分别将该权重值输出至外部数据存储模块的权重缓存模块,以及将该权重掩码输出至外部掩码存储模块的权重掩码缓存模块。其中,激活缓存模块可以但不局限于为激活值乒乓缓存模块,也即设置有三个激活值缓存区,以便于保障数据搬移过程之中的流水操作。
32.图2中的掩码处理模块可用于获取激活掩码缓存模块输出的激活掩码以及获取权重掩码缓存模块输出的权重掩码,以结合该激活掩码以及权重掩码生成数据选择指令,并将该数据选择指令分别输出至激活缓存模块以及权重缓存模块,便于该激活缓存模块可输出指定的激活值至处理单元模块,以及便于该权重缓存模块可输出指定的权重值至处理单元模块,进而实现该处理单元模块中神经网络的后续运算过程。
33.具体地,对神经网络硬件加速器的数据进行在线压缩时,可从神经网络所输出的计算结果中确定出第一激活值,并可以但不局限于按照预设格式对该第一激活值进行转换处理,以得到与该第一激活值对应的第一激活掩码。其中,预设格式可理解为按照预设字符个数对第一激活值进行划分,并将划分出的每个激活值中非零值转换为字符1,以及将划分出的每个激活值中零值转换为字符0。此处可参阅如下所示的激活值-激活掩码转换表:可以理解的是,在本技术实施例中,可将第一激活值按照每四个字符进行划分,每四个字符中将非零值转换为字符1,以及将零值转换为字符0,例如当激活值的四个字符可表示为“非零、0、0、非零”时,对应的激活掩码可表示为“1001”。
34.步骤104、将第一激活掩码划分为至少两组激活子掩码,并按照预设顺序依次对每组激活子掩码进行累加处理,得到激活位置掩码。
35.具体地,可在对第一激活值进行压缩转换处理,得到第一激活掩码之后,将该第一激活掩码均等划分为至少两组激活子掩码,每组激活子掩码中的字符个数保持一致,例如但不局限于每组激活子掩码可包括四个字符,且每组激活子掩码中的字符类型包括0以及1。
36.进一步的,在得到至少两组激活子掩码之后,可对每组激活子掩码分配相应的加法器,例如但不局限于每组激活子掩码中每个字符可对应一个加法器,并基于第n组加法器对第n组激活子掩码进行累加处理,并根据第n-1个累加数以及经过处理后的第n组激活子掩码,计算出第n组激活位置子掩码。接着,可对第n组激活位置子掩码的最后一位字符以及第n-1个累加数进行累加计算,得到第n个累加数。接着,基于第n+1组加法器对第n+1组激活子掩码进行累加处理,并根据第n个累加数以及经过处理后的第n+1组激活子掩码,计算出第n+1组激活位置子掩码。不断重复上述操作,直至得到与每组激活子掩码对应的激活位置
子掩码,并通过对该各个激活位置子掩码合并处理的方式,得到激活位置掩码,其中,n为大于或等于2的正整数,且第一组激活子掩码对应的激活位置子掩码的计算方式可与上述方式一致,此处不过多赘述。
37.此处可参阅图3示出的本技术实施例提供的一种激活位置掩码的计算过程示意图。如图3所示,以第一组激活子掩码为10010000为例,经过八个加法器进行处理所得到的第一组激活位置子掩码可为11222222,且此处结合上一次掩码计算得到的累加数0以及该第一组激活位置子掩码的最后一位字符2可计算出第一个累加数为2;接着,第二组激活子掩码为00100110,经过八个加法器进行处理所得到的第二组激活位置子掩码可为00111233,且此处结合第一个累加数以及该第二组激活位置子掩码的最后一位字符3可计算出第二个累加数为5;接着,第三组激活子掩码为00000001,经过八个加法器进行处理所得到的第三组激活位置子掩码可为00000001,且此处结合第二个累加数以及该第三组激活位置子掩码的最后一位字符1可计算出第三个累加数为6;接着,第四组激活子掩码为00110010,经过八个加法器进行处理所得到的第四组激活位置子掩码可为00122233,且此处结合第三个累加数以及该第四组激活位置子掩码的最后一位字符3可计算出第四个累加数为9。
38.需要注意的是,在得到每组激活位置子掩码以及相应的累加数之后,可通过合并处理,先结合第一个累加数2以及第二组激活位置子掩码00111233,得到排列在第一组激活位置子掩码11222222后面的第二组激活位置子掩码实际为22333455;接着,结合第二个累加数5以及第三组激活位置子掩码00000001,得到排列在第二组激活位置子掩码22333455后面的第三组激活位置子掩码实际为55555556;接着,结合第三个累加数6以及第四组激活位置子掩码00122233,得到排列在第三组激活位置子掩码55555556后面的第四组激活位置子掩码实际为66788899;进而可得出激活位置掩码为11222222223334555555555666788899。
39.步骤106、基于第一激活掩码、激活位置掩码以及神经网络输出的权重值,计算出激活选择掩码。
40.具体地,在得到激活位置掩码之后,可将上述提到的神经网络所输出的计算结果中确定出权重值,并将该权重值输入至训练后的模型中,以根据模型的输出结果得到第一权重掩码,该模型可理解为一种转换格式,此处可参阅如下所示的权重值-权重掩码转换列表:可以理解的是,在本技术实施例中可以但不局限于将权重值按照每四个字符进行划分,并将划分后的每个权重值输入至模型中,输出经过训练后的数据,接着可按照预设的
权重转换格式将该经过训练后的数据压缩转换为相应的权重掩码。例如,当权重值为“非零、0、0、非零”时,可将该权重值输入至模型中,输出经过训练后的数据可表示为“非零、0、0、0”,并按照预设的权重转换格式将该“非零、0、0、0”转换为表示为00的权重掩码。
41.进一步的,在得到权重值的第一权重掩码之后,可对该第一权重掩码进行转换处理,以得到与上述提到的第一激活掩码的字符个数一致的第二权重掩码,并可基于第一激活掩码、激活位置掩码以及该第二权重掩码,计算出激活选择掩码。可以理解的是,此处第一权重掩码可对应为2bit,上述提到的第一激活掩码可对应为4bit,基于此可将该第一权重掩码转换为4bit的第二权重掩码,其转换方式可参阅如下列表:作为本技术实施例的一种可选,在基于第一激活掩码、激活位置掩码以及第二权重掩码,计算出激活选择掩码之前,还包括:当检测到第一激活掩码中任意至少一组激活子掩码包含非零值时,生成与包含非零值的激活子掩码对应的第一激活掩码判断信号;当检测到第一激活掩码中任意至少一组激活子掩码全部为零值时,生成与全部为零值的激活子掩码对应的第二激活掩码判断信号;按照第一激活掩码中每组激活子掩码的排列顺序,对第一激活掩码判断信号以及第二激活掩码判断信号进行合并处理,得到目标激活掩码判断信号;基于第一激活掩码、激活位置掩码以及第二权重掩码,计算出激活选择掩码,包括:基于激活位置掩码、第二权重掩码以及目标激活掩码判断信号,计算出激活选择掩码。
42.具体地,在得到第一激活掩码之后,可能的,当检测到该第一激活掩码中任意一组激活子掩码中存在非零值时,可生成与包含非零值的激活子掩码对应的第一激活掩码判断信号,该第一激活掩码判断信号可以但不局限于表示为1。可能的,当检测到该第一激活掩码中任意一组激活子掩码全部为零值时,可生成与全部为零值的激活子掩码对应的第二激活掩码判断信号,该第二激活掩码判断信号可以但不局限于表示为0;接着可按照第一激活掩码中每组激活子掩码的排列顺序,对第一激活掩码判断信号以及第二激活掩码判断信号进行合并处理,得到目标激活掩码判断信号。例如以第一组激活子掩码为10010000,第二组激活子掩码为00100110为例,对应的目标激活掩码判断信号为11。
43.作为本技术实施例的又一种可选,基于激活位置掩码、第二权重掩码以及目标激活掩码判断信号,计算出激活选择掩码,包括:基于目标激活掩码判断信号对第二权重掩码进行筛选处理,得到第三权重掩码;将第三权重掩码以及激活位置掩码输入至选择器,得到激活选择掩码。
44.具体地,在得到目标激活掩码判断信号之后,可基于该目标激活掩码判断信号对第二权重掩码进行筛选处理,以得到第三权重掩码,其中,筛选方式可以但不局限于为先将
第二权重掩码均等划分为多组第二权重子掩码,每组第二权重子掩码的字符个数可与激活子掩码的字符个数一致,接着当第m组第二权重子掩码所对应的激活掩码判断信号为1时,可将该第m组第二权重子掩码中所有的字符作为第三权重掩码中第m组权重子掩码;当第s组第二权重子掩码所对应的激活掩码判断信号为0时,可将该第s组第二权重子掩码中所有的字符全部转换为0,并将该转换后的第s组第二权重子掩码作为第三权重掩码中第s组权重子掩码。
45.进一步的,可将将第三权重掩码以及激活位置掩码同时输入至选择器,得到激活选择掩码。此处可参阅4示出的本技术实施例提供的一种激活选择掩码的计算过程示意图。如图4所示,以第二权重掩码为10000100为例,对应的目标激活掩码判断信号可表示为10,则筛选后的第三权重掩码可表示为10000000,并将该第三权重掩码以及对应的激活位置掩码11222222同时输入至选择器中,可得到对应的激活选择掩码可表示为10。
46.步骤108、根据激活选择掩码对第一激活值进行筛选处理,得到目标激活值,并基于目标激活值生成第二激活掩码。
47.具体地,在得到激活选择掩码之后,可先将第一激活值按照激活子掩码的划分方式划分为多组子值,并基于该激活选择掩码在每组子值中筛选出相应的目标激活值。需要注意的是,在对第一激活值按照激活子掩码的划分方式划分为多组子值之前,还可将该第一激活值中所有零值进行剔除处理,以将所有的非零值紧密排列作为第一激活值。可以理解的是,在本技术实施例中,每次最多可以读取两个激活缓存模块的数据,当读取两个激活缓存模块的数据时,可设置第三个激活缓存模块更新其激活值数据,以保证选择整个过程的流水性。
48.进一步的,在得到目标激活值之后,还可将该目标激活值划分为至少两组子激活值,可能的,当检测到任意至少一组子激活值中包含有非零值时,可将该子激活值作为第二激活子掩码;可能的,当检测到任意至少一组子激活值中全部为零值时,可将该子激活值进行剔除处理。接着,可将保留的所有子激活值作为第二激活掩码,并可在神经网络需要进行下次运算时,将该第二激活掩码输出至激活缓存模块,以便于该激活缓存模块根据该第二激活掩码输出目标激活值。
49.作为本技术实施例的又一种可选,方法还包括:将目标激活值以及第二激活掩码输入至神经网络;对神经网络输出的第二激活值进行转换处理。
50.具体地,在本技术实施例中当检测到神经网络需执行下一次运算时,可以但不局限于将目标激活值以及第二激活掩码输入至神经网络,以由神经网络根据该目标激活值以及第二激活掩码得到相应的激活值并进行运算,接着可将输出的运算结果再次进行数据在线压缩,并重复上述提到的一个或多个实施例,此处不过多赘述。
51.请参阅图5,图5示出了本技术实施例提供的一种神经网络硬件加速器的数据在线压缩装置的结构示意图。
52.如图5所示,该神经网络硬件加速器的数据在线压缩装置至少可以包括处理单元模块501、第一数据压缩模块502、第二数据压缩模块503以及第三数据压缩模块504,其中:处理单元模块501,用于对神经网络输出的第一激活值进行转换处理,得到第一激活掩码;
第一数据压缩模块502,用于将第一激活掩码划分为至少两组激活子掩码,并按照预设顺序依次对每组激活子掩码进行累加处理,得到激活位置掩码;第二数据压缩模块503,用于基于第一激活掩码、激活位置掩码以及神经网络输出的权重值,计算出激活选择掩码;第三数据压缩模块504,用于根据激活选择掩码对第一激活值进行筛选处理,得到目标激活值,并基于目标激活值生成第二激活掩码。
53.在一些可能的实施例中,第一数据压缩模块具体用于:基于第n组加法器对第n组激活子掩码进行累加处理,并根据第n-1个累加数以及经过处理后的第n组激活子掩码,计算出第n组激活位置子掩码;其中,n为大于或等于2的正整数;基于第n组激活位置子掩码的最后一位以及第n-1个累加数,确定出第n个累加数;基于第n+1组加法器对第n+1组激活子掩码进行累加处理,并根据第n个累加数以及经过处理后的第n+1组激活子掩码,计算出第n+1组激活位置子掩码;对所有激活位置子掩码进行合并处理,得到激活位置掩码。
54.在一些可能的实施例中,第二数据压缩模块具体用于:将神经网络输出的权重值输入至训练后的模型中,得到第一权重掩码;对第一权重掩码进行转换处理,得到与第一激活掩码的字符个数一致的第二权重掩码;基于第一激活掩码、激活位置掩码以及第二权重掩码,计算出激活选择掩码。
55.在一些可能的实施例中,第二数据压缩模块具体还用于:在基于第一激活掩码、激活位置掩码以及第二权重掩码,计算出激活选择掩码之前,当检测到第一激活掩码中任意至少一组激活子掩码包含非零值时,生成与包含非零值的激活子掩码对应的第一激活掩码判断信号;当检测到第一激活掩码中任意至少一组激活子掩码全部为零值时,生成与全部为零值的激活子掩码对应的第二激活掩码判断信号;按照第一激活掩码中每组激活子掩码的排列顺序,对第一激活掩码判断信号以及第二激活掩码判断信号进行合并处理,得到目标激活掩码判断信号;基于第一激活掩码、激活位置掩码以及第二权重掩码,计算出激活选择掩码,包括:基于激活位置掩码、第二权重掩码以及目标激活掩码判断信号,计算出激活选择掩码。
56.在一些可能的实施例中,第二数据压缩模块具体还用于:基于目标激活掩码判断信号对第二权重掩码进行筛选处理,得到第三权重掩码;将第三权重掩码以及激活位置掩码输入至选择器,得到激活选择掩码。
57.在一些可能的实施例中,第三数据压缩模块具体用于:将目标激活值划分为至少两组子激活值;当任意至少一组子激活值包含非零值时,生成第二激活子掩码;按照目标激活值中每组子激活值的排列顺序,基于所有第二激活子掩码生成第二激活掩码。
58.在一些可能的实施例中,装置还包括:将目标激活值以及第二激活掩码输入至神经网络;对神经网络输出的第二激活值进行转换处理。
59.本领域的技术人员可以清楚地了解到本技术实施例的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”和“模块”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是现场可编程门阵列(field-programmable gate array,fpga)、集成电路(integrated circuit,ic)等。
60.请参阅图6,图6示出了本技术实施例提供的又一种神经网络硬件加速器的数据在线压缩装置的结构示意图。
61.如图6所示,该神经网络硬件加速器的数据在线压缩装置600可以包括至少一个处理器601、至少一个网络接口604、用户接口603、存储器605以及至少一个通信总线602。
62.其中,通信总线602可用于实现上述各个组件的连接通信。
63.其中,用户接口603可以包括按键,可选用户接口还可以包括标准的有线接口、无线接口。
64.其中,网络接口604可以但不局限于包括蓝牙模块、nfc模块、wi-fi模块等。
65.其中,处理器601可以包括一个或者多个处理核心。处理器601利用各种接口和线路连接整个电子设备600内的各个部分,通过运行或执行存储在存储器605内的指令、程序、代码集或指令集,以及调用存储在存储器605内的数据,执行路由设备600的各种功能和处理数据。可选的,处理器601可以采用dsp、fpga、pla中的至少一种硬件形式来实现。处理器601可集成cpu、gpu和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器601中,单独通过一块芯片进行实现。
66.其中,存储器605可以包括ram,也可以包括rom。可选的,该存储器605包括非瞬时性计算机可读介质。存储器605可用于存储指令、程序、代码、代码集或指令集。存储器605可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器605可选的还可以是至少一个位于远离前述处理器601的存储装置。如图6所示,作为一种计算机存储介质的存储器605中可以包括操作系统、网络通信模块、用户接口模块以及神经网络硬件加速器的数据在线压缩应用程序。
67.具体地,处理器601可以用于调用存储器605中存储的神经网络硬件加速器的数据在线压缩应用程序,并具体执行以下操作:对神经网络输出的第一激活值进行转换处理,得到第一激活掩码;将第一激活掩码划分为至少两组激活子掩码,并按照预设顺序依次对每组激活子掩码进行累加处理,得到激活位置掩码;基于第一激活掩码、激活位置掩码以及神经网络输出的权重值,计算出激活选择掩码;根据激活选择掩码对第一激活值进行筛选处理,得到目标激活值,并基于目标激
活值生成第二激活掩码。
68.在一些可能的实施例中,按照预设顺序依次对每组激活子掩码进行累加处理,得到激活位置掩码,包括:基于第n组加法器对第n组激活子掩码进行累加处理,并根据第n-1个累加数以及经过处理后的第n组激活子掩码,计算出第n组激活位置子掩码;其中,n为大于或等于2的正整数;基于第n组激活位置子掩码的最后一位以及第n-1个累加数,确定出第n个累加数;基于第n+1组加法器对第n+1组激活子掩码进行累加处理,并根据第n个累加数以及经过处理后的第n+1组激活子掩码,计算出第n+1组激活位置子掩码;对所有激活位置子掩码进行合并处理,得到激活位置掩码。
69.在一些可能的实施例中,基于第一激活掩码、激活位置掩码以及神经网络输出的权重值,计算出激活选择掩码,包括:将神经网络输出的权重值输入至训练后的模型中,得到第一权重掩码;对第一权重掩码进行转换处理,得到与第一激活掩码的字符个数一致的第二权重掩码;基于第一激活掩码、激活位置掩码以及第二权重掩码,计算出激活选择掩码。
70.在一些可能的实施例中,在基于第一激活掩码、激活位置掩码以及第二权重掩码,计算出激活选择掩码之前,还包括:当检测到第一激活掩码中任意至少一组激活子掩码包含非零值时,生成与包含非零值的激活子掩码对应的第一激活掩码判断信号;当检测到第一激活掩码中任意至少一组激活子掩码全部为零值时,生成与全部为零值的激活子掩码对应的第二激活掩码判断信号;按照第一激活掩码中每组激活子掩码的排列顺序,对第一激活掩码判断信号以及第二激活掩码判断信号进行合并处理,得到目标激活掩码判断信号;基于第一激活掩码、激活位置掩码以及第二权重掩码,计算出激活选择掩码,包括:基于激活位置掩码、第二权重掩码以及目标激活掩码判断信号,计算出激活选择掩码。
71.在一些可能的实施例中,基于激活位置掩码、第二权重掩码以及目标激活掩码判断信号,计算出激活选择掩码,包括:基于目标激活掩码判断信号对第二权重掩码进行筛选处理,得到第三权重掩码;将第三权重掩码以及激活位置掩码输入至选择器,得到激活选择掩码。
72.在一些可能的实施例中,基于目标激活值生成第二激活掩码,包括:将目标激活值划分为至少两组子激活值;当任意至少一组子激活值包含非零值时,生成第二激活子掩码;按照目标激活值中每组子激活值的排列顺序,基于所有第二激活子掩码生成第二激活掩码。
73.在一些可能的实施例中,方法还包括:将目标激活值以及第二激活掩码输入至神经网络;
对神经网络输出的第二激活值进行转换处理。
74.本技术还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。其中,计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、dvd、cd-rom、微型驱动器以及磁光盘、rom、ram、eprom、eeprom、dram、vram、闪速存储器设备、磁卡或光卡、纳米系统(包括分子存储器ic),或适合于存储指令和/或数据的任何类型的媒介或设备。
75.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
76.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
77.在本技术所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
78.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
79.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
80.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本技术各个实施例方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(read-only memory, rom)、随机存取存储器(random access memory,ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
81.本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通进程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(read-only memory, rom)、随机存取器(random access memory,ram)、磁盘或光盘等。
82.以上者,仅为本公开的示例性实施例,不能以此限定本公开的范围。即但凡依本公开教导所作的等效变化与修饰,皆仍属本公开涵盖的范围内。本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其实施方案。本技术旨在涵盖本公开的任何
变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未记载的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的范围和精神由权利要求限定。