数据处理方法、装置及计算机可读存储介质
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据处理方法、装置及计算机可读存储介质。
背景技术
深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。
目前,将深度学习模型中数据定点化时都是定点化为8位,然而深度学习模型中有些数据定点化为4位时,也不会造成该数据定点化后的精度损失,或者当定点化为8位时,所造成的精度损失不在预设精度损失之内,需要定点化为16位。如果将数据模型中的数据都统一定点化为8位时,导致在深度学习中模型运算速率低。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种数据处理方法、装置及计算机可读存储介质,旨在解决在深度学习中造成模型运算速率低的技术问题。
为实现上述目的,本发明提供一种数据处理方法,所述方法包括以下步骤:
获取数据模型的各个层级的各个通道中数据的有效位数;
基于所述有效位数确定各个所述通道的定点化等级;
按照各个通道的定点化等级将所述通道中数据进行定点化,以得到第一定点化数据。
优选地,所述基于所述有效位数确定各个所述通道的定点化等级的步骤包括:
基于所述有效位数确定各个所述通道中的权重数据,并获取权重数据的有效位数;
基于所述权重数据的有效位数确定各个所述通道的定点化等级。
优选地,所述基于所述有效位数确定各个所述通道中的权重数据的步骤包括:
基于所述有效位数将所述通道中数据进行分类统计,以得到不同有效位数对应的数据个数;
计算不同有效位数对应的数据个数占总数据个数的比例,将所述比例中最大比例对应的数据作为权重数据。
优选地,所述基于所述权重数据的有效位数确定各个所述通道的定点化等级的步骤包括:
确定所述通道中其余数据按照所述权重数据的有效位数定点化后的精度损失是否小于或者等于预设精度损失,其中,所述其余数据包括通道中除权重数据外的数据;
当所述精度损失小于或者等于预设精度损失时,基于所述权重数据的有效位数确定所述通道的定点化等级。
优选地,确定所述通道中其余数据按照所述权重数据的有效位数定点化后的精度损失是否小于或者等于预设精度损失,其中,所述其余数据包括通道中除权重数据外的数据的步骤之后,所述数据处理方法还包括:
当所述精度损失大于所述预设精度损失时,将有效位数上升一位,以得到上升一位后的上升位数;
基于所述上升位数确定所述通道定点化的等级。
优选地,所述按照各个通道的定点化等级将所述通道中数据进行定点化,以得到第一定点化数据的步骤之后,所述数据处理方法还包括:
获取图像数据,将所述图像数据与所述第一定点化数据进行运算,以得到运算结果;
将所述运算结果进行定点化,以得到第二定点化数据,并基于所述第一定点化数据与所述第二定点化数据进行逐层运算。
优选地,所述数据处理方法还包括以下步骤:
获取所述定点化等级对应的数据范围;
基于所述数据范围确定所述通道中数据的数值是否大于所述定点化等级所能表示的最大值;
若所述数值大于所述最大值,则取所述最大值来表示所述通道中数据。
此外,为实现上述目的,本发明还提供一种数据处理装置,数据处理装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据处理程序,所述数据处理程序被所述处理器执行时实现上述任一项数据处理方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据处理程序,所述数据处理程序被处理器执行时实现上述任一项数据处理方法的步骤。
本发明通过获取数据模型的各个层级的各个通道中数据的有效位数;基于所述有效位数确定各个所述通道的定点化等级;按照各个通道的定点化等级将所述通道中数据进行定点化,以得到第一定点化数据。本发明还公开了一种数据处理装置及计算机可读存储介质。实现了根据有效位数确定各个通道的定点化等级,不同通道可以采用不同等级的定点化,减短了数据的字节数,增大了存储空间,进而提高了模型运算率。
附图说明
图1是本发明实施例方案涉及的硬件运行环境中数据处理装置所属终端的结构示意图;
图2为本发明数据处理方法第一实施例的流程示意图;
图3为本发明数据处理方法第二实施例中所述基于所述有效位数确定各个所述通道的定点化等级步骤的细化流程示意图;
图4为本发明数据处理方法第三实施例中所述基于所述有效位数确定各个所述通道中的权重数据步骤的细化流程示意图;
图5为本发明数据处理方法第四实施例中所述基于所述权重数据的有效位数确定各个所述通道的定点化等级步骤的细化流程示意图;
图6为本发明数据处理方法第五实施例的流程示意图;
图7为本发明数据处理方法第六实施例的流程示意图;
图8为本发明数据处理方法第八实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境中数据处理装置所属终端的结构示意图。
本发明实施例终端可以是PC。如图1所示,该终端可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
可选地,终端还可以包括摄像头、RF(Radio Frequency,射频)电路,传感器、音频电路、WiFi模块等等。其中,传感器比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示屏的亮度,接近传感器可在移动终端移动到耳边时,关闭显示屏和/或背光。作为运动传感器的一种,重力加速度传感器可检测方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别移动终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;当然,移动终端还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作服务器、网络通信模块、用户接口模块以及数据处理程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的数据处理程序。
在本实施例中,数据处理装置包括:存储器1005、处理器1001及存储在所述存储器1005上并可在所述处理器1001上运行的数据处理程序,其中,处理器1001调用存储器1005中存储的数据处理程序时,执行以下操作:
获取数据模型的各个层级的各个通道中数据的有效位数;
基于所述有效位数确定各个所述通道的定点化等级;
按照各个通道的定点化等级将所述通道中数据进行定点化,以得到第一定点化数据。
进一步地,处理器1001可以调用存储器1005中存储的数据处理程序,还执行以下操作:
基于所述有效位数确定各个所述通道中的权重数据,并获取权重数据的有效位数;
基于所述权重数据的有效位数确定各个所述通道的定点化等级。
进一步地,处理器1001可以调用存储器1005中存储的数据处理程序,还执行以下操作:
基于所述有效位数将所述通道中数据进行分类统计,以得到不同有效位数对应的数据个数;
计算不同有效位数对应的数据个数占总数据个数的比例,将所述比例中最大比例对应的数据作为权重数据。
进一步地,处理器1001可以调用存储器1005中存储的数据处理程序,还执行以下操作:
确定所述通道中其余数据按照所述权重数据的有效位数定点化后的精度损失是否小于或者等于预设精度损失,其中,所述其余数据包括通道中除权重数据外的数据;
当所述精度损失小于或者等于预设精度损失时,基于所述权重数据的有效位数确定所述通道的定点化等级。
进一步地,处理器1001可以调用存储器1005中存储的数据处理程序,还执行以下操作:
当所述精度损失大于所述预设精度损失时,将有效位数上升一位,以得到上升一位后的上升位数;
基于所述上升位数确定所述通道定点化的等级。
进一步地,处理器1001可以调用存储器1005中存储的数据处理程序,还执行以下操作:
获取图像数据,将所述图像数据与所述第一定点化数据进行运算,以得到运算结果;
将所述运算结果进行定点化,以得到第二定点化数据,并基于所述第一定点化数据与所述第二定点化数据进行逐层运算。
进一步地,处理器1001可以调用存储器1005中存储的数据处理程序,还执行以下操作:
获取所述定点化等级对应的数据范围;
基于所述数据范围确定所述通道中数据的数值是否大于所述定点化等级所能表示的最大值;
若所述数值大于所述最大值,则取所述最大值来表示所述通道中数据。
本发明进一步提供一种数据处理方法。参照图2,图2为本发明数据处理方法第一实施例的流程示意图。
在本实施例中,该数据处理方法包括以下步骤:
步骤S10,获取数据模型的各个层级的各个通道中数据的有效位数;
在本实施例中,数据模型是数据特征的抽象,是数据库管理的教学形式框架,在数据模型中分布着各个层级,例如,第一层、第二层、第三层等,在数据模型中数据一般都是以32位的二进制进行表示,在对数据模型进行定点化时,首先获取通道中数据的有效位数,例如,数字7用八位的二进制表示为00000111,则有效位数为三位。
步骤S20,基于所述有效位数确定各个所述通道的定点化等级;
在本实施例中,定点化等级包括将通道中数据定点化为16位、8位、4位等,在对数据模型中数据进行定点化时,将通道中的数据的有效位数进行统计,然后根据有效位数对将通道中的数据进行分类,将有效位数相同的数据分为一类,例如,00000111、00000101及00000100的有效位数相同,则可以分为一类。将分类后的数据及对应的有效位数进行存储,该分类后的数据及对应的有效位数则为统计结果。
进一步地,在将通道中数据进行分类统计后,得到通道中数据对应的有效位数,计算各类数据所占总数据的比例,该最大比例对应的数据的则为权重数据,然后获取该权重数据对应的有效位数,按照权重数据对应的有效位数确定该通道的定点化等级,例如,计算得到有效位数为4位的数据比例最高,则该有效位数为4位的数据作为权重数据,有些原数据的有效位数大于4位时,若将这些原数据定点化为4位后存在精度损失,可以通过现有技术的算法计算精度损失,当该精度损失小于或等于预设精度损失时,确定4位为定点化的等级。
步骤S30,按照各个通道的定点化等级将所述通道中数据进行定点化,以得到第一定点化数据。
在本实施例中,当该精度损失小于或等于预设精度损失时,则可以将通道中的所有数据都定点化为4位,以得到第一定点化数据,例如,数据模型中数据为32位的二进制表示,十进制的数字7用32位的二进制表示时,有效位数还是三位,将32位表示的二进制7定点化为4位时,表示为0111,很明显减短了字节,增大了存储空间。
本实施例提出的数据处理方法,通过获取数据模型的各个层级的各个通道中数据的有效位数,然后基于所述有效位数确定各个所述通道中的定点化等级,最后按照各个通道的定点化等级将所述通道中数据进行定点化,以得到第一定点化数据;实现了根据有效位数确定各个通道的定点化等级,不同通道可以采用不同等级的定点化,减短了数据的字节数,增大了存储空间,进而提高了模型运算率。
基于第一实施例,提出本发明数据处理方法的第二实施例,参照图3,本实施例中,步骤S20包括:
步骤S21,基于所述有效位数确定各个所述通道中的权重数据,并获取权重数据的有效位数;
在本实施例中,该权重数据包括在模型通道中有效位数相同的数据所占数据总个数比例最高的数据,例如,有效位数为4位的数据个数为20个,有效位数为5位的数据个数为2个,有效位数为3位的数据个数为3个,则该有效位数为4位的数据称为权重数据,获取到该权重数据的有效位数为4位。
步骤S22,基于所述权重数据的有效位数确定各个所述通道的定点化等级。
在本实施例中,当获取到权重数据的有效位数时,根据权重数据的有效位数对各个通道的数据进行定点化,例如,在步骤S21中,获取到权重位数为4位时,则将该通道中的所有数据都定点化为4位,当然,不同通道中权重数据不同,所以各个通道的定点化等级可以不同。
本实施例提出的数据处理方法,通过基于所述有效位数确定各个所述通道中的权重数据,并获取权重数据的有效位数,然后基于所述权重数据的有效位数确定各个所述通道的定点化等级;实现了按照权重数据的有效位数对通道中的数据进行定点化,从而相对于整个通道,减少了数据的字节,减小了存储空间,从而提高了数据运算速率。
基于第二实施例,提出本发明数据处理方法的第三实施例,参照图4,本实施例中,步骤S21包括:
步骤S211,基于所述有效位数将所述通道中数据进行分类统计,以得到不同有效位数对应的数据个数;
在本实施例中,对通道中数据按照有效位数进行分类统计,可以将有效位数相同的数据存储在一起,再统计有效位数相同的数据个数,例如,在通道数据中将有效位数为5位的数据存储在一起,并计算有效位数为5位的数据个数有3个,将有效位数为4位的数据存储在一起,并计算有效位数为4位的数据个数为20个,将有效位数为3位的数据存储在一起,并计算有效位数为3位的数据个数为2个。
步骤S212,计算不同有效位数对应的数据个数占总数据个数的比例,将所述比例中最大比例对应的数据作为权重数据。
在本实施例中,对有效位数相同的数据进行分类统计时,计算不同有效位数对应的数据个数占总数据个数的比例,例如,在步骤S211中,有效位数为5位的数据占总数据个数的二十五分之三,有效位数为4位的数据占总数据个数的二十五分之二十,有效位数为3位的数据占总数据个数的二十五分之二,对比可以知道有效位数为4位的数据所占总数据个数的比例最大,则将有效位数为4位的数据设置为权重数据。
本实施例提出的数据处理方法,通过基于所述有效位数将所述通道中数据进行分类统计,以得到不同有效位数对应的数据个数,然后计算不同有效位数对应的数据个数占总数据个数的比例,将所述比例中最大比例对应的数据作为权重数据;实现了按照有效位数确定通道中的权重数据,从而能够在对通道中数据定点化时确定定点化的等级,进而提高了运算效率。
基于第三实施例,提出本发明数据处理方法的第四实施例,参照图5,本实施例中,步骤S22包括:
步骤S221,确定所述通道中其余数据按照所述权重数据的有效位数定点化后的精度损失是否小于或者等于预设精度损失,其中,所述其余数据包括通道中除权重数据外的数据;
在本实施例中,数据模型中的数据一般都是32位,通道中权重数据按照权重数据的有效位数进行定点化时,权重数据的字节数缩短到有效位数,不会产生精度损失,但其余数据可能存在精度损失,例如,权重数据的有效位数为4位,十进制的数字25按照权重数据的有效位数在32位表示时的有效位为11001,有效位数为5位,在32位定点化为4位时,表示为1001,很明显,定点化后产生了精度损失。通过现有算法计算其余数据定点化后的精度损失,确定该精度损失是否小于或者大于预设精度损失。
步骤S222,当所述精度损失小于或者等于预设精度损失时,基于所述权重数据的有效位数确定所述通道定点化的等级。
在本实施例中,该预设精度损失由技术人员进行设定,当该精度损失小于或者等于预设精度损失时,则认为该定点化等级为最佳定点化等级,即有效减短了数据的字节数,又保证了数据在处理时的精度损失,
本实施例提出的数据处理方法,通过确定所述通道中数据除权重数据外的其余数据按照所述权重数据有效位数定点化后的精度损失是否小于或者等于预设精度损失,然后当所述精度损失小于或者等于预设精度损失时,基于所述权重数据的有效位数确定所述通道定点化的等级;实现了对精度损失的判断,有效降低了数据处理时的精度损失。
基于第四实施例,提出本发明数据处理方法的第五实施例,参照图6,本实施例中,步骤S221之后,还包括:
步骤S223,当所述精度损失大于所述预设精度损失时,将有效位数上升一位,以得到上升一位后的上升位数;
步骤S224,基于所述上升位数确定所述通道定点化的等级。
在本实施例中,在通道中的数据如果按照权重数据的位数进行定点化时,精度损失将大于预设精度损失,则可以将有效位数上升一位,例如,权重数据的有效位数为4位,预设精度损失为百分之三,通道中其余数据按照4位进行定点化时,计算出精度损失为百分之五,则将通道中的数据定点化为5位,计算得到的精度损失为百分之三,则刚好等于预设精度损失。如果计算得到的精度损失还是大于预设精度损失,则继续往上上升一位进行定点化。
本实施例提出的数据处理方法,通过当所述精度损失大于所述预设精度损失时,将有效位数上升一位,以得到上升一位后的上升位数,然后基于所述上升位数确定所述通道定点化的等级;实现了对精度损失进行判断,从而有效降低了数据处理过程中的精度损失。
基于第五实施例,提出本发明数据处理方法的第六实施例,参照图7,本实施例中,步骤S30之后,还包括:
步骤S40,获取图像数据,将所述图像数据与所述第一定点化数据进行运算,以得到运算结果;
在本实施例中,将获取到的图像数据与数据模型中的第一层定点化后的数据进行运算,以得到运算结果,当然,图像数据也可以按照不同定点化等级进行定点化。
步骤S50,将所述运算结果进行定点化,以得到第二定点化数据,并基于所述第一定点化数据与所述第二定点化数据进行逐层运算。
在本实施例中,第二定点化数据包括图像数据通过第一层进行运算后输出运算结果,将运算结果定点化得到的数据,该逐层运算包括将第二定点化数据作为第二层的输入,将第二定点化数据与第二层定点化后的数据进行运算,输出第二层的输出结果,并将第二层的输出结果进行定点化,以此类推,直至达到数据模型中最后一层以完成全部网络中间数据的定点化,将每层的输出结果都进行定点化后,能够减小运算的字节数,存储空间也会减小,从而提高了运算效率。
本实施例提出的数据处理方法,通过获取图像数据,将所述图像数据与第一定点化数据进行运算,以得到运算结果,然后将所述运算结果进行定点化,以得到第二定点化数据,并基于所述第一定点化数据与所述第二定点化数据进行逐层运算;实现了在逐层运算时对数据进行定点化,有效提高了运算速率。
基于第六实施例,提出本发明数据处理方法的第七实施例,参照图8,本实施例中,该数据处理方法还包括:
步骤S60,获取所述定点化等级对应的数据范围;
在本实施例中,数据范围是指各个定点化等级对应的数值范围,例如,定点化等级为3位时,数据范围为-7到+7,定点化等级为4位时,数据范围为-15到+15。
步骤S70,基于所述数据范围确定所述通道中数据的数值是否大于所述定点化等级所能表示的最大值;
在本实施例中,不同的定点化等级表示的数值范围不同,被定点化处理的浮点数,如果浮点数据的数值大小超出定点化等级所能表示的数值范围,则可以进行取舍处理。
步骤S80,若所述数值大于所述最大值,则取所述最大值来表示所述通道中数据。
在本实施例中,若该数值大于定点化等级所能表示的最大值,则可以用最大值来表示,例如,将数字12从32位定点化到4位时,表示为1100,定点化到三位时,表示为100,很明显,在定点化为3位时,在计算时会产生较大误差,为了减少这种误差,可以取定点化为3位的最大值,为111。
本实施例提出的数据处理方法,通过获取所述定点化等级对应的数据范围,然后基于所述数据范围确定所述通道中数据的数值是否大于所述定点化等级所能表示的最大值,最后若所述数值大于所述最大值,则取所述最大值来表示所述通道中数据;实现了在选择定点化等级定点化计算后的数据运算中有效减小了计算的误差。
本发明还提供一种计算机可读存储介质,在本实施例中,计算机可读存储介质上存储有数据处理程序,其中:
获取数据模型的各个层级的各个通道中数据的有效位数;
基于所述有效位数确定各个所述通道的定点化等级;
按照各个通道的定点化等级将所述通道中数据进行定点化,以得到第一定点化数据。
进一步地,该数据处理程序被所述处理器执行时,还实现如下步骤:
基于所述有效位数确定各个所述通道中的权重数据,并获取权重数据的有效位数;
基于所述权重数据的有效位数确定各个所述通道的定点化等级。
进一步地,该数据处理程序被所述处理器执行时,还实现如下步骤:
基于所述有效位数将所述通道中数据进行分类统计,以得到不同有效位数对应的数据个数;
计算不同有效位数对应的数据个数占总数据个数的比例,将所述比例中最大比例对应的数据作为权重数据。
进一步地,该数据处理程序被所述处理器执行时,还实现如下步骤:
确定所述通道中其余数据按照所述权重数据的有效位数定点化后的精度损失是否小于或者等于预设精度损失,其中,所述其余数据包括通道中除权重数据外的数据;
当所述精度损失小于或者等于预设精度损失时,基于所述权重数据的有效位数确定所述通道的定点化等级。
进一步地,该数据处理程序被所述处理器执行时,还实现如下步骤:
当所述精度损失大于所述预设精度损失时,将有效位数上升一位,以得到上升一位后的上升位数;
基于所述上升位数确定所述通道定点化的等级。
进一步地,该数据处理程序被所述处理器执行时,还实现如下步骤:
获取图像数据,将所述图像数据与所述第一定点化数据进行运算,以得到运算结果;
将所述运算结果进行定点化,以得到第二定点化数据,并基于所述第一定点化数据与所述第二定点化数据进行逐层运算。
进一步地,该数据处理程序被所述处理器执行时,还实现如下步骤:
获取所述定点化等级对应的数据范围;
基于所述数据范围确定所述通道中数据的数值是否大于所述定点化等级所能表示的最大值;
若所述数值大于所述最大值,则取所述最大值来表示所述通道中数据。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。