CN110659725A - 神经网络模型的压缩与加速方法、数据处理方法及装置 - Google Patents
神经网络模型的压缩与加速方法、数据处理方法及装置 Download PDFInfo
- Publication number
- CN110659725A CN110659725A CN201910893276.XA CN201910893276A CN110659725A CN 110659725 A CN110659725 A CN 110659725A CN 201910893276 A CN201910893276 A CN 201910893276A CN 110659725 A CN110659725 A CN 110659725A
- Authority
- CN
- China
- Prior art keywords
- linear layer
- quantization
- layer
- parameters
- neural network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Image Analysis (AREA)
Abstract
一种神经网络模型的压缩与加速方法、数据处理方法及装置、存储介质。神经网络模型包括线性层,神经网络模型的参数包括预备权值参数;压缩与加速方法包括:对神经网络模型的参数进行量化,以得到量化模型,量化模型的参数包括线性层的量化权值参数;以及,对量化模型进行尺度变换处理,以得到目标量化模型。对量化模型进行尺度变换处理,包括:基于线性层的输出神经元的数量或线性层的预备权值参数的标准差,计算线性层的尺度变换参数;以及,基于线性层的尺度变换参数,对线性层的量化权值参数进行尺度变换处理,以得到线性层的标准量化权值参数。
Description
技术领域
本公开的实施例涉及一种神经网络模型的压缩与加速方法、数据处理方法及装置、存储介质。
背景技术
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
发明内容
本公开至少一个实施例提供一种神经网络模型的压缩与加速方法,所述神经网络模型包括线性层,所述神经网络模型的参数包括预备权值参数,所述压缩与加速方法包括:对所述神经网络模型的参数进行量化,以得到量化模型,所述量化模型的参数包括所述线性层的量化权值参数;以及对所述量化模型进行尺度变换处理,以得到目标量化模型;其中,对所述量化模型进行所述尺度变换处理,包括:基于所述线性层的输出神经元的数量或所述线性层的预备权值参数的标准差,计算所述线性层的尺度变换参数;以及基于所述线性层的尺度变换参数,对所述线性层的量化权值参数进行所述尺度变换处理,以得到所述线性层的标准量化权值参数。
例如,在本公开一些实施例提供的压缩与加速方法中,所述线性层包括从卷积层、递归层和全连接层组成的群组中选择的至少一个。
例如,在本公开一些实施例提供的压缩与加速方法中,所述线性层未被批量归一化层直接跟随。
例如,在本公开一些实施例提供的压缩与加速方法中,对所述神经网络模型的参数进行量化,以得到所述量化模型,包括:对所述线性层的预备权值参数进行钳位处理,以得到所述线性层的钳位权值参数;以及对所述线性层的钳位权值参数进行量化处理,以得到所述线性层的量化权值参数。
例如,在本公开一些实施例提供的压缩与加速方法中,基于所述线性层的输出神经元的数量,计算所述线性层的尺度变换参数,包括:根据第一尺度变换参数计算公式计算所述线性层的尺度变换参数,所述第一尺度变换参数计算公式表示为:
例如,在本公开一些实施例提供的压缩与加速方法中,所述线性层的量化权值参数的比特位的位数为1-8。
例如,在本公开一些实施例提供的压缩与加速方法中,所述线性层的量化权值参数的比特位的位数为1-2。
例如,在本公开一些实施例提供的压缩与加速方法中,基于所述线性层的输出神经元的数量,计算所述线性层的尺度变换参数,包括:根据第二尺度变换参数计算公式计算所述线性层的尺度变换参数,所述第二尺度变换参数计算公式表示为:
例如,在本公开一些实施例提供的压缩与加速方法中,基于所述线性层的预备权值参数的标准差,计算所述线性层的尺度变换参数,包括:根据第三尺度变换参数计算公式计算所述线性层的尺度变换参数,所述第三尺度变换参数计算公式表示为:
其中,RSF表示所述线性层的尺度变换参数,W表示所述线性层的预备权值矩阵,VAR(W)表示所述线性层的预备权值矩阵的元素的方差,表示所述线性层的辅助权值矩阵,表示所述线性层的辅助权值矩阵的元素的方差;
例如,在本公开一些实施例提供的压缩与加速方法中,所述线性层的量化权值参数的比特位的位数为3-8。
例如,在本公开一些实施例提供的压缩与加速方法中,基于所述线性层的尺度变换参数,对所述线性层的量化权值参数进行所述尺度变换处理,以得到所述线性层的标准量化权值参数,包括:根据尺度变换公式对所述线性层的量化权值参数进行所述尺度变换处理,所述尺度变换公式表示为:
例如,在本公开一些实施例提供的压缩与加速方法中,对所述线性层的预备权值参数进行所述钳位处理,以得到所述线性层的钳位权值参数,包括:根据钳位公式对所述线性层的预备权值参数进行所述钳位处理,所述钳位公式表示为:
其中,表示所述线性层的钳位权值矩阵,表示所述钳位权值矩阵的第i行第j列的参数,W表示所述线性层的预备权值矩阵,Wij表示所述线性层的预备权值矩阵的第i行第j列的参数,Wmn表示所述线性层的预备权值矩阵的第m行第n列的参数,tanh(·)表示双曲正切函数,max(·)表示取最大值函数。
例如,在本公开一些实施例提供的压缩与加速方法中,对所述线性层的钳位权值参数进行所述量化处理,以得到所述线性层的量化权值参数,包括:根据量化公式对所述线性层的钳位权值参数进行所述量化处理,所述量化公式表示为:
其中,Q表示所述线性层的量化权值矩阵,Qij表示所述线性层的量化权值矩阵的第i行第j列的参数,b表示量化比特位的位数,round(·)表示四舍五入函数。
例如,本公开一些实施例提供的压缩与加速方法,还包括:采用与所述神经网络模型相同的训练参数配置,对所述目标量化模型进行训练。
例如,在本公开一些实施例提供的压缩与加速方法中,所述目标量化模型的训练过程包括:前向传播阶段、后向传播阶段和标准量化阶段;所述前向传播阶段包括:使用当前的目标量化模型对训练输入数据进行处理,以得到训练输出数据,并基于所述训练输出数据计算损失值;所述后向传播阶段包括:基于所述损失值,计算梯度,并基于所述梯度对当前的神经网络模型的参数进行修正,以得到更新的神经网络模型;所述标准量化阶段包括:对更新的神经网络模型的参数进行量化,以得到更新的量化模型,以及对所述更新的量化模型进行尺度变换处理,以得到更新的目标量化模型。
例如,在本公开一些实施例提供的压缩与加速方法中,所述神经网络模型包括激活层,所述激活层包括PACT激活函数,所述PACT激活函数表示为:
对所述神经网络模型的参数进行量化,以得到所述量化模型,还包括:
根据激活值量化公式对所述激活层的输出进行所述量化处理,所述激活值量化公式表示为:
其中,q表示所述激活层的输出的量化值,a表示所述激活层的输出的量化值的比特位的位数,round(·)表示四舍五入函数。
例如,在本公开一些实施例提供的压缩与加速方法中,所述后向传播阶段还包括:根据激活值梯度公式计算激活值梯度,并基于所述激活值梯度对当前的激活值参数进行修正,以得到更新的激活值参数,所述激活值梯度公式表示为:
例如,在本公开一些实施例提供的压缩与加速方法中,所述训练参数配置包括:初始学习率、学习率调整方案、权值衰减、训练集的迭代次数、优化器和批尺寸。
例如,在本公开一些实施例提供的压缩与加速方法中,在对所述神经网络模型的参数进行量化前,所述压缩与加速方法还包括:对所述神经网络模型进行预训练,以得到所述神经网络模型的预备权值参数。
例如,在本公开一些实施例提供的压缩与加速方法中,对所述神经网络模型进行所述预训练,包括:采用恺明初始化方案对所述神经网络模型的参数进行初始化。
例如,在本公开一些实施例提供的压缩与加速方法中,所述神经网络模型包括ResNet、MobileNet-V1、MobileNet-V2和VGG-Net之一。
本公开至少一个实施例还提供一种数据处理方法,包括:采用本公开任一实施例提供的压缩与加速方法得到的所述目标量化模型对输入数据进行处理。
本公开至少一个实施例还提供一种数据处理装置,包括:存储器,用于非暂时性存储计算机可读指令;以及处理器,用于运行计算机可读指令;其中,所述计算机可读指令被所述处理器运行时执行本公开任一实施例提供的压缩与加速方法或执行本公开任一实施例提供的数据处理方法。
本公开至少一个实施例还提供一种存储介质,非暂时性地存储计算机可读指令,其中,当所述非暂时性计算机可读指令由计算机执行时可以执行本公开任一实施例提供的压缩与加速方法的指令或者可以执行本公开任一实施例提供的数据处理方法的指令。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1为一种卷积神经网络的示意图;
图2A为一种卷积神经网络的结构示意图;
图2B为一种卷积神经网络的工作过程示意图;
图3为另一种卷积神经网络的结构示意图;
图4为本公开至少一实施例提供的一种神经网络模型的压缩与加速方法的流程图;
图5为本公开至少一实施例提供的一种对应于图4中所示的步骤S100的示例性流程图;
图6为本公开至少一实施例提供的另一种对应于图4中所示的步骤S100的示例性流程图;
图7为本公开至少一实施例提供的一种对应于图4中所示的步骤S200的示例性流程图;
图8为本公开至少一实施例提供的一种对应于图4中所示的步骤S300的示例性流程图;
图9为本公开至少一实施例提供的一种数据处理装置的示意性框图;以及
图10为本公开至少一实施例提供的一种存储介质的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
下面通过几个具体的实施例对本公开进行说明。为了保持本公开实施例的以下说明清楚且简明,本公开省略了已知功能和已知部件的详细说明。当本公开实施例的任一部件在一个以上的附图中出现时,该部件在每个附图中由相同或类似的参考标号表示。
在AI领域的算法技术当中,深度学习(Deep Learning)受到学术界与工业界的广泛关注,各国科学家、研究人员、企业、网络社区等都在大力研究并推动深度学习的神经网络模型的研究与发展。
随着深度学习在图像分类、目标检测以及自然语言处理等领域取得突破进展,将其应用到实际生活场景的需求也愈发强烈。当前,移动与便携式电子设备极大地方便了人们的生活,而深度学习将极大地提高这些设备的智能性与娱乐性。因此,将深度学习的神经网络模型部署在移动端与嵌入式***便成为迫切需求。
但是,应用深度学习的神经网络模型在实际部署中,通常面临模型尺寸过大的问题,例如神经网络模型的文件大小一般从几十兆到上百兆不等,这样的文件大小,对于移动端来说,下载时耗费的流量以及带宽影响所导致的传输等待时间过长是用户无法忍受的;特别是对于一些存储空间有限的嵌入式***,可能根本没有足够的存储空间来存储这么大的神经网络模型文件。同时,深度学习的神经网络模型对计算资源及计算能力要求高;在使用大型神经网络模型进行计算时,移动端与嵌入式***抑或无法提供其所需的计算资源,抑或计算缓慢,导致响应延迟太高而无法满足实际应用场景。此外,神经网络模型耗电量也大。在神经网络计算过程中,处理器需要频繁读取神经网络模型的参数,因此较大的神经网络模型也相应带来更高的内存访问次数,而频繁的内存访问也会极大提高耗电量,高耗电量不利于将神经网络模型部署在移动端。
因此,为了在资源有限的硬件设备上部署性能良好的神经网络,就需要对神经网络模型进行压缩和加速。由于量化模型在硬件上移植会非常方便,因此,在众多的对神经网络模型进行压缩和加速方法中,对神经网络模型进行量化的方法具有巨大的发展潜力。
本公开至少一实施例提供一种神经网络模型的压缩与加速方法。该神经网络模型包括线性层,神经网络模型的参数包括预备权值参数;该压缩与加速方法包括:对神经网络模型的参数进行量化,以得到量化模型,量化模型的参数包括线性层的量化权值参数;以及,对量化模型进行尺度变换处理,以得到目标量化模型。其中,对量化模型进行尺度变换处理,包括:基于线性层的输出神经元的数量或线性层的预备权值参数的标准差,计算线性层的尺度变换参数;以及,基于线性层的尺度变换参数,对线性层的量化权值参数进行尺度变换处理,以得到线性层的标准量化权值参数。
本公开的一些实施例还提供对应于上述压缩与加速方法的数据处理方法及装置、存储介质。
本公开的实施例提供的神经网络模型的压缩与加速方法通过对量化模型进行尺度变换处理,得到目标量化模型,可以提高目标量化模型的精度,改善目标量化模型的性能。
最初,卷积神经网络(Convolutional Neural Network,CNN)主要用于识别二维形状,其对图像的平移、比例缩放、倾斜或其他形式的变形具有高度不变性。CNN主要通过局部感知野和权值共享来简化神经网络模型的复杂性、减少权重的数量。随着深度学习技术的发展,CNN的应用范围已经不仅仅限于图像识别领域,其也可以应用在人脸识别、文字识别、动物分类、图像处理等领域。
图1示出了一种卷积神经网络的示意图。例如,该卷积神经网络可以用于图像处理,其使用图像作为输入和输出,并通过卷积核替代标量的权重。图1中仅示出了具有3层结构的卷积神经网络,本公开的实施例对此不作限制。如图1所示,卷积神经网络包括输入层101、隐藏层102和输出层103。输入层101具有4个输入,隐藏层102具有3个输出,输出层103具有2个输出,最终该卷积神经网络最终输出2幅图像。
例如,输入层101的4个输入可以为4幅图像,或者1幅图像的四种特征图像。隐藏层102的3个输出可以为经过输入层101输入的图像的特征图像。
例如,如图1所示,卷积层具有权重和偏置权重表示卷积核,偏置是叠加到卷积层的输出的标量,其中,k是表示输入层101的标签,i和j分别是输入层101的单元和隐藏层102的单元的标签。例如,第一卷积层201包括第一组卷积核(图1中的)和第一组偏置(图1中的)。第二卷积层202包括第二组卷积核(图1中的)和第二组偏置(图1中的)。通常,每个卷积层包括数十个或数百个卷积核,若卷积神经网络为深度卷积神经网络,则其可以包括至少五层卷积层。
例如,如图1所示,该卷积神经网络还包括第一激活层203和第二激活层204。第一激活层203位于第一卷积层201之后,第二激活层204位于第二卷积层202之后。激活层(例如,第一激活层203和第二激活层204)包括激活函数,激活函数用于给卷积神经网络引入非线性因素,以使卷积神经网络可以更好地解决较为复杂的问题。激活函数可以包括线性修正单元(ReLU)函数、S型函数(Sigmoid函数)或双曲正切函数(tanh函数)等。ReLU函数为非饱和非线性函数,Sigmoid函数和tanh函数为饱和非线性函数。例如,激活层可以单独作为卷积神经网络的一层,或者激活层也可以被包含在卷积层(例如,第一卷积层201可以包括第一激活层203,第二卷积层202可以包括第二激活层204)中。
例如,在第一卷积层201中,首先,对每个输入应用第一组卷积核中的若干卷积核和第一组偏置中的若干偏置以得到第一卷积层201的输出;然后,第一卷积层201的输出可以通过第一激活层203进行处理,以得到第一激活层203的输出。在第二卷积层202中,首先,对输入的第一激活层203的输出应用第二组卷积核中的若干卷积核和第二组偏置中的若干偏置以得到第二卷积层202的输出;然后,第二卷积层202的输出可以通过第二激活层204进行处理,以得到第二激活层204的输出。例如,第一卷积层201的输出可以为对其输入应用卷积核后再与偏置相加的结果,第二卷积层202的输出可以为对第一激活层203的输出应用卷积核后再与偏置相加的结果。
在利用卷积神经网络进行图像处理前,需要对卷积神经网络进行训练。经过训练之后,卷积神经网络的卷积核和偏置在图像处理期间保持不变。在训练过程中,各卷积核和偏置通过多组输入/输出示例图像以及优化算法进行调整,以获取优化后的卷积神经网络模型。
图2A示出了一种卷积神经网络的结构示意图,图2B示出了一种卷积神经网络的工作过程示意图。例如,如图2A和2B所示,输入图像通过输入层输入到卷积神经网络后,依次经过若干个处理过程(如图2A中的每个层级)后输出类别标识。卷积神经网络的主要组成部分可以包括多个卷积层、多个下采样层和全连接层。例如,一个完整的卷积神经网络可以由这三种层叠加组成。例如,图2A仅示出了一种卷积神经网络的三个层级,即第一层级、第二层级和第三层级。例如,每个层级可以包括一个卷积模块和一个下采样层。例如,每个卷积模块可以包括卷积层。由此,每个层级的处理过程可以包括:对输入图像进行卷积(convolution)以及下采样(sub-sampling/down-sampling)。例如,根据实际需要,每个卷积模块还可以包括批量归一化(batch normalization)层,从而每个层级的处理过程还可以包括批量归一化处理。
例如,批量归一化层用于对特征图进行批量归一化处理,以使特征图像的像素的灰度值在预定范围内变化,从而降低计算难度,提高对比度。例如,预定范围可以为[-1,1]。例如,批量标准化层的处理方式可以参考常见的批量标准化处理的过程,在此不再赘述。
卷积层是卷积神经网络的核心层。在卷积神经网络的卷积层中,一个神经元只与部分相邻层的神经元连接。卷积层可以对输入图像应用若干个卷积核(也称为滤波器),以提取输入图像的多种类型的特征。每个卷积核可以提取一种类型的特征。卷积核一般以随机小数矩阵的形式初始化,在卷积神经网络的训练过程中卷积核将通过学习以得到合理的权值。对输入图像应用一个卷积核之后得到的结果被称为特征图像(feature map),特征图像的数目与卷积核的数目相等。每个特征图像由一些矩形排列的神经元组成,同一特征图像的神经元共享权值,这里共享的权值就是卷积核。一个层级的卷积层输出的特征图像可以被输入到相邻的下一个层级的卷积层并再次处理以得到新的特征图像。例如,如图2A所示,第一层级的卷积层可以输出第一特征图像,该第一特征图像被输入到第二层级的卷积层再次处理以得到第二特征图像。
例如,如图2B所示,卷积层可以使用不同的卷积核对输入图像的某一个局部感受域的数据进行卷积,卷积结果被输入激活层,该激活层根据相应的激活函数进行计算以得到输入图像的特征信息。
例如,如图2A和2B所示,下采样层设置在相邻的卷积层之间,下采样层是下采样的一种形式。一方面,下采样层可以用于缩减输入图像的规模,简化计算的复杂度,在一定程度上减小过拟合的现象;另一方面,下采样层也可以进行特征压缩,提取输入图像的主要特征。下采样层能够减少特征图像的尺寸,但不改变特征图像的数量。例如,一个尺寸为12×12的输入图像,通过6×6的卷积核对其进行采样,那么可以得到2×2的输出图像,这意味着输入图像上的36个像素合并为输出图像中的1个像素。最后一个下采样层或卷积层可以连接到一个或多个全连接层,全连接层用于连接提取的所有特征。全连接层的输出为一个一维矩阵,也就是向量。
图3示出了另一种卷积神经网络的结构示意图。例如,参见图3所示的示例,最后一个卷积层(即第t个卷积层)的输出被输入到平坦化层以进行平坦化操作(Flatten)。平坦化层可以将特征图像(2D图像)转换为向量(1D)。该平坦化操作可以按照如下的方式进行:
vk=fk/j,k%j
其中,v是包含k个元素的向量,f是具有i行j列的矩阵。
然后,平坦化层的输出(即1D向量)被输入到一个全连接层(FCN)。全连接层可以具有与卷积神经网络相同的结构,但不同之处在于,全连接层使用不同的标量值以替代卷积核。
例如,最后一个卷积层的输出也可以被输入到均化层(AVG)。均化层用于对输出进行平均操作,即利用特征图像的均值表示输出图像,因此,一个2D的特征图像转换成为一个标量。例如,如果卷积神经网络包括均化层,则其可以不包括平坦化层。
例如,根据实际需要,均化层或全连接层可以连接到分类器,分类器可以根据提取的特征进行分类,分类器的输出可以作为卷积神经网络的最终输出,即表征图像类别的类别标识(label)。
例如,分类器可以为支持向量机(Support Vector Machine,SVM)分类器、softmax分类器以及最邻近规则(KNN)分类器等。如图3所示,在一个示例中,卷积神经网络包括softmax分类器,softmax分类器是一种逻辑函数的生成器,可以把一个包含任意实数的K维向量z压缩成K维向量σ(z)。softmax分类器的公式如下:
其中,Zj表示K维向量z中第j个元素,σ(z)表示每个类别标识(label)的预测概率,σ(z)为实数,且其范围为(0,1),K维向量σ(z)的和为1。根据以上公式,K维向量z中的每个类别标识均被赋予一定的预测概率,而具有最大预测概率的类别标识被选择作为输入图像的标识或类别。
下面结合附图对本公开的一些实施例及其示例进行详细说明。
图4为本公开至少一实施例提供的一种神经网络模型的压缩与加速方法的流程图。例如,该压缩与加速方法可以用于对ResNet(例如,ResNet-50)、MobileNet-V1、MobileNet-V2和VGG-Net等各种神经网络模型进行量化,以实现上述各种神经网络模型的压缩与加速。需要说明的是,该压缩与加速方法的适用范围包括但不限于以上列举的各种神经网络模型。
例如,如图4所示,该压缩与加速方法包括步骤S000至步骤S300。
步骤S000:对神经网络模型进行预训练,以得到神经网络模型的预备权值参数。
例如,在步骤S000中,该神经网络模型可以是未经训练的全精度模型(full-precision model)。例如,可以采用常规的训练方法、训练技巧(tricks)以及训练参数(例如,包括超参数)配置对该全精度模型进行预训练。
例如,训练参数配置通常包括:初始学习率(initial learning rate)、学习率调整方案(learning rate scheduler)、权值衰减(weight decay)、训练集的迭代次数(thenumber of epochs)、优化器(optimizer)和批尺寸(batch size)等。例如,在一些示例中,初始学习率可以设置为0.05,学习率调整方案可以采用余弦退火调整方案(cosineannealing scheduler),权值衰减可以设置为4×10-5,训练集的迭代次数可以设置为150次,优化器可以采用随机梯度下降(stochastic gradient descent,SGD)优化器,批尺寸可以设置为2048或1024等。需要说明的是,上述训练参数配置是示例性的,不应视作对本公开的限制。在本公开的实施例中,训练参数配置可以根据实际需要进行设定。
例如,神经网络模型的预训练过程通常包括:对神经网络模型的参数进行初始化;使用神经网络模型对训练输入数据进行处理,得到训练输出数据;基于训练输出数据,通过损失函数计算损失值;基于损失值计算梯度,并对神经网络模型的参数进行修正。
例如,在一些示例中,可以采用恺明初始化(Kaiming Initialization)方案对神经网络模型的参数进行初始化。例如,可以将神经网络模型的参数初始化为符合高斯分布的随机数。例如,可以使神经网络模型的各功能层(例如,卷积层、全连接层等)的初始权值参数符合高斯分布,例如,该高斯分布的期望为0,该高斯分布的标准差为该功能层的输出神经元的数量的倒数。例如,对于一个卷积层而言,该卷积层的输出神经元的数量等于该卷积层的输出通道数与该卷积层的卷积核中的元素数量之积;例如,对于一个全连接层而言,该全连接层的输出神经元的数量等于该全连接层输出的特征的数量。
例如,在一些示例中,训练输入数据的类型依赖于神经网络模型的处理对象,例如根据神经网络模型的处理对象的不同,训练输入数据可以包括图像、文本、语音等。以ResNet、MobileNet-V1、MobileNet-V2和VGG-Net等神经网络模型为例,其训练输入数据可以为图像,例如可以使用ImageNet数据库中的图像作为其训练输入数据。
例如,在一些示例中,损失函数可以根据实际需要进行选择,例如,损失函数可以包括但不限于0-1损失函数、平方损失函数、对数损失函数、交叉熵损失函数(cross-entropy cost function)等之中的一种或其任意组合,本公开的实施例对此不作限制。
例如,在一些示例中,可以采用随机梯度下降算法或批量梯度下降(batchgradient descent,BGD)算法等计算梯度,并根据该梯度对神经网络模型的参数进行修正。
例如,在一些示例中,神经网络模型的预训练过程还可以包括:判断神经网络模型的训练是否满足预定条件,若不满足预定条件,则重复对其进行训练;若满足预定条件,则停止对其进行训练,得到训练好的神经网络模型。例如,在一个示例中,上述预定条件为训练输入数据对应的损失值不再显著减小;例如,在另一个示例中,上述预定条件为神经网络模型的训练次数或训练周期达到预定数目;本公开的实施例对此不作限制。
需要说明的是,上述说明仅是示意性阐述神经网络模型的训练过程。本领域技术人员应当知道,在训练过程中,需要利用大量样本数据对神经网络模型进行训练;同时,在每一个样本数据的训练过程中,都可以包括多次反复迭代以对神经网络模型的参数进行修正。又例如,训练阶段还包括对神经网络模型的参数进行微调(fine-tune),以获取更优化的参数。
例如,在一些示例中,神经网络模型包括线性层,例如,线性层包括卷积层(convolution layer)、递归层(recurrent layer)和全连接层(fully-connected layer)等至少之一。例如,在一些示例中,神经网络模型还包括非线性层,例如,非线性层包括批量归一化层(batch normalization layer)和激活层(activation layer,例如采用非线性激活函数)等。
例如,经过预训练后,神经网络模型的参数为预备权值参数。例如,在一些示例中,预备权值参数为全精度的32位的浮点数。需要说明的是,在一些示例中,本公开的实施例提供的压缩与加速方法可以不包括步骤S000,例如,可以直接基于本领域中已经训练好的神经网络模型,执行步骤S100至步骤S300,以得到目标量化模型。在此情况下,该已经训练好的神经网络模型的参数为预备权值参数。
步骤S100:对神经网络模型的参数进行量化,以得到量化模型。
例如,在步骤S100中,可以采用DoReFa方案对神经网络模型的参数进行量化。例如,对神经网络模型的参数进行量化,是指将神经网络模型的至少部分参数从例如高精度的浮点数(例如,全精度的32位的浮点数)变为例如低精度的定点数(例如,1-8位的定点数),从而实现对神经网络模型的压缩与加速。需要说明的是,在步骤S100中,也可以采用其他类型的量化方案对神经网络模型的参数进行量化,本公开的实施例对此不作限制。以下,基于DoReFa方案,对步骤S100中的量化过程进行详细说明。例如,DoReFa方案的具体细节可以参见文献,Shuchang Zhou,Yuxin Wu,Zekun Ni,Xinyu Zhou,He Wen,and YuhengZou.Dorefa-Net:Training Low Bitwidth Convolutional Neural Networks With LowBitwidth Gradients,arXiv:1606.06160,2016。在此将该文献全文引用结合于此,以作为本公开的一部分。
图5为本公开至少一实施例提供的一种对应于图4中所示的步骤S100的示例性流程图。例如,如图5所示,对神经网络模型的参数进行量化,以得到量化模型,即步骤S100,包括步骤S110至步骤S120。
步骤S110:对线性层的预备权值参数进行钳位处理,以得到线性层的钳位权值参数。
例如,“钳位处理”是指对一组参数(例如,线性层的预备权值参数)按照一定的规则(例如,根据某一个公式)进行缩放,使缩放后的参数的取值范围限制在某一区间,以便于后续进一步处理。例如,在一些示例中,可以根据钳位公式对线性层的预备权值参数进行钳位处理,以将线性层的钳位权值参数的取值范围限制在预定区间,例如预定区间可以为[0,1],但不限于此。例如,通过钳位处理,可以使线性层的参数(即线性层的钳位权值参数)在预定区间中的分布更加均匀,从而有利于减小后续步骤中的量化误差。例如,在一些示例中,钳位公式可以表示为:
其中,表示线性层的钳位权值矩阵(包括线性层的钳位权值参数),表示钳位权值矩阵的第i行第j列的参数,W表示线性层的预备权值矩阵(包括线性层的预备权值参数),Wij表示线性层的预备权值矩阵的第i行第j列的参数,Wmn表示线性层的预备权值矩阵的第m行第n列的参数,tanh(·)表示双曲正切函数,max(·)表示取最大值函数。
例如,上述钳位公式可以将线性层的钳位权值参数的取值范围限制在区间[0,1]中。
步骤S120:对线性层的钳位权值参数进行量化处理,以得到线性层的量化权值参数。
例如,在一些示例中,可以根据权值量化公式对线性层的钳位权值参数进行量化处理,以得到线性层的量化权值参数。例如,在一些示例中,权值量化公式可以表示为:
其中,Q表示线性层的量化权值矩阵(包括线性层的量化权值参数),Qij表示线性层的量化权值矩阵的第i行第j列的参数,b表示线性层的量化权值参数的比特位的位数,round(·)表示四舍五入函数。
例如,量化模型的参数包括线性层的量化权值参数。例如,为了便于量化模型移植到移动端与嵌入式***,线性层的量化权值参数的比特位的位数b一般设定为1-8位(bit)。当然,线性层的量化权值参数的比特位的位数也可以根据需要设定为更多位,本公开的实施例对此不作限制。
图6为本公开至少一实施例提供的另一种对应于图4中所示的步骤S100的示例性流程图。图6所示的步骤S100除了包括图5中所示的步骤S110和步骤S120之外,还包括步骤S130。
例如,在一些示例中,神经网络模型包括激活层。例如,激活层可以包括PACT激活函数,但不限于此。例如,PACT激活函数表示为:
例如,如图6所示,对神经网络模型的参数进行量化,以得到量化模型,即步骤S100,还包括步骤S130。
步骤S130:对激活层的输出进行量化处理。
例如,在一些示例中,可以根据激活值量化公式对激活层的输出进行量化处理。例如,激活值量化公式可以表示为:
其中,q表示激活层的输出的量化值,a表示激活层的输出的量化值的比特位的位数,round(·)表示四舍五入函数。例如,q为动态固定点数(dynamic fixed-pointnumber);例如,激活层的输出的量化值的比特位的位数a一般设定为例如1-8位,例如2-4位等。
例如,在本公开的实施例中,对激活层的输出进行量化处理,有利于提升量化模型的运算速度,从而有利于实现本公开的实施例提供的压缩与加速方法的加速功能。
需要说明的是,在本公开的实施例中,可以不对神经网络模型中的批量归一化层进行量化处理,也可以不对神经网络模型中最后的全连接层的偏置(bias)进行量化处理。
在研究中,本申请的发明人发现:一方面,根据步骤S100得到的量化模型通常存在精度下降和性能退化的问题;另一方面,在神经网络模型或/和量化模型中,如果保持权值的梯度处于同一尺度量级,可以防止梯度***和梯度消失的问题,从而有利于提高量化模型的精度和改善量化模型的性能。例如,为了保持权值的梯度处于同一尺度量级,在神经网络模型中,可以在线性层之后直接连接批量归一化层(线性层的输出经过批量归一化层的处理之后再输入到后续的功能层中);但是,在神经网络模型中,往往还包括未被批量归一化层直接跟随的线性层,例如,ResNet、MobileNet-V1、MobileNet-V2和VGG-Net等神经网络模型中用于输出的最后一层全连接层等。因此,本公开的实施例提供的压缩与加速方法,在步骤S100之后,还包括步骤S200,以对量化模型进行进一步处理。
步骤S200:对量化模型进行尺度变换处理,以得到目标量化模型。
例如,在一些示例中,在相同的效率约束(efficiency constraints)下,与步骤S100得到的量化模型相比,步骤S200得到的目标量化模型可以具有更高的精度以及更好的性能。例如,相同的效率约束是指模型的尺寸(对应于模型占用的存储空间)、能耗、延迟(对应于模型的处理速度)等基本相同。例如,在一些示例中,步骤S200得到的目标量化模型的性能可以与对应的全精度模型的性能相当或者比全精度模型的性能更优(参考后续表1-2)。
图7为本公开至少一实施例提供的一种对应于图4中所示的步骤S200的示例性流程图。例如,如图7所示,对量化模型进行尺度变换处理,以得到目标量化模型,即步骤S200包括步骤S210至步骤S220。
步骤S210:基于线性层的输出神经元的数量或线性层的预备权值参数的标准差,计算线性层的尺度变换参数。
例如,在一些示例中,基于线性层的输出神经元的数量,计算线性层的尺度变换参数,包括:根据第一尺度变换参数计算公式计算线性层的尺度变换参数。例如,第一尺度变换参数计算公式表示为:
例如,在一些示例中,当线性层的量化权值参数的比特位的位数为1-2位时,与采用后续两种尺度变换参数计算公式计算得到的线性层的尺度变换参数RSF相比,采用第一尺度变换参数计算公式计算得到的线性层的尺度变换参数RSF,可以使目标量化模型更快收敛。需要说明的是,在本公开的实施例中,当线性层的量化权值参数的比特位的位数为其他值(例如,3-8位)时,仍然可以采用第一尺度变换参数计算公式计算线性层的尺度变换参数RSF。
例如,在另一些示例中,基于线性层的输出神经元的数量,计算线性层的尺度变换参数,包括:根据第二尺度变换参数计算公式计算线性层的尺度变换参数。例如,第二尺度变换参数计算公式表示为:
例如,在再一些示例中,基于线性层的预备权值参数的标准差,计算线性层的尺度变换参数,包括:根据第三尺度变换参数计算公式计算线性层的尺度变换参数。例如,第三尺度变换参数计算公式表示为:
其中,RSF表示线性层的尺度变换参数,W表示线性层的预备权值矩阵,VAR(W)表示线性层的预备权值矩阵的元素的方差,表示线性层的辅助权值矩阵,表示线性层的辅助权值矩阵的元素的方差。线性层的辅助权值矩阵表示为:
需要说明的是,在一些示例中,基于第一尺度变换参数计算公式计算的线性层的尺度变换参数RSF得到的目标量化模型、基于第二尺度变换参数计算公式计算的线性层的尺度变换参数RSF得到的目标量化模型、以及基于第三尺度变换参数计算公式计算的线性层的尺度变换参数RSF得到的目标量化模型,三者的精度和性能基本相当。
例如,在一些示例中,当线性层的量化权值参数的比特位的位数为3-8位时,可以选用第一尺度变换参数计算公式、第二尺度变换参数计算公式和第三尺度变换参数计算公式中的任意一个计算线性层的尺度变换参数RSF,同时,得到的目标量化模型的精度和性能基本相当。需要说明的是,在本公开的至少一个实施例中,当线性层的量化权值参数的比特位的位数为其他值(例如,1-2位)时,仍然可以采用第二尺度变换参数计算公式或第三尺度变换参数计算公式计算线性层的尺度变换参数RSF。
步骤S220:基于线性层的尺度变换参数,对线性层的量化权值参数进行尺度变换处理,以得到线性层的标准量化权值参数。
例如,在一些示例中,基于线性层的尺度变换参数,对线性层(例如,未被批量归一化层直接跟随的线性层)的量化权值参数进行尺度变换处理,有利于保持量化模型中的权值的梯度处于同一尺度量级,从而有利于提高量化模型的精度和改善量化模型的性能。
例如,在一些示例中,可以根据尺度变换公式对线性层的量化权值参数进行尺度变换处理。例如,所述尺度变换公式可以表示为:
其中,Q*表示线性层的标准量化权值矩阵(包括线性层的标准量化权值参数),表示线性层的标准量化权值矩阵的第i行第j列的参数,Q表示线性层的量化权值矩阵,Qij表示线性层的量化权值矩阵的第i行第j列的参数。
需要说明的是,在本公开的实施例中,可以只对未被批量归一化层直接跟随的线性层的量化权值参数进行尺度变换处理,即可以不对被批量归一化层直接跟随的线性层的量化权值参数进行尺度变换处理。当然,也可以同时对未被批量归一化层直接跟随的线性层和被批量归一化层直接跟随的线性层的量化权值参数进行尺度变换处理。本公开的实施例对此不作限制。
步骤S300:采用与神经网络模型相同的训练参数配置,对目标量化模型进行训练。
例如,在步骤S300中,神经网络模型的训练参数配置可以参考步骤S000中的相关描述,在此不再重复赘述。
图8为本公开至少一实施例提供的一种对应于图4中所示的步骤S300的示例性流程图。例如,如图8所示,采用与神经网络模型相同的训练参数配置,对目标量化模型进行训练,即步骤S300包括:前向传播阶段、后向传播阶段和标准量化阶段,以及重复执行这三个阶段的操作,以得到训练好的目标量化模型。前向传播阶段、后向传播阶段和标准量化阶段分别对应于下述步骤S310、步骤S320和步骤S330。
步骤S310:使用当前的目标量化模型对训练输入数据进行处理,以得到训练输出数据,并基于训练输出数据计算损失值。
例如,目标量化模型的训练过程的前向传播阶段的操作,即步骤S310,可以相应地参考神经网络模型(例如,全精度模型)的前向传播阶段的操作,在此不再重复赘述。
步骤S320:基于损失值,计算梯度,并基于梯度对当前的神经网络模型的参数进行修正,以得到更新的神经网络模型;
例如,目标量化模型的训练过程的后向传播阶段的操作,即步骤S320,可以相应地参考神经网络模型(例如,全精度模型)的后向传播阶段的操作,在此不再重复赘述。
例如,在一些示例中,在本公开的实施例提供的压缩与加速方法还包括步骤S130(即对激活层的输出进行量化处理)的情况下,在步骤S320中,可以根据激活值梯度公式计算激活值梯度,并基于激活值梯度对当前的激活值参数进行修正,以得到更新的激活值参数。例如,在一些示例中,对于前述PACT激活函数和激活值量化公式而言,激活值梯度公式可以表示为:
例如,采用上述激活值梯度公式计算激活值梯度,有利于减小量化误差。
步骤S330:对更新的神经网络模型的参数进行量化,以得到更新的量化模型,以及对更新的量化模型进行尺度变换处理,以得到更新的目标量化模型。
例如,目标量化模型的训练过程的标准量化阶段的操作,即步骤S330,可以参考前述步骤S100和步骤S200的相关表述,在此不再重复赘述。
例如,通过上述步骤S310至步骤S330对目标量化模型进行训练,可以提高目标量化模型的精度,并改善目标量化模型的性能。
需要说明的是,在目标量化模型的训练过程中,并不直接对目标量化模型的参数(包括线性层的标准量化权值参数)进行更新,而是通过对神经网络模型的参数进行修正,再进行量化和尺度变换处理,从而实现目标量化模型的参数的更新。
需要说明的是,与基于线性层的预备权值参数的标准差计算线性层的尺度变换参数(即采用第三尺度变换参数计算公式或第二尺度变换参数计算公式计算性层的尺度变换参数)相比,基于线性层的输出神经元的数量计算线性层的尺度变换参数(即采用第一尺度变换参数计算公式或第二尺度变换参数计算公式计算性层的尺度变换参数)的过程中不需要计算VAR(W),因此可以减少运算量,从而有利于加快目标量化模型的训练速度。
需要说明的是,在一些示例中,目标量化模型可以不存储线性层的标准量化权值参数,而是存储线性层的量化权值参数和尺度变换参数,从而减少目标量化模型的尺寸(即占用的存储空间)。在应用该目标量化模型进行数据处理时,可以通过线性层的量化权值参数和尺度变换参数计算得到线性层的标准量化权值参数,或者,还可以先通过线性层的量化权值参数对线性层的输入进行处理得到线性层的输出,再用尺度变换参数对线性层的输出进行处理,本公开的实施例对此不作限制。例如,相应地,目标量化模型可以不存储目标量化模型中的线性层(例如全连接层)的偏置,而是存储量化模型中的线性层(例如全连接层)的偏置;从而,在应用该目标量化模型进行数据处理时,可以通过尺度变化参数将量化模型中的线性层的偏置转变为目标量化模型中的线性层的偏置,或者,还可以先通过量化模型中的线性层的量化权值参数和量化模型中的线性层的偏置对线性层的输入进行处理得到线性层的输出,再用尺度变换参数对线性层的输出进行处理,本公开的实施例对此不作限制。
需要说明的是,在实际应用中,本公开的实施例提供的压缩与加速方法,可以根据实际需要,选择性地(例如,二者择其一,或者同时)对神经网络模型的权值参数(即权值量化)和激活层的输出(即激活值量化)进行量化。
需要说明的是,在本公开的实施例中,神经网络模型及其量化模型均可以采用软件、硬件、固件或其任意组合等方式实现,从而执行相应的处理过程。
需要说明的是,本公开的实施例中,上述神经网络模型的压缩与加速方法的流程可以包括更多或更少的操作,这些操作可以顺序执行或并行执行。虽然上文描述的神经网络模型的压缩与加速方法的流程包括特定顺序出现的多个操作,但是应该清楚地了解,多个操作的顺序并不受限制。上文描述的神经网络模型的压缩与加速方法可以执行一次,也可以按照预定条件执行多次。
本公开的实施例提供的神经网络模型的压缩与加速方法通过对量化模型进行尺度变换处理,得到目标量化模型,可以提高目标量化模型的精度,改善目标量化模型的性能。
本公开至少一实施例还提供一种数据处理方法,该数据处理方法包括:采用本公开任一实施例提供的压缩与加速方法得到的目标量化模型对输入数据进行处理,以得到输出数据。
例如,在一些示例中,输入数据的类型依赖于目标量化模型的处理对象,例如根据目标量化模型的处理对象的不同,输入数据可以包括图像、文本、语音等。以ResNet、MobileNet-V1、MobileNet-V2和VGG-Net等神经网络模型及其目标量化模型为例,其输入数据可以为图像。
例如,输出数据可以表示目标量化模型对输入数据进行推理预测的结果。以ResNet、MobileNet-V1、MobileNet-V2和VGG-Net等神经网络模型及其目标量化模型为例,其输出数据可以表示对图像(即输入数据)的分类结果。
例如,在一些示例中,目标量化模型可以部署在智能手机、平板电脑、车载导航仪等移动端和嵌入式***中,从而该移动端和嵌入式***等可以执行上述数据处理方法。
以下,以MobileNet-V1神经网络模型和MobileNet-V2神经网络模型为例,通过表1-2示例性地示出了不同比特位宽下的量化方案精度对比。表1为针对MobileNet-V1和MobileNet-V2的不同比特位宽(即量化比特位的数量)下的量化方案精度对比表(对权值和激活值进行量化);表2为针对MobileNet-V1和MobileNet-V2的不同比特位宽下的量化方案精度对比表(对权值进行量化,不对激活值进行量化)。
需要说明的是,在表1-2中,PACT(parameterized clipping activation)、HAQ(hardware-aware automated quantization)、Deep Compression为已知的量化方案,SAT为本公开的实施例提供的量化方案(即压缩与加速方法),其中,线性层的尺度变换参数是基于线性层的输出神经元的数量计算得到的(采用第三尺度变换参数计算公式)。还需要说明的是,HAQ方案的比特位宽是灵活变化的(flexible),因此表1-2中的HAQ方案的比特位宽是等效位宽,例如,其等效位宽分别为2、3、4、5、6、8等,从而可以与对应的比特位宽下的其他量化方案进行精度对比。另外,在表1-2中,FP表示对应的全精度模型;Acc.-1表示模型输出的一种候选类别是输入图像的正确类别的概率,Acc.-5表示模型输出的五种候选类别包括输入图像的正确类别的概率。例如,PACT方案的具体细节可以参见文献,Jungwook Choi,Zhuo Wang,Swagath Venkataramani,Pierce I-Jen Chuang,Vijayalakshmi Srinivasan,and Kailash Gopalakrishnan.PACT:Parameterized Clipping Activation forQuantized Neural Networks,arXiv:1805.06085,2018;HAQ方案的具体细节可以参见文献,Kuan Wang,Zhijian Liu,Yujun Lin,Ji Lin,and Song Han.HAQ:Hardware-AwareAutomated Quantization with Mixed Precision,arXiv:1811.08886,2019;DeepCompression方案的具体细节可以参见文献,Song Han,Huizi Mao,and William JDally.Deep Compression:Compressing Deep Neural Networks with Pruning,TrainedQuantization and Huffman Coding.arXiv:1510.00149,2015。在此将上述文献全文引用结合于此,以作为本公开的一部分。
表1.针对MobileNet-V1和MobileNet-V2的不同比特位宽下的量化方案精度对比表(对权值和激活值进行量化)
表2.针对MobileNet-V1和MobileNet-V2的不同比特位宽下的量化方案精度对比表(对权值进行量化,不对激活值进行量化)
根据表1-2可知,采用本公开的实施例提供的压缩与加速方法得到的目标量化模型的精度在大部分情况下均高于其他几种已知的量化方案得到的量化模型,由此说明,本公开的实施例提供的压缩与加速方法可以提高目标量化模型的精度,改善目标量化模型的性能。
本公开的实施例提供的数据处理方法的技术效果可以参考上述实施例中关于神经网络模型的压缩与加速方法的相应描述,在此不再赘述。
本公开至少一实施例还提供一种数据处理装置。图9为本公开至少一实施例提供的一种数据处理装置的示意性框图。
例如,如图9所示,该数据处理装置500包括存储器510和处理器520。例如,存储器510用于非暂时性存储计算机可读指令,处理器520用于运行该计算机可读指令,该计算机可读指令被处理器520运行时执行本公开任一实施例提供的神经网络模型的压缩与加速方法或/和数据处理方法。
例如,存储器510和处理器520之间可以直接或间接地互相通信。例如,在一些示例中,如图9所示,该数据处理装置500还可以包括***总线530,存储器510和处理器520之间可以通过***总线530互相通信,例如,处理器520可以通过***总线1006访问存储器510。例如,在另一些示例中,存储器510和处理器520等组件之间可以通过网络连接进行通信。网络可以包括无线网络、有线网络、和/或无线网络和有线网络的任意组合。网络可以包括局域网、互联网、电信网、基于互联网和/或电信网的物联网(Internet of Things)、和/或以上网络的任意组合等。有线网络例如可以采用双绞线、同轴电缆或光纤传输等方式进行通信,无线网络例如可以采用3G/4G/5G移动通信网络、蓝牙、Zigbee或者WiFi等通信方式。本公开对网络的类型和功能在此不作限制。
例如,处理器520可以控制数据处理装置中的其它组件以执行期望的功能。处理器520可以是中央处理单元(CPU)、张量处理器(TPU)或者图形处理器GPU等具有数据处理能力和/或程序执行能力的器件。中央处理器(CPU)可以为X86或ARM架构等。GPU可以单独地直接集成到主板上,或者内置于主板的北桥芯片中。GPU也可以内置于中央处理器(CPU)上。
例如,存储器510可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。
例如,在存储器510上可以存储一个或多个计算机指令,处理器520可以运行所述计算机指令,以实现各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据,例如线性层的预备权值参数、线性层的标准量化权值参数、线性层的尺度变换参数、激活值参数以及应用程序使用和/或产生的各种数据等。
例如,存储器510存储的一些计算机指令被处理器520执行时可以执行根据上文所述的压缩与加速方法中的一个或多个步骤。又例如,存储器510存储的另一些计算机指令被处理器520执行时可以执行根据上文所述的数据处理方法中的一个或多个步骤。
例如,如图9所示,数据处理装置500还可以包括允许外部设备与数据处理装置500进行通信的输入接口540。例如,输入接口540可被用于从外部计算机设备、从用户等处接收指令。数据处理装置500还可以包括使数据处理装置500和一个或多个外部设备相互连接的输出接口550。例如,数据处理装置500可以通过输出接口550显示图像等。通过输入接口1010和输出接口1012与数据处理装置500通信的外部设备可被包括在提供任何类型的用户可与之交互的用户界面的环境中。用户界面类型的示例包括图形用户界面、自然用户界面等。例如,图形用户界面可接受来自用户采用诸如键盘、鼠标、遥控器等之类的(诸)输入设备的输入,以及在诸如显示器之类的输出设备上提供输出。此外,自然用户界面可使得用户能够以无需受到诸如键盘、鼠标、遥控器等之类的输入设备强加的约束的方式来与数据处理装置500交互。相反,自然用户界面可依赖于语音识别、触摸和指示笔识别、屏幕上和屏幕附近的手势识别、空中手势、头部和眼睛跟踪、语音和语音、视觉、触摸、手势、以及机器智能等。
另外,数据处理装置500尽管在图9中被示出为单个***,但可以理解,数据处理装置500也可以是分布式***,还可以布置为云设施(包括公有云或私有云)。因此,例如,若干设备可以通过网络连接进行通信并且可共同执行被描述为由数据处理装置500执行的任务。
例如,关于压缩与加速方法的处理过程的详细说明可以参考上述压缩与加速方法的实施例中的相关描述,关于数据处理方法的处理过程的详细说明可以参考上述数据处理方法的实施例中的相关描述,重复之处不再赘述。
例如,在一些示例中,该数据处理装置可以包括但不限于智能手机、平板电脑、车载导航仪等移动端和嵌入式***。
需要说明的是,本公开的实施例提供的数据处理装置是示例性的,而非限制性的,根据实际应用需要,该数据处理装置还可以包括其他常规部件或结构,例如,为实现数据处理装置的必要功能,本领域技术人员可以根据具体应用场景设置其他的常规部件或结构,本公开的实施例对此不作限制。
本公开的实施例提供的数据处理装置的技术效果可以参考上述实施例中关于压缩与加速方法以及数据处理方法的相应描述,在此不再赘述。
本公开至少一实施例还提供一种存储介质。图10为本公开一实施例提供的一种存储介质的示意图。例如,如图10所示,该存储介质600非暂时性地存储计算机可读指令601,当非暂时性计算机可读指令601由计算机(包括处理器)执行时可以执行本公开任一实施例提供的压缩与加速方法的指令或者可以执行本公开任一实施例提供的数据处理方法的指令。
例如,在存储介质600上可以存储一个或多个计算机指令。存储介质600上存储的一些计算机指令可以是例如用于实现上述压缩与加速方法中的一个或多个步骤的指令。存储介质上存储的另一些计算机指令可以是例如用于实现上述数据处理方法中的一个或多个步骤的指令。
例如,存储介质可以包括平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、光盘只读存储器(CD-ROM)、闪存、或者上述存储介质的任意组合,也可以为其他适用的存储介质。
本公开的实施例提供的存储介质的技术效果可以参考上述实施例中关于压缩与加速方法以及数据处理方法的相应描述,在此不再赘述。
对于本公开,有以下几点需要说明:
(1)本公开实施例附图中,只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开同一实施例及不同实施例中的特征可以相互组合。
以上,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。
Claims (25)
1.一种神经网络模型的压缩与加速方法,所述神经网络模型包括线性层,所述神经网络模型的参数包括预备权值参数,所述压缩与加速方法包括:
对所述神经网络模型的参数进行量化,以得到量化模型,所述量化模型的参数包括所述线性层的量化权值参数;以及
对所述量化模型进行尺度变换处理,以得到目标量化模型;
其中,对所述量化模型进行所述尺度变换处理,包括:
基于所述线性层的输出神经元的数量或所述线性层的预备权值参数的标准差,计算所述线性层的尺度变换参数;以及
基于所述线性层的尺度变换参数,对所述线性层的量化权值参数进行所述尺度变换处理,以得到所述线性层的标准量化权值参数。
2.根据权利要求1所述的压缩与加速方法,其中,所述线性层包括从卷积层、递归层和全连接层组成的群组中选择的至少一个。
3.根据权利要求1或2所述的压缩与加速方法,其中,所述线性层未被批量归一化层直接跟随。
4.根据权利要求1-3任一项所述的压缩与加速方法,其中,对所述神经网络模型的参数进行量化,以得到所述量化模型,包括:
对所述线性层的预备权值参数进行钳位处理,以得到所述线性层的钳位权值参数;以及
对所述线性层的钳位权值参数进行量化处理,以得到所述线性层的量化权值参数。
6.根据权利要求5所述的压缩与加速方法,其中,所述线性层的量化权值参数的比特位的位数为1-8。
7.根据权利要求6所述的压缩与加速方法,其中,所述线性层的量化权值参数的比特位的位数为1-2。
10.根据权利要求8或9所述的压缩与加速方法,其中,所述线性层的量化权值参数的比特位的位数为1-8。
11.根据权利要求10所述的压缩与加速方法,其中,所述线性层的量化权值参数的比特位的位数为3-8。
15.根据权利要求4-14任一项所述的压缩与加速方法,还包括:
采用与所述神经网络模型相同的训练参数配置,对所述目标量化模型进行训练。
16.根据权利要求15所述的压缩与加速方法,其中,所述目标量化模型的训练过程包括:前向传播阶段、后向传播阶段和标准量化阶段;
所述前向传播阶段包括:使用当前的目标量化模型对训练输入数据进行处理,以得到训练输出数据,并基于所述训练输出数据计算损失值;
所述后向传播阶段包括:基于所述损失值,计算梯度,并基于所述梯度对当前的神经网络模型的参数进行修正,以得到更新的神经网络模型;
所述标准量化阶段包括:对更新的神经网络模型的参数进行量化,以得到更新的量化模型,以及对所述更新的量化模型进行尺度变换处理,以得到更新的目标量化模型。
19.根据权利要求15-18任一项所述的压缩与加速方法,其中,所述训练参数配置包括:初始学习率、学习率调整方案、权值衰减、训练集的迭代次数、优化器和批尺寸。
20.根据权利要求1-19任一项所述的压缩与加速方法,其中,在对所述神经网络模型的参数进行量化前,所述压缩与加速方法还包括:
对所述神经网络模型进行预训练,以得到所述神经网络模型的预备权值参数。
21.根据权利要求20所述的压缩与加速方法,其中,对所述神经网络模型进行所述预训练,包括:
采用恺明初始化方案对所述神经网络模型的参数进行初始化。
22.根据权利要求1-21任一项所述的压缩与加速方法,其中,所述神经网络模型包括ResNet、MobileNet-V1、MobileNet-V2和VGG-Net之一。
23.一种数据处理方法,包括:
采用权利要求1-22任一项所述的压缩与加速方法得到的所述目标量化模型对输入数据进行处理。
24.一种数据处理装置,包括:
存储器,用于非暂时性存储计算机可读指令;以及
处理器,用于运行计算机可读指令;
其中,所述计算机可读指令被所述处理器运行时执行根据权利要求1-22任一项所述的压缩与加速方法或执行根据权利要求23所述的数据处理方法。
25.一种存储介质,非暂时性地存储计算机可读指令,其中,当所述非暂时性计算机可读指令由计算机执行时可以执行根据权利要求1-22任一项所述的压缩与加速方法的指令或者可以执行根据权利要求23所述的数据处理方法的指令。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910893276.XA CN110659725B (zh) | 2019-09-20 | 2019-09-20 | 神经网络模型的压缩与加速方法、数据处理方法及装置 |
PCT/IB2019/059565 WO2021053381A1 (zh) | 2019-09-20 | 2019-11-07 | 神经网络模型的压缩与加速方法、数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910893276.XA CN110659725B (zh) | 2019-09-20 | 2019-09-20 | 神经网络模型的压缩与加速方法、数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110659725A true CN110659725A (zh) | 2020-01-07 |
CN110659725B CN110659725B (zh) | 2023-03-31 |
Family
ID=69038294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910893276.XA Active CN110659725B (zh) | 2019-09-20 | 2019-09-20 | 神经网络模型的压缩与加速方法、数据处理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110659725B (zh) |
WO (1) | WO2021053381A1 (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111783976A (zh) * | 2020-04-21 | 2020-10-16 | 北京大学 | 一种基于窗口梯度更新的神经网络训练过程中间值存储压缩方法和装置 |
CN111967583A (zh) * | 2020-08-13 | 2020-11-20 | 北京嘀嘀无限科技发展有限公司 | 压缩神经网络的方法、装置、设备和介质 |
CN111967608A (zh) * | 2020-08-06 | 2020-11-20 | 北京灵汐科技有限公司 | 数据处理方法、装置、设备及存储介质 |
CN112085195A (zh) * | 2020-09-04 | 2020-12-15 | 西北工业大学 | 一种基于x-admm的深度学习模型环境自适应方法 |
CN112598020A (zh) * | 2020-11-24 | 2021-04-02 | 深兰人工智能(深圳)有限公司 | 目标识别方法及*** |
CN113222098A (zh) * | 2020-01-21 | 2021-08-06 | 上海商汤智能科技有限公司 | 数据处理方法和相关产品 |
CN113469324A (zh) * | 2021-03-23 | 2021-10-01 | 中科创达软件股份有限公司 | 模型动态量化方法、装置、电子设备和计算机可读介质 |
CN113537340A (zh) * | 2021-07-14 | 2021-10-22 | 深圳思悦创新有限公司 | 一种yolo目标检测模型压缩方法、***及存储介质 |
WO2023020456A1 (zh) * | 2021-08-16 | 2023-02-23 | 北京百度网讯科技有限公司 | 网络模型的量化方法、装置、设备和存储介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11687764B2 (en) * | 2020-04-17 | 2023-06-27 | Samsung Electronics Co., Ltd. | System and method for increasing utilization of dot-product based neural network accelerator |
CN113920720A (zh) * | 2021-09-17 | 2022-01-11 | 上海吞山智能科技有限公司 | 高速公路隧道设备故障处理方法、装置及电子设备 |
WO2024060002A1 (zh) * | 2022-09-20 | 2024-03-28 | 华为技术有限公司 | 通信方法以及相关装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170286830A1 (en) * | 2016-04-04 | 2017-10-05 | Technion Research & Development Foundation Limited | Quantized neural network training and inference |
CN107480770A (zh) * | 2017-07-27 | 2017-12-15 | 中国科学院自动化研究所 | 可调节量化位宽的神经网络量化与压缩的方法及装置 |
CN108334945A (zh) * | 2018-01-30 | 2018-07-27 | 中国科学院自动化研究所 | 深度神经网络的加速与压缩方法及装置 |
US20190114511A1 (en) * | 2017-10-16 | 2019-04-18 | Illumina, Inc. | Deep Learning-Based Techniques for Training Deep Convolutional Neural Networks |
CN109840589A (zh) * | 2019-01-25 | 2019-06-04 | 深兰人工智能芯片研究院(江苏)有限公司 | 一种在fpga上运行卷积神经网络的方法、装置及*** |
US20190171935A1 (en) * | 2017-12-04 | 2019-06-06 | International Business Machines Corporation | Robust gradient weight compression schemes for deep learning applications |
CN110096647A (zh) * | 2019-05-10 | 2019-08-06 | 腾讯科技(深圳)有限公司 | 优化量化模型的方法、装置、电子设备及计算机存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10373050B2 (en) * | 2015-05-08 | 2019-08-06 | Qualcomm Incorporated | Fixed point neural network based on floating point neural network quantization |
US10970617B2 (en) * | 2015-08-21 | 2021-04-06 | Institute Of Automation Chinese Academy Of Sciences | Deep convolutional neural network acceleration and compression method based on parameter quantification |
-
2019
- 2019-09-20 CN CN201910893276.XA patent/CN110659725B/zh active Active
- 2019-11-07 WO PCT/IB2019/059565 patent/WO2021053381A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170286830A1 (en) * | 2016-04-04 | 2017-10-05 | Technion Research & Development Foundation Limited | Quantized neural network training and inference |
CN107480770A (zh) * | 2017-07-27 | 2017-12-15 | 中国科学院自动化研究所 | 可调节量化位宽的神经网络量化与压缩的方法及装置 |
US20190114511A1 (en) * | 2017-10-16 | 2019-04-18 | Illumina, Inc. | Deep Learning-Based Techniques for Training Deep Convolutional Neural Networks |
US20190171935A1 (en) * | 2017-12-04 | 2019-06-06 | International Business Machines Corporation | Robust gradient weight compression schemes for deep learning applications |
CN108334945A (zh) * | 2018-01-30 | 2018-07-27 | 中国科学院自动化研究所 | 深度神经网络的加速与压缩方法及装置 |
CN109840589A (zh) * | 2019-01-25 | 2019-06-04 | 深兰人工智能芯片研究院(江苏)有限公司 | 一种在fpga上运行卷积神经网络的方法、装置及*** |
CN110096647A (zh) * | 2019-05-10 | 2019-08-06 | 腾讯科技(深圳)有限公司 | 优化量化模型的方法、装置、电子设备及计算机存储介质 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113222098A (zh) * | 2020-01-21 | 2021-08-06 | 上海商汤智能科技有限公司 | 数据处理方法和相关产品 |
CN111783976A (zh) * | 2020-04-21 | 2020-10-16 | 北京大学 | 一种基于窗口梯度更新的神经网络训练过程中间值存储压缩方法和装置 |
CN111967608A (zh) * | 2020-08-06 | 2020-11-20 | 北京灵汐科技有限公司 | 数据处理方法、装置、设备及存储介质 |
WO2022028577A1 (zh) * | 2020-08-06 | 2022-02-10 | 北京灵汐科技有限公司 | 处理方式确定方法、数据处理方法 |
CN111967583A (zh) * | 2020-08-13 | 2020-11-20 | 北京嘀嘀无限科技发展有限公司 | 压缩神经网络的方法、装置、设备和介质 |
CN112085195A (zh) * | 2020-09-04 | 2020-12-15 | 西北工业大学 | 一种基于x-admm的深度学习模型环境自适应方法 |
CN112598020A (zh) * | 2020-11-24 | 2021-04-02 | 深兰人工智能(深圳)有限公司 | 目标识别方法及*** |
CN113469324A (zh) * | 2021-03-23 | 2021-10-01 | 中科创达软件股份有限公司 | 模型动态量化方法、装置、电子设备和计算机可读介质 |
CN113469324B (zh) * | 2021-03-23 | 2024-03-22 | 中科创达软件股份有限公司 | 模型动态量化方法、装置、电子设备和计算机可读介质 |
CN113537340A (zh) * | 2021-07-14 | 2021-10-22 | 深圳思悦创新有限公司 | 一种yolo目标检测模型压缩方法、***及存储介质 |
WO2023020456A1 (zh) * | 2021-08-16 | 2023-02-23 | 北京百度网讯科技有限公司 | 网络模型的量化方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110659725B (zh) | 2023-03-31 |
WO2021053381A1 (zh) | 2021-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110659725B (zh) | 神经网络模型的压缩与加速方法、数据处理方法及装置 | |
CN110852439B (zh) | 数据处理方法及装置、存储介质 | |
US11875268B2 (en) | Object recognition with reduced neural network weight precision | |
US12008461B2 (en) | Method for determining neuron events based on cluster activations and apparatus performing same method | |
CN107622303B (zh) | 用于神经网络的方法和执行该方法的设备 | |
CN110378383B (zh) | 一种基于Keras框架和深度神经网络的图片分类方法 | |
WO2020167480A1 (en) | Adjusting activation compression for neural network training | |
US11481613B2 (en) | Execution method, execution device, learning method, learning device, and recording medium for deep neural network | |
US11562247B2 (en) | Neural network activation compression with non-uniform mantissas | |
WO2020131390A1 (en) | Training neural network accelerators using mixed precision data formats | |
CN111767979A (zh) | 神经网络的训练方法、图像处理方法、图像处理装置 | |
CN111095302A (zh) | 稀疏深度卷积网络权重的压缩 | |
WO2020142192A1 (en) | Neural network activation compression with narrow block floating-point | |
WO2022228425A1 (zh) | 一种模型训练方法及装置 | |
CN110781686A (zh) | 一种语句相似度计算方法、装置及计算机设备 | |
CN115129386A (zh) | 用于神经网络部署和执行的有效优化 | |
CN114266897A (zh) | 痘痘类别的预测方法、装置、电子设备及存储介质 | |
Mamatkulovich | Lightweight residual layers based convolutional neural networks for traffic sign recognition | |
CN116863194A (zh) | 一种足溃疡图像分类方法、***、设备及介质 | |
CN111353541A (zh) | 一种多任务模型的训练方法 | |
CN114444686A (zh) | 一种卷积神经网络的模型参数量化方法、装置及相关装置 | |
WO2024060839A1 (zh) | 对象操作方法、装置、计算机设备以及计算机存储介质 | |
CN114298289A (zh) | 一种数据处理的方法、数据处理设备及存储介质 | |
Ososkov et al. | Two-stage approach to image classification by deep neural networks | |
US20230410496A1 (en) | Omni-scale convolution for convolutional neural networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |