嵌入式设备中三值神经网络权值处理方法及装置与流程

文档序号:17929468发布日期:2019-06-15 00:42阅读:184来源:国知局
嵌入式设备中三值神经网络权值处理方法及装置与流程

本发明实施例涉及数据处理技术领域,具体涉及一种嵌入式设备中三值神经网络权值处理方法及装置。



背景技术:

随着计算机性能的不断提高,深度学习与人工神经网络已广泛应用于语音识别、人员识别和各类异常声的检测。传统上,语音识别技术都是基于时频分析后的声谱图完成的。特定语音的声谱图具有特定的结构,但这种结构会随说话人与环境的变化而变化。将深度学习与人工神经网络应用到语音技术中,可以利用神经网络的平移不变性来克服语音信号自身的多样性。

同时,在运算和存储性能较低的嵌入式设备上运行神经网络算法以实现端上智能的需求愈发突出。特别地,嵌入式语音交互设备对语音识别准确率与反应延迟的要求也愈发苛刻。应用深度学习技术与人工神经网络可以显著提高语音识别准确率并降低反应延迟。神经网络模型的训练与推断通常采用精度较高的浮点数运算,这对计算设备的内存与计算性能有很高要求。而在嵌入式设备上进行神经网络的推断时,由于嵌入式设备的内存与计算性能有限,通常适当牺牲网络精度以换取更小的模型和更快的运算速度。

传统技术方案中,通常将使用浮点数的网络参数量化为定点数,常见的量化方式包括8比特量化,三值量化和二值量化。其中8比特量化精度最高、模型最大,需要8比特数据表示每个权重;二值量化精度最低、模型最小,需要1比特数据表示每个权重;三值量化介于两者之间,需要2比特数据表示每个权重,可以做到精度与模型大小的平衡。但现有的三值化模型的每个权值数据在嵌入式设备中占用1个字节,仍然占有较大的内存。



技术实现要素:

为此,本发明实施例提供一种嵌入式设备中三值神经网络权值处理方法及装置,确保神经网络运算的准确率和速度的前提下,解决三值神经网络模型在嵌入式设备上占用较大内存空间的问题。

为了实现上述目的,本发明实施例提供如下技术方案:一种嵌入式设备中三值神经网络权值处理方法,包括以下步骤:

加载前压缩:在神经网络模型加载到嵌入式设备之前,对所述神经网络模型中的原始三值化网络权值数据进行分组,将分组后的权值数据进行按位与操作获得每个权值数据的低2位,按权值数据的顺序进行左移位并把左移位后的权值数据按位或操作获得压缩权值数据;

运算前解压:根据神经网络模型单层权值数据所需的存储空间进行内存空间开辟,在所述单层权值数据运算前,对单层权值数据对应的所述压缩权值数据进行按位与操作,将按位与操作后的压缩权值数据进行右移位获得原始三值化网络权值数据。

作为嵌入式设备中三值神经网络权值处理方法的优选方案,所述原始三值化网络权值数据每四个归为一组。

作为嵌入式设备中三值神经网络权值处理方法的优选方案,加载前压缩过程中,逐层将神经网络模型中每四个八位二进制的权值数据压缩为一个八位二进制权值数据,然后存储在嵌入式设备内存中。

作为嵌入式设备中三值神经网络权值处理方法的优选方案,运算前解压过程中,将已压缩的一个八位二进制权值数据恢复为四个八位二进制的权值数据。

作为嵌入式设备中三值神经网络权值处理方法的优选方案,运算前解压过程中,每层神经网络模型解压的权值数据覆盖前次解压的权值数据。

作为嵌入式设备中三值神经网络权值处理方法的优选方案,所述内存空间开辟的容量为神经网络模型中单层权值数据所需最大的存储空间。

本发明实施例还提供一种嵌入式设备中三值神经网络权值处理装置,包括压缩模块和解压模块;

所述压缩模块包括分组单元、第一运算单元、第一移位单元和第二运算单元;所述分组单元用于在神经网络模型加载到嵌入式设备之前,对所述神经网络模型中的原始三值化网络权值数据进行分组;所述第一运算单元用于将分组后的权值数据进行按位与操作获得每个权值数据的低2位;所述第一移位单元用于按权值数据的顺序进行左移位;所述第二运算单元用于将左移位后的权值数据按位或操作获得压缩权值数据;

所述解压模块包括内存开辟单元、第三运算单元和第二移位单元,所述内存开辟单元用于根据神经网络模型单层权值数据所需的存储空间进行内存空间开辟;所述第三运算单元用于在所述单层权值数据运算前,对单层权值数据对应的所述压缩权值数据进行按位与操作;所述第二移位单元用于将按位与操作后的压缩权值数据进行右移位获得原始三值化网络权值数据。

作为嵌入式设备中三值神经网络权值处理装置的优选方案,所述分组单元将所述原始三值化网络权值数据每四个归为一组;

所述第一运算单元逐层将神经网络模型中每四个八位二进制的权值数据压缩为一个八位二进制权值数据,然后存储在嵌入式设备内存中。

作为嵌入式设备中三值神经网络权值处理装置的优选方案,所述内存开辟单元的内存空间开辟的容量为神经网络模型中单层权值数据所需最大的存储空间;所述第三运算单元将已压缩的一个八位二进制权值数据恢复为四个八位二进制的权值数据。

作为嵌入式设备中三值神经网络权值处理装置的优选方案,所述解压模块还包括覆盖单元,所述覆盖单元用于将每层神经网络模型解压的权值数据覆盖前次解压的权值数据。

本发明实施例具有如下优点:在神经网络模型加载到嵌入式设备之前,对神经网络模型中的原始三值化网络权值数据进行分组,将分组后的权值数据进行按位与操作获得每个权值数据的低2位,按权值数据的顺序进行左移位并把左移位后的权值数据按位或操作获得压缩权值数据。根据神经网络模型单层权值数据所需的存储空间进行内存空间开辟,在单层权值数据运算前,对单层权值数据对应的压缩权值数据进行按位与操作,将按位与操作后的压缩权值数据进行右移位获得原始三值化网络权值数据。解决了三值化神经网络模型占用嵌入式设备较多内存的问题,且在解压模块没有对神经网络运算的准确率和速度产生不利影响,符合神经网络轻量化的发展趋势,在移动和嵌入式设备趋向于加载神经网络模型的背景下,本发明技术方案具有广泛的应用前景。

附图说明

为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。

图1为本发明实施例中提供的嵌入式设备中三值神经网络权值处理方法示意图;

图2为本发明实施例中提供的嵌入式设备中三值神经网络权值处理方法加载前压缩示意图;

图3为本发明实施例中提供的嵌入式设备中三值神经网络权值处理方法运算前解压示意图;

图4为本发明实施例中提供的嵌入式设备中三值神经网络权值处理装置架构示意图;

图5为解压模块的三值化卷积神经输出流程示意图。

图中,1、压缩模块;101、分组单元;102、第一运算单元;103、第一移位单元;104、第二运算单元;2、解压模块;201、内存开辟单元;202、第三运算单元;203、第二移位单元;204、覆盖单元。

具体实施方式

以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图1、图2和图3,提供一种嵌入式设备中三值神经网络权值处理方法,包括以下步骤:

加载前压缩:在神经网络模型加载到嵌入式设备之前,对所述神经网络模型中的原始三值化网络权值数据进行分组,将分组后的权值数据进行按位与操作获得每个权值数据的低2位,按权值数据的顺序进行左移位并把左移位后的权值数据按位或操作获得压缩权值数据;

运算前解压:根据神经网络模型单层权值数据所需的存储空间进行内存空间开辟,在所述单层权值数据运算前,对单层权值数据对应的所述压缩权值数据进行按位与操作,将按位与操作后的压缩权值数据进行右移位获得原始三值化网络权值数据。

嵌入式设备中三值神经网络权值处理方法的一个实施例中,所述原始三值化网络权值数据每四个归为一组。加载前压缩过程中,逐层将神经网络模型中每四个八位二进制的权值数据压缩为一个八位二进制权值数据,然后存储在嵌入式设备内存中。从而将神经网络模型的大小压缩为原来的1/4。运算前解压过程中,将已压缩的一个八位二进制权值数据恢复为四个八位二进制的权值数据。运算前解压过程中,每层神经网络模型解压的权值数据覆盖前次解压的权值数据,始终占用一块内存空间。

具体的,在神经网络模型加载到嵌入式设备之前,将原始三值化网络权值数据每四个归为一组,分别和0x03做按位与操作得到每个权值数据的低2位;然后按权值数据的顺序分别向左移6位、4位、2位和0位;最终把移位后的数据按位或,即得到压缩权值数据。以此类推逐层压缩。

嵌入式设备中三值神经网络权值处理方法的一个实施例中,所述内存空间开辟的容量为神经网络模型中单层权值数据所需最大的存储空间。具体的,运算前解压过程,开辟一块内存空间,内存大小为神经网络单层权值数据所需最大的存储空间;在每层神经网络运算前,对每个所需要的压缩权值数据分别和0xc0、0x30、0x0c和0x03做按位与操作,得到的值分别右移6位,4位,2位和0位;若移位后的结果为0x03,则令该结果为0xff;移位后的结果即依次是压缩前的权值数据。

参见图4,本发明实施例还提供一种嵌入式设备中三值神经网络权值处理装置,包括压缩模块1和解压模块2;

所述压缩模块1包括分组单元101、第一运算单元102、第一移位单元103和第二运算单元104;所述分组单元101用于在神经网络模型加载到嵌入式设备之前,对所述神经网络模型中的原始三值化网络权值数据进行分组;所述第一运算单元102用于将分组后的权值数据进行按位与操作获得每个权值数据的低2位;所述第一移位单元103用于按权值数据的顺序进行左移位;所述第二运算单元104用于将左移位后的权值数据按位或操作获得压缩权值数据;

所述解压模块2包括内存开辟单元201、第三运算单元202和第二移位单元203,所述内存开辟单元201用于根据神经网络模型单层权值数据所需的存储空间进行内存空间开辟;所述第三运算单元202用于在所述单层权值数据运算前,对单层权值数据对应的所述压缩权值数据进行按位与操作;所述第二移位单元203用于将按位与操作后的压缩权值数据进行右移位获得原始三值化网络权值数据。

具体的,压缩模块1在神经网络模型加载到嵌入式设备之前,将三值化网络权值数据每四个归为一组,分别和0x03做按位与操作得到每个权值数据的低2位;然后按权值数据的顺序分别向左移6位、4位、2位和0位;最终把移位后的数据按位或,即得到压缩权值数据。以此类推逐层压缩。

嵌入式设备中三值神经网络权值处理装置的一个实施例中,所述分组单元101将所述原始三值化网络权值数据每四个归为一组。所述第一运算单元102逐层将神经网络模型中每四个八位二进制的权值数据压缩为一个八位二进制权值数据,然后存储在嵌入式设备内存中。所述内存开辟单元201的内存空间开辟的容量为神经网络模型中单层权值数据所需最大的存储空间;所述第三运算单元202将已压缩的一个八位二进制权值数据恢复为四个八位二进制的权值数据。

嵌入式设备中三值神经网络权值处理方法的一个实施例中,所述解压模块2还包括覆盖单元204,所述覆盖单元204用于将每层神经网络模型解压的权值数据覆盖前次解压的权值数据。

具体的,参见图5,三值化卷积神经网络输出流程如下,解压模块2先开辟一块内存,内存大小为神经网络单层权值数据所需最大的存储空间;解压模块2解压出第一层卷积层所需的权值数据,写入开辟的内存中,进行第一层卷积运算;解压模块2解压出第二层卷积层所需的权值数据,覆盖内存中前次解压的数据,进行第二次卷积运算;以此类推,解压模块2解压出第n层卷积层所需的权值数据,覆盖内存中前次解压的数据,进行第n次卷积运算,直至网络输出层结束。

本发明实施例在神经网络模型加载到嵌入式设备之前,对神经网络模型中的原始三值化网络权值数据进行分组,将分组后的权值数据进行按位与操作获得每个权值数据的低2位,按权值数据的顺序进行左移位并把左移位后的权值数据按位或操作获得压缩权值数据。根据神经网络模型单层权值数据所需的存储空间进行内存空间开辟,在单层权值数据运算前,对单层权值数据对应的压缩权值数据进行按位与操作,将按位与操作后的压缩权值数据进行右移位获得原始三值化网络权值数据。压缩模块1每次处理四个三值化网络权值数据;压缩模块1使用位操作的方法将四个权值数据的低2位从高位到低位依次赋予新的八位权值数据,从而将神经网络模型的大小压缩为原来的1/4。解压模块2开辟一块内存空间,内存大小为神经网络单层权值数据所需最大的存储空间;解压模块2在每层神经网络运算前将该层所需的权值数据解压,即使用位操作的方法将已压缩的八位权值数据的每二位展开为相应的八位权值数据,按从高位到地位的顺序依次赋予解压后的四个权值数据;每层神经网络解压的数据覆盖前次解压数据,始终占用一块内存空间,解决了三值化神经网络模型占用嵌入式设备较多内存的问题,且在解压模块2没有对神经网络运算的准确率和速度产生不利影响,符合神经网络轻量化的发展趋势,在移动和嵌入式设备趋向于加载神经网络模型的背景下,本发明技术方案具有广泛的应用前景。

虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。

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