CN111353594B - 数据处理方法、装置、处理器和存储介质 - Google Patents

数据处理方法、装置、处理器和存储介质 Download PDF

Info

Publication number
CN111353594B
CN111353594B CN201811581510.7A CN201811581510A CN111353594B CN 111353594 B CN111353594 B CN 111353594B CN 201811581510 A CN201811581510 A CN 201811581510A CN 111353594 B CN111353594 B CN 111353594B
Authority
CN
China
Prior art keywords
circuit
forward operation
operation result
loss function
input data
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.)
Active
Application number
CN201811581510.7A
Other languages
English (en)
Other versions
CN111353594A (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201811581510.7A priority Critical patent/CN111353594B/zh
Priority to PCT/CN2019/121056 priority patent/WO2020114283A1/zh
Publication of CN111353594A publication Critical patent/CN111353594A/zh
Application granted granted Critical
Publication of CN111353594B publication Critical patent/CN111353594B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3059Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本申请涉及一种数据处理方法、装置、处理器及存储介质,根据有损压缩后获得的第二输入数据进行正向运算,在正向运算结果不满足预设需求时,可以对该神经网络进行训练,直至该神经网络的正向运算结果满足预设需求。本申请通过有损压缩后的第二输入数据对神经网络进行训练,降低神经网络处理过程中数据的访存开销,从而可以提高处理器的性能。

Description

数据处理方法、装置、处理器和存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据处理方法、装置、处理器和存储介质。
背景技术
随着人工智能技术的快速发展,神经网络在图像、语音以及文字等具有海量数据的领域已经有了广泛而成功的应用。
一般地,神经网络运算(如人工神经网络运算)的运算过程往往会涉及较大的数据量,从而神经网络运算的过程中将会存在大量的访存操作,但上述访存操作往往会受到数据访存带宽的限制,访存开销成为机器学习处理器设计中的瓶颈。
发明内容
基于此,有必要针对上述技术问题,提供一种能够降低神经网络处理过程中访存开销的数据处理方法、装置、处理器和存储介质。
一种数据处理方法,应用于处理器中,所述方法包括如下步骤:
获取神经网络的第一输入数据,其中,所述第一输入数据为有损压缩编码后获得的处于压缩状态的数据;
对所述第一输入数据进行解压缩,获得所述神经网络的第二输入数据;
根据所述第二输入数据进行正向运算,获得正向运算结果;
若所述正向运算结果不满足预设需求,则对所述神经网络进行训练,直至所述正向运算结果满足预设需求。
在其中一个实施例中,所述方法还包括如下步骤:
根据所述正向运算结果与预设的目标运算结果,计算损失函数;
若所述损失函数的值大于或等于预设的目标精度,则确定所述正向运算结果不满足所述预设需求;若所述损失函数的值小于所述预设的目标精度,则确定所述正向运算结果满足所述预设需求。
在其中一个实施例中,若所述正向运算结果不满足预设需求,对所述神经网络进行训练,直至所述正向运算结果满足预设需求的步骤,包括:
若所述损失函数的值大于或等于预设的目标精度,则根据所述损失函数进行反向运算,获得梯度值;
根据所述梯度值更新所述神经网络的权值数据,之后,返回根据所述第二输入数据进行正向运算,获得正向运算结果的步骤,直至所述损失函数的值小于预设的目标精度。
在其中一个实施例中,所述的根据所述正向运算结果与预设的目标运算结果,计算损失函数的步骤,包括:
对所述正向运算结果进行有损压缩编码后再对所述正向运算结果进行解压缩;
根据解压缩后的正向运算结果与所述预设的目标运算结果,计算损失函数。
在其中一个实施例中,若所述正向运算结果不满足预设需求,对所述神经网络进行训练,直至所述正向运算结果满足预设需求的步骤,包括:
若所述损失函数的值大于或等于预设的目标精度,则根据所述损失函数进行反向运算,获得梯度值;
对所述梯度值进行有损压缩编码后再对所述有损压缩编码后的梯度值进行解压缩,根据所述解压缩后获得的梯度值更新所述权值数据;
对所述权值数据进行有损压缩编码后再对所述有损压缩编码后的权值数据进行解压缩;之后,返回根据所述第二输入数据进行正向运算,获得正向运算结果的步骤,直至所述损失函数的值小于预设的目标精度。
在其中一个实施例中,所述的根据所述正向运算结果与预设的目标运算结果,计算损失函数的步骤,包括:
将所述正向运算结果与预设的训练数据集进行正向运算,获得收敛结果;
根据所述收敛结果与所述目标运算结果,确定所述损失函数。
在其中一个实施例中,所述处理器包含至少两个处理电路,至少两个所述处理电路包括主处理电路和从处理电路;所述的根据所述第二输入数据进行正向运算,获得正向运算结果的步骤,包括:
所述主处理电路将所述第二输入数据的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个所述从处理电路;
各个所述从处理电路分别对接收到的所述处于压缩状态的权值数据进行解压缩,并根据解压缩后的所述权值数据进行正向运算得到第一中间结果,将所述第一中间结果进行有损压缩编码后传送至所述主处理电路;
所述主处理电路对各个所述从处理电路传送的第一中间结果进行解压缩,并根据解压缩后的第一中间结果获得所述正向运算结果。
在其中一个实施例中,所述方法还包括如下步骤:
所述主处理电路根据所述正向运算结果与预设的目标运算结果,计算损失函数;
若所述主处理电路确定所述损失函数的值大于或等于预设的目标精度,则确定所述正向运算结果不满足所述预设需求;
若所述主处理电路确定所述损失函数的值小于所述预设的目标精度,则确定所述正向运算结果满足所述预设需求。
在其中一个实施例中,若所述正向运算结果不满足预设需求,则对所述神经网络进行训练,直至所述正向运算结果满足预设需求,包括:
所述主处理电路在确定所述损失函数的值大于或等于所述目标精度时,所述主处理电路对所述损失函数进行有损压缩编码,并将所述有损压缩编码后获得的处于压缩状态的损失函数传送至各个所述从处理电路;
各个所述从处理电路分别对接收到的所述处于压缩状态的损失函数进行解压缩,并根据解压缩后的所述损失函数进行反向运算得到第二中间结果,将所述第二中间结果进行有损压缩编码后传送至所述主处理电路;
所述主处理电路对各个所述从处理电路传送的第二中间结果进行解压缩,并根据解压缩后的第二中间结果获得所述梯度值;
所述主处理电路根据所述梯度值更新所述第二输入数据的权值数据,之后,返回所述主处理电路将所述第二输入数据的权值数据进行有损压缩,并将处于压缩状态的权值数据传送至各个所述从处理电路的步骤,直至所述损失函数的值小于所述预设的目标精度。
在其中一个实施例中,所述方法还包括如下步骤:
获取所述神经网络的第三输入数据;
对所述第三输入数据进行有损压缩编码,获得所述第一输入数据。
在其中一个实施例中,对所述第三输入数据进行有损压缩编码,获得所述第一输入数据的步骤,包括:
根据预设的目标精度获得目标压缩率;
根据所述目标压缩率对所述第三输入数据进行有损压缩编码,获得所述第一输入数据。
在其中一个实施例中,所述有损压缩编码包括预测编码、脉冲编码调制、插值法、外推法、变换编码、子带编码、混合编码、矢量量化、分型编码的一种或多种的组合。
一种数据处理装置,所述装置包括:
获取模块,获取所述神经网络的第一输入数据,其中,所述第一输入数据为有损压缩编码后获得的处于压缩状态的数据;
解压模块,用于对所述第一输入数据进行解压缩,获得所述神经网络的第二输入数据;
训练模块,用于根据所述第二输入数据进行正向运算,获得正向运算结果;若所述正向运算结果不满足预设需求,则对所述神经网络进行训练,直至所述正向运算结果满足预设需求。
一种处理器,包括:
读写电路,用于获取神经网络的第一输入数据,其中,所述第一输入数据为有损压缩编码后获得的处于压缩状态的数据;
解压电路,所述解压电路与所述读写电路连接,用于对所述第一输入数据进行解压缩,获得所述神经网络的第二输入数据;
运算电路,所述运算电路连接所述解压电路,用于根据所述第二输入数据进行正向运算,获得正向运算结果;若所述正向运算结果不满足预设需求,则对所述神经网络进行训练,直至所述正向运算结果满足预设需求。
在其中一个实施例中,所述运算电路还用于:
根据所述正向运算结果与预设的目标运算结果,计算损失函数;
在所述损失函数的值大于或等于预设的目标精度时,则确定所述正向运算结果不满足所述预设需求;在所述损失函数的值小于所述预设的目标精度时,则确定所述正向运算结果满足所述预设需求。
在其中一个实施例中,所述运算电路在确定所述正向运算结果不满足所述预设需求时,对所述神经网络进行训练,直至所述正向运算结果满足预设需求时,所述运算电路用于:
若所述损失函数的值大于或等于预设的目标精度,则根据所述损失函数对进行反向运算,获得梯度值;
根据所述梯度值更新所述神经网络的权值,获得更新后的输入数据;
之后,所述运算电路用于根据所述第二输入数据进行正向运算,获得正向运算结果,直至所述损失函数的值小于所述预设的目标精度。
在其中一个实施例中,所述处理器还包括压缩电路,所述压缩电路连接所述运算电路和所述读写电路;
所述压缩电路用于对所述正向运算结果进行有损压缩编码;
所述解压电路还用于对所述有损压缩编码后的正向运算结果进行解压缩;
所述运算电路还用于根据解压缩后的正向运算结果与所述预设的目标运算结果,计算损失函数。
在其中一个实施例中,所述运算电路还用于在所述损失函数的值大于或等于预设的目标精度,则根据所述损失函数进行反向运算,获得梯度值;
所述压缩电路还用于对所述梯度值进行有损压缩编码;
所述解压电路还用于对所述有损压缩编码后的梯度值进行解压缩;
所述运算电路还用于根据所述解压缩后获得的梯度值更新所述神经网络的权值数据;
所述压缩电路还用于对所述权值数据进行有损压缩编码;
所述解压电路还用于对所述有损压缩编码后的权值数据进行解压缩;
之后,所述运算电路用于根据所述第二输入数据进行正向运算,获得正向运算结果,直至所述损失函数的值小于所述预设的目标精度。
在其中一个实施例中,所述运算电路包括主处理电路和至少一个从处理电路,每个所述从处理电路均连接至所述主处理电路;所述主处理电路上设置有第三压缩电路和第三解压电路;各个所述从处理电路上设置有第四解压电路和第四压缩电路;
所述第三压缩电路用于将所述第二输入数据的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个所述第四解压电路;
各个所述第四解压电路分别用于对接收到的所述处于压缩状态的权值数据进行解压缩;
各个所述从处理电路分别用于根据解压缩后的所述权值数据进行正向运算得到第一中间结果,各个所述第四压缩电路分别用于对相应的所述第一中间结果进行有损压缩编码;
所述第三解压电路用于对各个所述从处理电路传送的第一中间结果进行解压缩,所述主处理电路用于根据解压缩后的第一中间结果获得所述正向运算结果。
在其中一个实施例中,所述主处理电路还用于根据所述正向运算结果与预设的目标运算结果,计算损失函数;
若所述主处理电路确定所述损失函数的值大于或等于预设的目标精度,则确定所述正向运算结果不满足所述预设需求;
若所述主处理电路确定所述损失函数的值小于所述预设的目标精度,则确定所述正向运算结果满足所述预设需求。
在其中一个实施例中,在所述主处理电路确定所述损失函数的值大于或等于所述目标精度时,所述第三压缩电路还用于对所述损失函数进行有损压缩编码,并将所述有损压缩编码后获得的处于压缩状态的损失函数传送至各个所述第四解压电路;
各个所述第四解压电路分别用于对接收到的所述处于压缩状态的损失函数进行解压缩;
各个所述从处理电路分别用于根据解压缩后的所述损失函数进行反向运算得到第二中间结果;
各个所述第四压缩电路分别用于将所述第二中间结果进行有损压缩编码后传送至所述第三解压电路;所述第三解压电路还用于对各个所述从处理电路传送的第二中间结果进行解压缩;
所述主处理电路还用于根据解压缩后的第二中间结果获得所述梯度值;
所述主处理电路根据所述梯度值更新所述第二输入数据的权值数据,之后,所述主处理电路用于将所述第二输入数据的权值数据进行有损压缩,并将处于压缩状态的权值数据传送至各个所述从处理电路,直至所述损失函数的值小于所述预设的目标精度。
在其中一个实施例中,所述处理器的压缩电路、所述第三压缩电路和所述第四压缩电路均包括第一压缩率确定模块和至少一个压缩模块,各个所述压缩模块并联设置,各个所述压缩模块均连接至所述第一压缩率确定模块;
所述第一压缩率确定模块用于根据所述预设的目标精度确定目标压缩率,并根据所述目标压缩率从至少一个所述压缩模块中选定目标压缩模块;
各个压缩模块分别用于按照不同的压缩率进行有损压缩编码。
在其中一个实施例中,所述处理器的解压电路、所述第三解压电路和第四解压电路均包括第二压缩率确定模块以及至少一个解压模块,至少一个所述解压模块并联设置,各个所述解压模块均连接至所述第二压缩率确定模块;
所述第二压缩率确定模块用于根据所述目标压缩率从至少一个所述解压模块中选定目标解压模块;
各个所述解压模块分别用于解压不同压缩率的数据。
在其中一个实施例中,所述有损压缩编码包括预测编码、脉冲编码调制、插值法、外推法、变换编码、子带编码、混合编码、矢量量化、分型编码的一种或多种的组合。
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
本申请的数据处理方法、装置、处理器及存储介质,通过获取有损压缩后获得的处于压缩状态的第一输入数据,并对该第一输入数据进行解压缩,并根据解压缩后获得的第二输入数据进行正向运算,在正向运算结果不满足预设需求时,可以对该神经网络进行训练,直至该神经网络的正向运算结果满足预设需求,本申请中通过解压缩后的第二输入数据对神经网络进行训练,降低神经网络处理过程中数据的访存开销,从而可以提高处理器的性能,同时可以通过对神经网络进行训练弥补有损压缩编码对精度的影响,保证训练后的神经网络的精度,从而可以保证运算的可靠性及准确性。
附图说明
图1为一个实施例中处理器的结构框图;
图2为一个实施例中的计算机系统的结构框图;
图3为一个实施例中运算电路的结构框图;
图4为一个实施例中运算电路的结构框图;
图5为一个实施例中运算电路的结构框图;
图6为一个实施例中压缩电路的结构框图;
图7为一个实施例中解压电路的结构框图;
图8为一个实施例中数据处理方法的流程示意图;
图9为一个实施例中数据处理方法的流程示意图;
图10为一个实施例中数据处理方法中对神经网络进行训练或重训练的步骤的流程示意图;
图11为一个实施例中数据处理方法中确定损失函数的步骤的流程示意图;
图12为一个实施例中数据处理方法中更新权值数据的步骤的流程示意图;
图13为一个实施例中数据处理方法中对神经网络进行训练或重训练的步骤的流程示意图;
图14为一个实施例中数据处理装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的数据处理方法,可以应用于如图1所示的处理器或图2所示的计算机系统中。其中,图2所示的计算机系统包括第一处理器100和第二处理器200,该第一处理器100和第二处理器200均可以采用图1所示的处理器的结构。第一处理器100连接第二处理器200,第一处理器100与第二处理器200 能够进行数据通信。其中,第一处理器100可以设置在终端上,该终端可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,第二处理器200可以设置于服务器上,如本地服务器或云端服务器等,进一步地,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现,此处不做具体限定。
可选地,该第一处理器100和第二处理器200均可以包括运算电路。如图2 所示,当该数据处理方法单独应用于第一处理器时,上述运算电路可以是第一处理器100中的第一运算电路110,当该数据处理方法单独应用于第二处理器时,上述运算电路可以是第二处理器200的第二运算电路210。该第一运算电路110 或第二运算电路210能够根据运算指令和神经网络的输入数据(其中,输入数据包括输入神经元数据和权值数据等等)实现神经网络的相关运算。例如,该运算电路可以根据正向运算指令和/或反向运算指令实现神经网络的正向运算和反向运算,从而实现对神经网络的训练或重训练。当然,在其他实施例中,该运算电路还可以实现卷积运算指令等其他神经网络运算指令等,此处不做具体限定。
具体地,第一运算电路110或第二运算电路210可以用于根据输入数据对神经网络进行正向运算,获得正向运算结果。具体地,上述运算电路可以用于根据该神经网络的输入神经元数据和权值数据,进行一系列的线性运算和激活运算,从输入层开始,一层层的向后计算,直至完成输出层的运算,得到输出结果,该输出层的输出结果即为正向运算结果。进一步地,该运算电路可以根据正向运算结果与预设的目标运算结果,计算损失函数。其中,损失函数可以是正向运算结果与预设的目标运算结果的均方差函数、交叉熵函数或其他自定义的损失函数。
更进一步地,第一运算电路110或第二运算电路210可以确定损失函数的值是否大于或等于预设的目标精度,并在损失函数的值大于或等于目标精度时,根据损失函数对神经网络进行反向运算,获得梯度值。具体地,该梯度值可以是神经网络的各层对应的梯度值的集合。运算电路可以用于计算损失函数对各个权值数据的偏导数,获得各层的梯度值。
再进一步地,第一运算电路110或第二运算电路210可以用于根据梯度值更新神经网络的权值数据,获得更新后的权值数据。具体地,第一运算电路110 或第二运算电路210可以用于根据梯度下降算法(如随机梯度下降算法或批量梯度下降算法)实现权值数据的更新,具体地,第一运算电路110或第二运算电路210可以根据上述的梯度值和预设的学习率(该学习率可以是预设的固定值,也可以是随机递减的)计算获得浮动值,并根据该神经网络更新前的权值和该浮动值计算获得更新后的权值数据。例如,该更新后的权值数据可以等于更新前的权值数据减去上述的浮动值。当然,在其他实施例中,该权值数据的更新过程还可以采用其他能够实现相似功能的算法,此处仅以举例说明,并不用于限定本申请的范围。之后,第一运算电路110或第二运算电路210可以返回根据输入数据对神经网络进行正向运算,获得正向运算结果的步骤,直至正向运算结果满足预设需求。当该正向运算结果满足预设需求时,则表明完成该神经网络的训练或重训练。
可选地,当处理器根据正向运算结果确定的损失函数的值大于或等于预设的目标精度时,则处理器可以确定该正向运算结果不满足预设需求。当处理器根据正向运算结果确定的损失函数的值小于预设的目标精度时,则处理器可以确定该正向运算结果满足预设需求。可选地,该预设的目标精度可以根据运算类型及精度或先验知识等获得,且该预设的目标精度可以预先存储于处理器中。
可选地,该神经网络可以是未经训练的神经网络,其对应的权值数据可以是随机数,这样,通过运算电路对该神经网络进行正向运算和/或反向运算,使得该神经网络的正向运算结果在预设的范围内,从而实现对该神经网路的训练。可选地,该神经网络还可以是具有一定精度的神经网络,即该神经网络为处于收敛状态的神经网络,该处于收敛状态的神经网络的权值数据为一组确定数值。这样,通过运算电路对该神经网络进行正向运算和/或反向运算,使得该神经网络的精度在预设的范围内,从而实现对神经网络的重训练,使得重训练后获得的神经网络满足当前应用场景的需求。其中,该重训练后获得的损失函数的值一般小于该重训练前的损失函数的值。可选地,系统可以预先设置该神经网络的目标精度,并根据该目标精度确定上述预设的范围。
可选地,如图1所示,每个处理器上均可以设置有解压电路和压缩电路,该压缩电路和解压电路均连接至该处理器上的运算电路,其中,压缩电路可以用于对处理器的输入数据和/或输出数据进行有损压缩编码,解压电路用于对处理器获得的处于压缩状态的数据进行解压缩。例如,处理器上的压缩电路可以对其接收到的输入数据进行有损压缩编码,以降低数据量,之后,解压电路可以对该处于压缩状态的数据进行解压缩,运算电路可以根据该解压缩后的数据进行正向运算和/或反向运算。进一步地,该处理器上的压缩电路可以根据神经网络的精度确定数据的目标压缩率,并根据该目标压缩率对处理器的输出数据进行有损压缩编码。
可选地,压缩电路可以对其接收到的第三输入数据进行有损压缩编码,获得第一输入数据,该第三输入数据可以是神经网络的未经有损压缩编码的输入数据。之后,解压电路可以对该处于压缩状态的第一输入数据进行解压缩,获得第二输入数据,运算电路可以根据该第二输入数据进行有损压缩编码。进一步地,压缩电路还可以对运算电路获得的正向运算结果进行有损压缩编码,解压电路还可以对该有损压缩编码后的正向运算电路进行解压缩,之后,运算电路根据该解压缩后的正向运算结果计算损失函数,并根据该损失函数进行反向运算,获得梯度值。
更进一步地,压缩电路可以对上述的梯度值进行有损压缩编码,解压电路可以对有损压缩后的梯度值进行解压缩,运算电路可以根据解压缩后的梯度值更新权值数据。又进一步地,压缩电路还可以对更新后的权值数据进行有损压缩编码,解压电路可以对有损压缩后的权值数据进行解压缩,之后运算电路可以根据该解压缩的权值数据获得更新的第二输入数据,并根据该第二输入进行正向运算,循环往复,直至运算电路确定损失函数的值小于预设的目标精度。
可选地,压缩电路可以根据预设的目标精度确定目标压缩率,并根据目标压缩率对各个输入数据、正向运算结果、梯度值及权值数据等数据进行有损压缩。同理,解压电路可以根据上述的目标压缩率对其接收的各种处于压缩状态的数据进行解压缩。
可选地,如图2所示,该处理器可以是第一处理器100或第二处理器200。该第一处理器100上均可以设置有第一压缩电路120和第一解压电路140,第一压缩电路120和第一解压电路140均连接至第一运算电路110。该第二处理器 200上可以设置有第二压缩电路220和第二解压电路240,第二压缩电路220和第二解压电路240均可以连接至第二运算电路210。此时,当前处理器接收到的输入数据可以是与其连接的其他处理器经有损压缩编码后的、处于压缩状态的数据。
例如,当第一处理器100需要向第二处理器200传送数据时,如神经网络的输入数据,第一处理器100可以首先通过其上设置的第一压缩电路120对该数据进行有损压缩编码,并将有损压缩编码后的数据传送至第二处理器200。第二处理器200可以通过其上设置的第二解压电路240对该有损编码后的数据进行解压缩,之后第二运算电路210能够根据解压缩后获得的数据进行相应的运算。同理,当第二处理器200需要向和第一处理器100传送数据时,第二处理器200可以首先通过其上设置的第二压缩电路220对该数据进行有损压缩编码,并将有损压缩编码后的数据传送至第一处理器100。第一处理器100可以通过其上设置的第一解压电路140对该有损编码后的数据进行解压缩,之后,第一运算电路110能够根据解压缩后获得的数据进行相应的运算。
本申请实施例中,通过有损压缩编码的方式对数据进行压缩,可以提高数据的压缩率,降低访存数据占用的带宽,从而降低处理器之间的访存开销,提高处理器的数据访存速度及效率,进而提升处理器的处理效率。可选地,该有损压缩编码可以包括预测编码(如点线性预测等)、脉冲编码调制、插值法、外推法、变换编码、子带编码、混合编码、矢量量化、分型编码的一种或多种的组合等等,此处仅用于举例说明,并不用于限定本申请的范围。事实上,其他可以实现相似功能的有损压缩编码方式同样适用于本申请的数据处理方法。应当清楚的是,有损压缩是指通过减少数据量来提高压缩率的压缩方法,其在压缩过程中会损失一定的信息,解压缩后的数据与原始数据不同但非常接近。
传统技术中,一般是通过对神经网络进行剪枝及稀疏处理,之后再通过霍夫曼编码(Huffman Coding)实现对神经网络的压缩。本领域技术人员可以理解的是,霍夫曼编码属于无损压缩的方式。可见,传统技术中是通过稀疏算法来减少数据量,并结合无损压缩的方式实现数据的压缩。相较于传统技术,本申请实施例中采用的有损压缩编码的方式减少了处理器的数据运算量,提高了压缩效率。
可选地,各个处理器上的运算电路可以采用图4-图 5所示的运算电路300。具体地,上述第一运算电路110或第二运算电路210均可以采用图4-图 5所示的运算电路300。该运算电路300可以包括至少两个处理电路,该至少两个处理电路可以分别标记为主处理电路310和至少一个从处理电路320,其中,至少一个从处理电路320均连接至主处理电路310。主处理电路310用于对输入数据以及主处理电路310与所述多个从处理电路320之间的传输数据及运算指令进行前序处理,各个从处理电路320分别用于依据主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给主处理电路310。主处理电路310还用于对多个中间结果执行后续处理得到运算指令的计算结果,该计算结果可以具体为神经网络运算的输出神经元数据等。本申请实施例中,上述运算指令可以是正向运算指令和/或反向运算指令。
进一步地,如图3所示,主处理电路310上可以设置有第三压缩电路311 和第三解压电路312,各个从处理电路320上可以设置有第四压缩电路321和第四解压电路322。本申请实施例中,通过在主处理电路和从处理电路相应的设置解压电路和压缩电路,可以实现运算过程中的梯度数据、权值数据等中间计算结果的压缩和解压缩,降低各个处理电路之间传输数据的数据量大小,减少各个处理电路之间的访存开销,从而进一步提高处理器的性能。
可选地,在神经网络训练或重训练的过程中,第一运算电路110或第二运算电路210可以首先执行正向运算。具体地,主处理电路310上的第三压缩电路311用于将第二输入数据的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个从处理电路上的第四解压电路322;各个第四解压电路 322分别用于对接收到的处于压缩状态的权值数据进行解压缩,之后各个从处理电路320分别用于根据解压缩后的权值数据进行正向运算得到第一中间结果,第四压缩电路321用于分别对相应的第一中间结果进行有损压缩编码。第三解压电路312用于对各个从处理电路320传送的第一中间结果进行解压缩,主处理电路310用于根据解压缩后的第一中间结果获得正向运算结果。其中,第一中间结果可以是各个从处理电路对应的正向运算的正向运算结果。该正向运算的过程具体可参见上文中的描述。
进一步地,主处理电路310还可以用于根据该正向运算结果和预设的目标运算结果,计算获得损失函数。其中,损失函数可以是正向运算结果与预设的目标运算结果的均方差函数、交叉熵函数或其他自定义的损失函数。例如,该损失函数可以是正向运算结果与预设的目标运算结果的均方差函数,该损失函数的值可以是正向运算结果与预设的目标运算结果的均方差的绝对值。可选地,主处理电路可以将该正向运算结果与预设的训练数据集及进行正向运算,获得收敛结果,并根据该收敛结果与预设的目标运算结果确定损失函数。其中,损失函数可以是收敛结果与预设的目标运算结果的均方差函数、交叉熵函数或其他自定义的损失函数。例如,损失函数可以是收敛结果与预设的目标运算结果的均方差函数,主处理电路310可以将该收敛结果与预设的目标运算结果的均方差作为损失函数的值,或者,将该收敛结果与预设的目标运算结果的均方差的绝对值作为损失函数的值。
主处理电路310还可以进一步确定该损失函数的值是否小于预设的目标精度,若损失函数的值小于预设的目标精度,则说明完成该神经网络的训练或重训练。进一步地,主处理电路的第三压缩电路311可以对该神经网络的训练或重训练的结果进行有损压缩编码,并将有损压缩编码后的该神经网络的训练或重训练的结果传送至第一处理器100或第二处理器200外部。
若主处理电路310确定损失函数的值大于或等于预设的目标精度,则主处理电路的第三压缩电路311可以对该损失函数进行有损压缩编码,并将有损压缩后的损失函数发送至各个从处理电路320,各个从处理电路的第四解压电路 322可以对其接收到的损失函数进行解压缩,之后,各个从处理电路320可以根据解压缩后获得的损失函数执行反向运算。具体地,主处理电路310在确定损失函数大于或等于目标精度时,第三压缩电路311对损失函数进行有损压缩编码,并将有损压缩编码后获得的处于压缩状态的损失函数传送至各个第四解压电路322;各个第四解压电路322分别用于对接收到的处于压缩状态的损失函数进行解压缩;各个从处理电路320分别用于根据解压缩后的损失函数对神经网络进行反向运算得到第二中间结果;各个第四压缩电路321分别用于将第二中间结果进行有损压缩编码后传送至第三解压电路312;第三解压电路312用于对各个从处理电路传送的第二中间结果进行解压缩;主处理电路310还用于根据解压缩后的第二中间结果获得梯度值。其中,第二中间结果可以是各个从处理电路执行反向运算获得梯度值。该反向运算的具体执行过程可参见上文的描述。
更进一步地,主处理电路310可以根据上述的梯度值更新神经网络的权值数据,之后,主处理电路的第三压缩电路311可以对该更新后的第二输入数据进行有损压缩编码,并将该更新后的第二输入数据传送至各个从处理电路的第四解压电路322,各个从处理电路320可以对更新后的第二输入数据进行解压缩,并根据更新后的第二输入数据重复执行上述正向运算和反向运算,直至该损失函数的值小于预设的目标精度。
可选地,如图6所示,各个处理器上与运算电路连接的压缩电路(第一压缩电路120、第二压缩电路220)以及各运算电路内部设置的第三压缩电路311 和第四压缩电路321均包括第一压缩率确定模块410和至少一个压缩模块420,各个压缩模块420并联设置,各个压缩模块420均连接至第一压缩率确定模块 410。各个压缩模块420分别用于按照不同的压缩率进行有损压缩编码,第一压缩率确定模块410用于根据预设的目标精度确定目标压缩率,并根据目标压缩率从至少一个压缩模块420中选定目标压缩模块420;该目标压缩模块420的压缩率可以等于目标压缩率。
可选地,第一压缩率确定模块410可以根据目标精度与目标压缩率之间的预设对应关系,确定目标压缩率。例如,目标精度与目标压缩率之间的预设对应关系可以是预设的数学公式对应关系。再如,目标精度与目标压缩率之间的预设对应关系可以是预设的映射表,此时,第一处理器100可以根据预设的目标精度,通过查询该预设的映射表,获得目标压缩率。本申请实施例中,通过设置不同压缩率的压缩模块420,可以根据神经网络的不同精度调整压缩率,从而可以在满足精度需求的情况下,提高压缩率。
可选地,如图7所示,各个处理器上设置的与运算电路连接的解压电路(第一解压电路140、第二解压电路240)以及各个运算电路内部设置的第三解压电路312和第四解压电路322均可以包括第二压缩率确定模块510以及至少一个解压模块520,至少一个解压模块520并联设置,各个解压模块520均连接至第二压缩率确定模块510。各个解压模块520分别用于解压不同压缩率的数据,第二压缩率确定模块510用于根据目标压缩率从至少一个解压模块520中选定目标解压模块520。本申请实施例中,通过设置不同的解压模块520,可以根据不同的压缩率选通不同的硬件解压模块520,保证解压后数据的可靠性,从而可以保证运算的可靠性和准确性。
可选地,如图1所示,各个处理器还可以包括读写电路。如图2所示,该第一处理器100可以包括第一读写电路130,该第二处理器200可以包括第二读写电路230。该第一读写电路130或第二读写电路230用于获取神经网络的第一输入数据以及其他数据。本申请实施例中,该读写电路可以是I/O电路。进一步地,该第一处理器100或第二存储器还可以包括片上存储电路,该片上存储电路可以包括缓存和寄存器等,此处不做具体限定。
作为进一步地改进,各个处理器(如第一处理器100或第二处理器200)上还可以设置有用于实现无损压缩的第五压缩电路。该第五压缩电路可以与该运算电路连接,该第五压缩电路也可以设置在主处理电路和各个从处理电路上。相应地,该第一处理器100或第二处理器200的解压电路还可以设置有用于实现无损解压缩的第五解压电路,该第五解压电路可以与上述的运算电路连接,该第五解压电路也可以设置在主处理电路和各个从处理电路上。进一步地,该第一处理器100或第二处理器200上还可以包括压缩选择电路,用于根据运算指令选定有损压缩的方式实现数据压缩,或根据运算指令选定无损压缩的方式实现数据压缩。
在一个实施例中,第一处理器100可以设置在终端上,第二处理器200可以设置在云端服务器上,通过终端和云端服务器交互协同的方式实现对神经网络的训练或重训练。例如,终端的第一处理器100可以获得一具有一定精度的神经网络,该神经网络处于收敛状态,并判断该神经网络的正向运算结果是否满足该终端的预设需求,当该神经网络的正向运算结果不满足终端的预设需求时,终端的第一处理器100可以对该神经网络进行有损压缩编码,并将有损压缩编码后的神经网络发送至云端服务器进行重训练。云端服务器的第二处理器 200可以根据该有损压缩编码后的神经网络进行重训练,并对重训练好的神经网络进行有损压缩编码,并将该重训练后的神经网络数据(可以包括输入神经元数据和权值数据)回传给终端。从而使得重训练后的神经网络能够满足终端的预设需求,以便终端能够应用该重训练好的神经网络实现相应的运算。
当然,该终端的第一处理器100也可以获得一未经训练的神经网络,该未经训练的神经网络的权值数据可以是随机数。此时,终端可以对该神经网络进行有损压缩编码,并将有损压缩编码后的神经网络发送至云端服务器进行训练。最后,云端服务器可以根据有损压缩编码后的神经网络进行训练,并对训练好的神经网络进行有损压缩编码,并将该训练后的神经网络回传给终端。从而使得训练后的神经网络能够满足终端的需求,以便终端能够应用该训练好的神经网络实现相应的运算。
本申请实施例中,通过终端与云端服务器协同的方式,并在云端服务器实现对神经网络的训练或重训练过程,可以降低终端的运算量。同时,终端和云端服务器之间的传送的数据均为有损压缩编码后获得数据,从而可以减少数据的访存开销,提高该计算机系统的性能。
具体地,第一处理器100可以用于根据获取的神经网络的输入数据进行正向运算,获得正向运算结果,并在神经网络的正向运算结果不满足预设需求时,对输入数据进行有损压缩编码,并将有损压缩编码后的输入数据传送至第二处理器。其中,该神经网络的输入数据可以是该神经网络的第三输入数据,也可以是是有损压缩编码后处于压缩状态后的第一输入数据,也可以是有损压缩编码后处于解压状态的第二输入数据,上述的神经网络的输入数据可以包括神经元数据和权值数据。当第一处理器接收到的输入数据为上述第一输入数据时,第一处理器100的第一解压电路140可以首先对该数据进行解压缩,获得第二输入数据,之后,第一运算电路110再根据解压缩状态的第二输入数据进行运算。
具体地,第一运算电路110用于根据输入数据进行正向运算,获得第一正向运算结果,根据第一正向运算结果与预设的目标运算结果,获得第一损失函数。若第一运算电路110确定第一损失函数的值小于预设的目标精度,则确定神经网络的正向运算结果满足终端的预设需求。若第一运算电路110确定第一损失函数的值大于或等于预设的目标精度,则确定神经网络的正向运算结果不满足终端的预设需求。
可选地,当第一运算电路110确定正向运算结果不满足终端的预设需求时,与第一运算电路110连接的第一压缩电路120可以用于对输入数据进行有损压缩编码,并将该处于压缩状态的输入数据传送至云端服务器。具体地,第一压缩电路120可以根据目标精度与目标压缩率之间的预设对应关系,确定目标压缩率。例如,目标精度与目标压缩率之间的预设对应关系可以是预设的数学公式对应关系。再如,目标精度与目标压缩率之间的预设对应关系可以是预设的映射表,此时,第一处理器可以根据预设的目标精度,通过查询该预设的映射表,获得目标压缩率。本申请实施例中,通过神经网络的目标精度确定目标压缩率,可以在确保精度的前提下,尽可能的提高压缩率,以减小数据访存带来的带宽开销。
该云端服务器可以对第二处理器200可以对其接收到的输入数据进行解压缩,并根据解压后的输入数据对神经网络进行训练或重训练,直至该神经网络的第二正向运算结果满足终端的预设需求。具体地,第二解压电路240可以用于对第一处理器传送的输入数据进行解压缩,获得有损压缩后的该神经网络的输入神经元数据及权值数据。第二运算电路210可以用于根据有损压缩编码后的输入数据进行正向运算,获得第二正向运算结果,并根据该第二正向运算结果和预设的目标运算结果确定第二损失函数。若第二损失函数的值大于或等于预设的目标精度,则第二运算电路210用于根据第二损失函数进行反向运算,获得梯度值,并根据梯度值更新权值数据,获得更新后的权值数据。之后,第二运算电路210继续用于根据有损压缩编码后的输入数据进行正向运算,获得第二正向运算结果,直至第二正向运算结果满足终端的预设需求。可选地,该正向运算和反向运算的具体过程可参见上文的描述。
可选地,当第一运算电路110确定正向运算结果不满足终端的预设需求时,与第一运算电路110连接的第一压缩电路120可以用于对第二输入数据及第一损失函数进行有损压缩编码,获得交互数据;第一读写电路130可以用于将交互数据传送至第二处理器200。其中,该交互数据可以包括神经网络的输入神经元数据、权值数据及损失函数等中间结果数据。即当该神经网络的正向运算结果不满足终端的预设需求时,此时需要将该神经网络发送至云端服务器进行训练或重训练。本申请实施例中,通过对终端和云端服务器之间的交互数据进行有损压缩编码,能够减小数据访存的开销。
可选地,第一处理器100的第一压缩电路120可以根据预设的目标精度确定目标压缩率,并根据该目标压缩率对上述交互数据进行有损压缩。具体地,第一压缩电路120可以根据目标精度与目标压缩率之间的预设对应关系,确定目标压缩率。例如,目标精度与目标压缩率之间的预设对应关系可以是预设的数学公式对应关系。再如,目标精度与目标压缩率之间的预设对应关系可以是预设的映射表,此时,第一处理器可以根据预设的目标精度,通过查询该预设的映射表,获得目标压缩率。本申请实施例中,通过神经网络的目标精度确定目标压缩率,可以在确保精度的前提下,尽可能的提高压缩率,以减小数据访存带来的带宽开销。
进一步地,该云端服务器的第二处理器200可以对其接收的交互数据进行解压缩,并根据该交互数据对神经网络进行训练或重训练,直至该神经网络的第二正向运算结果满足终端的预设需求。具体地,第二解压电路240可以用于对第一处理器传送的交互数据进行解压缩,获得有损压缩后的该神经网络的输入神经元数据、权值数据及第一损失函数等中间结果数据。第二运算电路210 可以用于根据解压缩后获得的第一损失函数的值对神经网络进行反向运算,获得梯度值,根据梯度值更新输入数据中的权值数据,获得更新后的权值数据,根据更新后的权值数据对神经网络进行正向运算,获得第二正向运算结果;根据第二正向运算结果和预设的目标运算结果,获得第二损失函数;在第二损失函数的值大于或等于预设的目标精度时,根据第二损失函数的值对神经网络进行反向运算,获得梯度值,之后返回第二处理器根据梯度值更新输入数据的权值数据,获得更新后的权值数据的步骤,直至第二损失函数的值小于预设的目标精度。
可选地,第二处理器上的第二压缩电路还可以对上述训练或重训练过程中的第二正向运算结果、梯度值及权值数据等进行有损压缩编码。第二处理器上的第二解压电路还可以对上述有损压缩编码后的数据进行解压缩。例如,第二压缩电路可以对第二正向运算结果进行有损压缩编码,第二解压电路可以对上述有损压缩后的第二正向运算结果进行解压缩,第二运算电路可以根据解压缩的第二正向运算结果确定第二损失函数。再如,第二压缩电路可以对梯度值进行有损压缩编码,第二解压电路可以对上述有损压缩后的梯度值进行解压缩,并根据解压缩后的梯度值获得更新后的权值数据。又如,第二压缩电路可以对权值数据进行有损压缩编码,第二解压电路可以对上述有损压缩后的权值数据进行解压缩,之后,第二运算电路210继续用于根据有损压缩编码后的输入数据进行正向运算,获得第二正向运算结果,直至第二正向运算结果满足终端的预设需求。本申请实施例中的第二压缩电路和第二解压电路的工作原理与上述实施例的压缩电路和解压电路的工作原理基本一致,具体可参见上文中的描述。
在一个实施例中,该第二处理器200的运算电路210可以采用如图4-图 5所示的运算电路300,该运算电路的主处理电路310上设置有第三压缩电路311和第三解压电路312,从处理电路320上设置有第四压缩电路321和第四解压电路322,具体结构可参见上文的描述。
当该云端服务器的第二处理器200对该神经网络进行训练或重训练时,第三压缩电路311可以用于对输入数据中的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个第四解压电路322,其中,本申请实施例中的权值数据可以是输入数据中包含的原始权值数据,也可以是根据第一处理器获得的第一损失函数更新后的权值数据。当该权值数据为根据第一损失函数更新后的权值数据时,上述对权值数据进行有损压缩编码之前,主处理电路310的第三压缩电路311可以用于对解压缩后获得的第一损失函数进行有损压缩编码,并将有损压缩后的第一损失函数传送至各个从处理电路的第四解压电路322。各个从处理电路320可以根据第一损失函数的值对神经网络进行反向运算,获得梯度值。进一步地,各个从处理电路320的第四压缩电路可以将该梯度值进行有损压缩编码,并将该有损压缩编码后的梯度值传送至主处理电路310。主处理电路310的第三解压电路312可以对各个从处理电路320传送的梯度值进行解压缩,之后主处理电路310可以根据各个从处理电路传送的梯度值确定该神经网络的各层的梯度值,并根据该神经网络的各层的梯度值更新第二输入数据中的权值数据,获得更新后的权值数据。
当第三压缩电路311将处于压缩状态的权值数据传送至各个第四解压电路 322之后,各个第四解压电路322分别对接收到的处于压缩状态的权值数据进行解压缩;各个从处理电路320用于根据解压缩后的权值数据对神经网络进行正向运算得到第一中间结果;各个第四压缩电路321用于将第一中间结果进行有损压缩编码后传送至第三解压电路312;第三解压电路312用于对各个从处理电路传送的第一中间结果进行解压缩,主处理电路310用于根据解压缩后的第一中间结果获得第二正向运算结果。
第三压缩电路311还用于在第二损失函数的值大于或等于目标精度时,对第二损失函数进行有损压缩编码,并将有损压缩编码后获得的处于压缩状态的第二损失函数传送至各个第四解压电路322。各个第四解压电路322分别对接收到的处于压缩状态的第二损失函数进行解压缩,各个从处理电路320用于根据解压缩后的第二损失函数对神经网络进行反向运算得到第二中间结果。各个第四压缩电路322用于将第二中间结果进行有损压缩编码后传送至第三解压电路 312。第三解压电路312还用于对各个从处理电路320传送的第二中间结果进行解压缩,主处理电路310还用于根据解压缩后的第二中间结果获得梯度值,之后主处理电路可以根据该神经网络的各层的梯度值更新第二输入数据中的权值数据,获得更新后的权值数据。之后,第三压缩电路311可以用于对输入数据中的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个第四解压电路322,循环重复执行上述步骤,直至神经网络的第二正向运算结果满足终端的预设需求。
本申请实施例中,云端服务器的第二处理器200对神经网络的训练或重训练的过程与上述处理器对神经网络的训练或重训练过程基本一致,具体过程可参见上文的描述,此处不再赘述。
可选地,云端服务器的第二处理器200在确定神经网络的第二正向运算结果满足终端的预设需求时,可以确定该神经网络已经训练或重训练完毕,此时,第二处理器200可以对神经网络进行有损压缩编码,并将有损压缩编码后的神经网络传送至第一处理器。本申请实施例中,对神经网络进行有损压缩编码,可以是对训练或重训练完毕的神经网络的权值数据进行有损压缩编码的过程。
可选地,该终端的第一处理器的运算电路110也可以采用如图4-图 5所示的运算电路300。此时,当终端的第一处理器100根据输入数据进行正向运算时,第三压缩电路311可以用于对输入数据中的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个第四解压电路322,各个第四解压电路322分别对接收到的处于压缩状态的权值数据进行解压缩;各个从处理电路320用于根据解压缩后的权值数据对神经网络进行正向运算得到第一中间结果;各个第四压缩电路321用于将第一中间结果进行有损压缩编码后传送至第三解压电路 312;第三解压电路312用于对各个从处理电路传送的第一中间结果进行解压缩,主处理电路310用于根据解压缩后的第一中间结果获得第一正向运算结果。进一步地,该第一运算电路的主处理电路可以根据该第一正向运算结果确定第一损失函数,并确定该第一损失函数的值是否满足终端的预设需求。
如图8所示,本申请提供了一种数据处理方法,该数据处理方法可以应用于上述的第一处理器或第二处理器中,通过对数据进行有损压缩编码,从而减少数据量,降低访存的开销,提高处理器的性能。具体地,上述方法包括如下步骤:
S100、获取神经网络的第一输入数据,其中,第一输入数据为有损压缩编码后获得的处于压缩状态的数据。
具体地,第一运算电路110或第二运算电路210可以获取处于压缩状态的、经过有损压缩编码获得的第一输入数据,该第一输入数据包括神经网络的输入神经元数据和权值数据。可选地,该神经网络可以是处于收敛状态的神经网络,该神经网络也可以是未经训练的神经网络,该未经训练的神经网络的权值可以为随机数。
可选地,第一处理器100或第二处理器200可以通过直接读取处于经过有损压缩编码获得的第一输入数据,可以减少数据的数据量,从而减少数据访存的开销。可选地,第一处理器100或第二处理器200还可以获得未经压缩的第三输入数据,该第三输入数据的信息量大于上述的第一输入数据的信息量。进一步地,该第一处理器100或第二处理器200可以对上述第三输入数据进行有损压缩编码,获得上述的第一输入数据。
S200、对第一输入数据进行解压缩,获得神经网络的第二输入数据;
具体地,第一运算电路110或第二运算电路210可以对其获取的第一输入数据进行解压缩,获得神经网络的第二输入数据。其中,该第二输入数据为处于解压状态的数据,该第二输入数据也包括输入神经元数据和权值数据。可选地,该第二输入数据与压缩前的第一输入数据不同但非常接近,该第二输入数据所包含的信息量小于压缩前的第一输入数据所包含的信息量。
S300、根据第二输入数据进行正向运算,获得正向运算结果;
具体地,第一运算电路110或第二运算电路210可以根据该神经网络的输入神经元数据和权值数据,进行一系列的线性运算和激活运算,从输入层开始,一层层的向后计算,直至完成输出层的运算,得到输出结果,该输出层的输出结果即为正向运算结果。可选地,对于多层神经网络,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将处理器中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值,直至完成输出层的运算。
S400、若该正向运算结果不满足预设需求,则对神经网络进行训练或重训练,直至该正向运算结果满足预设需求。
具体地,若该正向运算结果不满足预设需求,第一运算电路110或第二运算电路210可以根据该处于解压状态的第二输入数据对神经网络进行训练或重训练,直至该神经网络的正向运算结果满足预设需求。可选地,该神经网络的训练过程或重训练过程可以通过对该神经网络执行正向运算和/或反向运算实现,该神经网络的训练过程或重训练过程具体可参见下文的描述。
本申请的数据处理方法,通过对神经网络的输入数据进行有损压缩编码,可以通过减小输入数据的数据量,降低神经网络处理过程中数据的访存开销,从而可以提高处理器的性能;进一步地,处理器可以根据对该第一输入数据进行解压缩,并根据解压缩后获得的第二输入数据对神经网络进行训练或重训练,使得该神经网络的正向运算结果满足预设需求,即可以通过对神经网络进行训练或重训练弥补有损压缩编码对精度的影响,从而可以保证运算的可靠性及准确性。
可选地,如图9所示,上述方法还可以包括如下步骤:
S500、判断正向运算结果是否满足预设需求;
若上述正向运算结果不满足预设需求,则执行上述步骤S400,对神经网络进行训练或重训练,直至该正向运算结果满足预设需求。若正向运算结果满足预设需求,则表明该神经网络训练或重训练完毕。进一步地,处理器可以根据对该训练或重训练完毕的神经网络进行有损压缩编码,并将该有损压缩编码后的神经网络传送至对应的终端,以便于终端根据该神经网络进行相应的运算。可选地,处理器还可以直接应用该训练或重训练完毕的神经网络进行相应的运算。
可选地,如图10所示,上述步骤S500还可以包括如下步骤:
S510、根据正向运算结果与预设的目标运算结果,计算损失函数。
可选地,损失函数可以是正向运算结果与预设的目标运算结果的均方差函数、交叉熵函数或其他自定义的损失函数。进一步地,第一运算电路110或第二运算电路210的运算电路可以确定该损失函数的值。例如,损失函数可以是正向运算结果与预设的目标运算结果的均方差函数,第一运算电路110或第二运算电路210可以计算正向运算结果与预设的目标运算结果的均方差,并将该均方差的绝对值作为上述的损失函数的值。
可选地,在另一个实施例中,第一运算电路110或第二运算电路210还可以将上述获得的正向运算结果与预设的训练数据集进行正向运算,获得收敛结果,并根据该收敛结果与目标运算结果确定损失函数。其中,损失函数可以是正向运算结果与预设的目标运算结果的均方差函数、交叉熵函数或其他自定义的损失函数。进一步地,第一运算电路110或第二运算电路210的运算电路可以确定该损失函数的值。例如,损失函数可以是正向运算结果与预设的目标运算结果的均方差函数,第一运算电路110或第二运算电路210可以计算上述的收敛结果与目标运算结果之间的均方差,并将该均方差的绝对值作为损失函数的值。
S520、第一运算电路110或第二运算电路210判断损失函数的值是否大于或等于预设的目标精度;
若损失函数的值大于或等于目标精度,则确定正向运算结果不满足预设需求。若损失函数的值小于目标精度,则确定正向运算结果满足预设需求。
进一步地,如图11所示,上述步骤S510还可以包括如下步骤:
S501、对所述正向运算结果进行有损压缩编码后再对所述正向运算结果进行解压缩。
具体地,每当处理器执行完成一次正向运算,处理器上的压缩电路可以对该正向运算结果进行有损压缩编码,以降低数据量,从而可以进一步降低数据访存开销。之后,处理器上的解压电路可以对该有损压缩后的正向运算结果进行解压缩,以便处理器可以根据该解压缩后的数据执行相应的运算。可选地,处理器可以根据预设的目标精度获得目标压缩率,并根据目标压缩率对该正向运算结果进行有损压缩。
S502、根据解压缩后的正向运算结果与所述预设的目标运算结果,计算损失函数。具体地,该计算损失函数的具体过程可参见上述步骤S510的描述。
可选地,当损失函数的值大于或等于目标精度时,即当正向运算结果不满足预设需求时,则对神经网络进行训练或重训练,即上述步骤S400可以包括如下步骤:
S410、根据损失函数对神经网络进行反向运算,获得梯度值。
具体地,第一运算电路110或第二运算电路210可以计算损失函数对各个权值数据的偏导数,获得各层的梯度值。在多层神经网络的反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。
进一步地,上述步骤S410还可以包括:
对损失函数进行有损压缩编码后再对损失函数进行解压缩;具体地,每当处理器完成一次正向运算,处理器还可以对该正向运算获得的损失函数进行有损压缩编码,之后在对该有损压缩后的损失函数进行解压缩,以便根据解压缩后的损失函数进行相应的运算。可选地,处理器可以根据预设的目标精度获得目标压缩率,并根据目标压缩率对该损失函数进行有损压缩。
根据解压缩后的损失函数对神经网络进行反向运算,获得梯度值。具体地,该获得梯度值的过程可参见上述步骤S410中的描述。
S420、根据梯度值更新神经网络的权值数据,获得更新后的第二输入数据,之后,返回步骤S300,根据第二输入数据进行正向运算,获得正向运算结果的步骤,重复执行上述步骤S300、步骤S500及步骤S400,直至损失函数的值小于预设的目标精度。
可选地,第一运算电路110或第二运算电路210可以根据梯度下降算法(如随机梯度下降算法或批量梯度下降算法)实现权值数据的更新,具体地,第一运算电路110或第二运算电路210可以根据上述的梯度值和预设的学习率(该学习率可以是预设的固定值,也可以是随机递减的)计算获得浮动值,并根据该神经网络更新前的权值和该浮动值计算获得更新后的权值数据。例如,该更新后的权值数据可以等于更新前的权值数据减去上述的浮动值。当然,在其他实施例中,该权值数据的更新过程还可以采用其他能够实现相似功能的算法,此处仅以举例说明,并不用于限定本申请的范围。
进一步地,如图12所示,上述步骤S420可以包括:
S401、对所述梯度值进行有损压缩编码后再对所述有损压缩编码后的梯度值进行解压缩;
具体地,每当处理器完成一次反向运算,处理器可以对反向运算获得的梯度值进行有损压缩编码,以降低数据量,进一步降低数据访存开销。之后,处理器可以对有损压缩后的梯度值进行解压缩,以便根据解压缩后的梯度值更新权值数据。可选地,处理器可以根据预设的目标精度获得目标压缩率,并根据目标压缩率对该梯度值进行有损压缩。
S402、根据所述解压缩后获得的梯度值更新所述权值数据。具体地,该更新权值的步骤与上述S420中的记载基本一致,具体可参见上文。
更进一步地,上述步骤S420还可以包括:
S403、对所述权值数据进行有损压缩编码后再对所述有损压缩编码后的权值数据进行解压缩;具体地,每当处理器完成一次权值数据的更新操作,处理器可以对更新后的权值数据进行有损压缩编码,以进一步降低数据量。之后,处理器可以对该有损压缩后的权值数据进行解压缩。之后,返回根据所述第二输入数据进行正向运算,获得正向运算结果的步骤,直至所述损失函数的值小于预设的目标精度。可选地,处理器可以根据预设的目标精度获得目标压缩率,并根据目标压缩率对该权值数据进行有损压缩。
若确定损失函数的值小于预设的目标精度,则表明该神经网络训练或重训练完毕。进一步地,处理器可以根据对该训练或重训练完毕的神经网络进行有损压缩编码,并将该有损压缩编码后的神经网络传送至对应的终端,以便于终端根据该神经网络进行相应的运算。可选地,处理器还可以直接应用该训练或重训练完毕的神经网络进行相应的运算。
在一个实施例中,上述第一运算电路110或第二运算电路210包含至少两个处理电路,至少两个处理电路包括主处理电路和从处理电路;如图13所示,上述方法可以包括:
S311、主处理电路对第二输入数据的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个从处理电路。
具体地,主处理电路可以将输入神经元数据确定为广播数据,并将输入神经元数据广播给各个从处理电路。同时,主处理电路可以将权值数据确定为分发数据,并将分发数据分配成多个数据块,将至少一个数据块进行有损压缩编码,并将处于压缩状态的权值数据传送至各个从处理电路。本申请实施例中,通过对权值数据进行有损压缩,并将有损压缩后的权值数据传送至各个从处理电路,可以减少处理器的片上访存开销,进一步提高处理器的性能。
S312、各个从处理电路分别对接收到的处于压缩状态的权值数据进行解压缩,并根据解压缩后的权值数据对神经网络进行正向运算得到第一中间结果,将第一中间结果进行有损压缩编码后传送至主处理电路。
具体地,各个从处理电路可以分别对接收到的处于压缩状态的权值数据进行解压缩,并根据解压缩后的权值数据和广播获得的输入神经元数据,对神经网络进行正向运算得到第一中间结果。其中,该第一中间结果可以是各个从处理电路对应的正向运算的正向运算结果,该正向运算结果可以是神经网络的输出神经元数据。进一步地,各个从处理电路可以对其对应的第一中间结果进行有损压缩编码,并将有损压缩编码后数据传送至主处理电路。本申请实施例中,通过各个从处理电路对第一中间结果进行有损压缩,并将有损压缩后的第一中间结果传送至主处理电路,可以减少处理器的片上访存开销,进一步提高处理器的性能。
S313、主处理电路对各个从处理电路传送的第一中间结果进行解压缩,并根据解压缩后的第一中间结果获得正向运算结果。
具体地,主处理器电路可以对其接收的各个第一中间结果分别进行解压缩,并将各个第一中间结果进行排序得到综合运算结果,并对该综合运算结果执行偏置运算及激活运算得到正向运算结果。
进一步地,上述方法可以包括如下步骤:
S511、主处理电路可以根据该正向运算结果与预设的目标运算结果,确定损失函数。具体地,主处理电路确定损失函数的步骤,与上述步骤S510的过程一致,具体可参见上文的描述,此处不再赘述。
S521、主处理电路判断该损失函数的值是否大于或等于目标精度。
若主处理电路确定损失函数的值小于目标精度,则表明该神经网络已经达到收敛状态,结束该神经网络的训练或重训练。
若主处理电路确定损失函数的值大于或等于目标精度,则执行步骤S522,主处理电路对损失函数进行有损压缩编码,并将有损压缩编码后获得的处于压缩状态的损失函数传送至各个从处理电路。各个从处理电路可以根据损失函数对神经网络进行反向运算,通过反向运算对该神经网络的权值数据进行更新,并根据更新后的权值数据对该神经网络进行进一步地的训练或重训练。具体地,上述步骤S400可以包括:
S411、各个从处理电路分别对接收到的处于压缩状态的损失函数进行解压缩,并根据解压缩后的损失函数对神经网络进行反向运算得到第二中间结果,将第二中间结果进行有损压缩编码后传送至主处理电路。
具体地,各个从处理电路可以分别对接收到的损失函数进行解压缩,并根据解压缩后的损失函数对神经网络进行反向运算得到第二中间结果,其中,该第二中间结果可以是各个从处理电路反向运算获得的梯度值。进一步地,各个从处理电路可以对该其计算获得的梯度值进行有损压缩编码,并将有损压缩编码后的梯度值传送至主处理电路。本申请实施例中,通过各个从处理电路对第二中间结果进行有损压缩,并将有损压缩后的第二中间结果传送至主处理电路,可以减少处理器的片上访存开销,进一步提高处理器的性能。
S412、主处理电路对各个从处理电路传送的第二中间结果进行解压缩,并根据解压缩后的第二中间结果获得梯度值。
具体地,主处理电路可以对各个从处理电路传送的第二中间结果进行解压缩,并对解压缩后的各个第二中间结果进行排序,获得该神经网络的梯度值。可选地,该神经网络的梯度值可以是神经网络的各个层的梯度值的集合。
S421、主处理电路根据梯度值更新神经网络的权值数据,获得更新后的第二输入数据,之后,返回步骤S311,主处理电路将第二输入数据的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个从处理电路的步骤。
具体地,上述步骤S421中,主处理电路根据梯度值更新神经网络的权值数据的步骤,与上述步骤S420的具体实现过程一致,具体可参见上文中的描述。
可选地,在上述步骤S100之前,上述方法还包括如下步骤:
获取神经网络的第三输入数据,该第三输入数据包括神经元数据和权值数据,该第三输入数据为未经有损压缩的数据;
对该第三输入数据进行有损压缩编码,获得第一输入数据。进一步地,对该第三输入数据进行有损压缩编码,获得第一输入数据的步骤,还可以包括:
根据预设的目标精度获得目标压缩率;
根据目标压缩率,对神经网络的第三输入数据进行有损压缩编码,获得处于压缩状态的第一输入数据。
可选地,处理器可以根据其接收到的第三输入数据,对该原始数据进行有损压缩编码,从而通过有损压缩降低数据量。具体地,处理器可以根据目标精度与目标压缩率之间的预设对应关系,确定目标压缩率。例如,目标精度与目标压缩率之间的预设对应关系可以是预设的数学公式对应关系。再如,目标精度与目标压缩率之间的预设对应关系可以是预设的映射表,此时,处理器可以根据预设的目标精度,通过查询该预设的映射表,获得目标压缩率,并根据该目标压缩率对其接收到的第三输入数据进行有损压缩编码。
可选地,可以通过其中一个处理器对其第三输入数据进行有损压缩编码,并将有损压缩编码后的第一输入数据传送至另一处理器上进行运算等操作。例如,第一处理器可以根据预设的目标精度确定目标压缩率,将第三输入数据进行有损压缩编码,并将有损压缩编码后的第一输入数据传送至第二处理器,该第二处理器可以是终端或云端服务器上的处理器,此处不做具体限定。第二处理器可以获得该第一输入数据的压缩率,并根据该第一输入数据的压缩率对该第一输入数据进行解压缩,从而获得第二输入数据。进一步地,该第二处理器可以根据第二输入数据对神经网络进行训练或重训练,直至神经网络的正向运算结果满足预设需求。
进一步地,当处理器的运算电路存在两个以上的处理电路时,该主处理电路可以根据预设的目标精度确定目标压缩率,并根据该目标压缩率对第二输入数据及损失函数等进行有损压缩编码。相应地,主处理电路还可以根据该目标压缩率对其接收的第一中间结果和第二中间结果等进行解压缩。可选地,各个从处理电路可以根据预设的目标精度确定目标压缩率,并根据该目标压缩率对第一中间结果和第二中间结果等数据进行有损压缩编码。相应地,各个从处理电路还可以根据该目标压缩率对其接收的输入数据及损失函数等进行解压缩。可选地,该预设的目标精度与目标压缩率之间的预设对应关系。例如,目标精度与目标压缩率之间的预设对应关系可以是预设的数学公式对应关系。再如,目标精度与目标压缩率之间的预设对应关系可以是预设的映射表,此时,主处理电路或从处理电路等可以根据预设的目标精度,通过查询该预设的映射表,获得目标压缩率。
可选地,上述任一实施例中采用的有损压缩编码可以包括预测编码、脉冲编码调制、插值法、外推法、变换编码、子带编码、混合编码、矢量量化、分型编码的一种或多种的组合。应当清楚的是,此处仅用以举例说明,并不构成对本申请的实质性限定,其他能够实现相同功能的有损压缩方式同样适用于本申请。
应该理解的是,虽然图8-图 13的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图8-图 13中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程 ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限, RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步 DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM (ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus) 直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
在一个实施例中,如图14所示,一种数据处理装置,所述装置包括:
获取模块,获取所述神经网络的第一输入数据,其中,所述第一输入数据为有损压缩编码后获得的处于压缩状态的数据;
解压模块,用于对所述第一输入数据进行解压缩,获得所述神经网络的第二输入数据;
训练模块,用于根据所述第二输入数据进行正向运算,获得正向运算结果;若所述正向运算结果不满足预设需求,则对所述神经网络进行重训练或训练,直至所述正向运算结果满足预设需求。
关于数据处理装置的具体限定可以参见上文中对于数据处理方法的限定,在此不再赘述。上述数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求上述任一实施例所述的方法的步骤。具体地,当该计算机程序被处理器执行时,可以实现如下步骤:
获取所述神经网络的第一输入数据,其中,所述第一输入数据为有损压缩编码后获得的处于压缩状态的数据;
对所述第一输入数据进行解压缩,获得所述神经网络的第二输入数据;
根据所述第二输入数据进行正向运算,获得正向运算结果;
若所述正向运算结果不满足预设需求,则对所述神经网络进行重训练或训练,直至所述正向运算结果满足预设需求。
应当清楚的是,本申请实施例中,计算机程序被处理器执行实现的各个步骤,与上述方法中各个步骤的执行过程一致,具体可参见上文中的描述,此处不再赘述。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (23)

1.一种数据处理方法,其特征在于,应用于处理器中,所述方法包括如下步骤:
获取神经网络的第一输入数据,其中,所述第一输入数据为有损压缩编码后获得的处于压缩状态的数据;
对所述第一输入数据进行解压缩,获得所述神经网络的第二输入数据;
根据所述第二输入数据进行正向运算,获得正向运算结果;
若所述正向运算结果不满足预设需求,则对所述神经网络进行训练或对所述神经网络进行重训练,直至所述正向运算结果满足预设需求,其中,所述神经网络的初始权值数据为随机数;
所述处理器包含至少两个处理电路,至少两个所述处理电路包括主处理电路和从处理电路;所述的根据所述第二输入数据进行正向运算,获得正向运算结果的步骤,包括:
所述主处理电路将所述第二输入数据的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个所述从处理电路;
各个所述从处理电路分别对接收到的所述处于压缩状态的权值数据进行解压缩,并根据解压缩后的所述权值数据进行正向运算得到第一中间结果,将所述第一中间结果进行有损压缩编码后传送至所述主处理电路;
所述主处理电路对各个所述从处理电路传送的第一中间结果进行解压缩,并根据解压缩后的第一中间结果获得所述正向运算结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括如下步骤:
根据所述正向运算结果与预设的目标运算结果,计算损失函数;
若所述损失函数的值大于或等于预设的目标精度,则确定所述正向运算结果不满足所述预设需求;
若所述损失函数的值小于所述预设的目标精度,则确定所述正向运算结果满足所述预设需求。
3.根据权利要求2所述的方法,其特征在于,若所述正向运算结果不满足预设需求,对所述神经网络进行训练,直至所述正向运算结果满足预设需求的步骤,包括:
若所述损失函数的值大于或等于预设的目标精度,则根据所述损失函数进行反向运算,获得梯度值;
根据所述梯度值更新所述神经网络的权值数据,之后,返回根据所述第二输入数据进行正向运算,获得正向运算结果的步骤,直至所述损失函数的值小于预设的目标精度。
4.根据权利要求2所述的方法,其特征在于,所述的根据所述正向运算结果与预设的目标运算结果,计算损失函数的步骤,包括:
对所述正向运算结果进行有损压缩编码后再对所述正向运算结果进行解压缩;
根据解压缩后的正向运算结果与所述预设的目标运算结果,计算损失函数。
5.根据权利要求4所述的方法,其特征在于,若所述正向运算结果不满足预设需求,对所述神经网络进行训练,直至所述正向运算结果满足预设需求的步骤,包括:
若所述损失函数的值大于或等于预设的目标精度,则根据所述损失函数进行反向运算,获得梯度值;
对所述梯度值进行有损压缩编码后再对所述有损压缩编码后的梯度值进行解压缩,根据所述解压缩后获得的梯度值更新所述权值数据;
对所述权值数据进行有损压缩编码后再对所述有损压缩编码后的权值数据进行解压缩;之后,返回根据所述第二输入数据进行正向运算,获得正向运算结果的步骤,直至所述损失函数的值小于预设的目标精度。
6.根据权利要求2所述的方法,其特征在于,所述的根据所述正向运算结果与预设的目标运算结果,计算损失函数的步骤,包括:
将所述正向运算结果与预设的训练数据集进行正向运算,获得收敛结果;
根据所述收敛结果与所述目标运算结果,确定所述损失函数。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括如下步骤:
所述主处理电路根据所述正向运算结果与预设的目标运算结果,计算损失函数;
若所述主处理电路确定所述损失函数的值大于或等于预设的目标精度,则确定所述正向运算结果不满足所述预设需求;
若所述主处理电路确定所述损失函数的值小于所述预设的目标精度,则确定所述正向运算结果满足所述预设需求。
8.根据权利要求7所述的方法,其特征在于,若所述正向运算结果不满足预设需求,则对所述神经网络进行训练,直至所述正向运算结果满足预设需求的步骤,包括:
所述主处理电路在确定所述损失函数的值大于或等于所述目标精度时,所述主处理电路对所述损失函数进行有损压缩编码,并将所述有损压缩编码后获得的处于压缩状态的损失函数传送至各个所述从处理电路;
各个所述从处理电路分别对接收到的所述处于压缩状态的损失函数进行解压缩,并根据解压缩后的所述损失函数进行反向运算得到第二中间结果,将所述第二中间结果进行有损压缩编码后传送至所述主处理电路;
所述主处理电路对各个所述从处理电路传送的第二中间结果进行解压缩,并根据解压缩后的第二中间结果获得梯度值;
所述主处理电路根据所述梯度值更新所述第二输入数据的权值数据,之后,返回所述主处理电路将所述第二输入数据的权值数据进行有损压缩,并将处于压缩状态的权值数据传送至各个所述从处理电路的步骤,直至所述损失函数的值小于所述预设的目标精度。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括如下步骤:
获取所述神经网络的第三输入数据;
对所述第三输入数据进行有损压缩编码,获得所述第一输入数据。
10.根据权利要求9所述的方法,其特征在于,对所述第三输入数据进行有损压缩编码,获得所述第一输入数据的步骤,包括:
根据预设的目标精度获得目标压缩率;
根据所述目标压缩率对所述第三输入数据进行有损压缩编码,获得所述第一输入数据。
11.根据权利要求1-10任一项所述的方法,其特征在于,所述有损压缩编码包括预测编码、脉冲编码调制、插值法、外推法、变换编码、子带编码、混合编码、矢量量化、分型编码的一种或多种的组合。
12.一种数据处理装置,其特征在于,所述装置包括:
获取模块,获取神经网络的第一输入数据,其中,所述第一输入数据为有损压缩编码后获得的处于压缩状态的数据;
解压模块,用于对所述第一输入数据进行解压缩,获得所述神经网络的第二输入数据;
训练模块,用于根据所述第二输入数据进行正向运算,获得正向运算结果;若所述正向运算结果不满足预设需求,则对所述神经网络进行训练或对所述神经网络进行重训练,直至所述正向运算结果满足预设需求;
所述训练模块包含至少两个处理电路,至少两个所述处理电路包括主处理电路和从处理电路;所述的根据所述第二输入数据进行正向运算,获得正向运算结果的步骤,包括:
所述主处理电路将所述第二输入数据的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个所述从处理电路;
各个所述从处理电路分别对接收到的所述处于压缩状态的权值数据进行解压缩,并根据解压缩后的所述权值数据进行正向运算得到第一中间结果,将所述第一中间结果进行有损压缩编码后传送至所述主处理电路;
所述主处理电路对各个所述从处理电路传送的第一中间结果进行解压缩,并根据解压缩后的第一中间结果获得所述正向运算结果。
13.一种处理器,其特征在于,包括:
读写电路,用于获取神经网络的第一输入数据,其中,所述第一输入数据为有损压缩编码后获得的处于压缩状态的数据;
解压电路,所述解压电路与所述读写电路连接,用于对所述第一输入数据进行解压缩,获得所述神经网络的第二输入数据;
运算电路,所述运算电路连接所述解压电路,用于根据所述第二输入数据进行正向运算,获得正向运算结果;若所述正向运算结果不满足预设需求,则对所述神经网络进行训练或对所述神经网络进行重训练,直至所述正向运算结果满足预设需求;
所述运算电路包括主处理电路和至少一个从处理电路,每个所述从处理电路均连接至所述主处理电路;所述主处理电路上设置有第三压缩电路和第三解压电路;各个所述从处理电路上设置有第四解压电路和第四压缩电路;
所述第三压缩电路用于将所述第二输入数据的权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个所述第四解压电路;
各个所述第四解压电路分别用于对接收到的所述处于压缩状态的权值数据进行解压缩;
各个所述从处理电路分别用于根据解压缩后的所述权值数据进行正向运算得到第一中间结果,各个所述第四压缩电路分别用于对相应的所述第一中间结果进行有损压缩编码;
所述第三解压电路用于对各个所述从处理电路传送的第一中间结果进行解压缩,所述主处理电路用于根据解压缩后的第一中间结果获得所述正向运算结果。
14.根据权利要求13所述的处理器,其特征在于,所述运算电路还用于:
根据所述正向运算结果与预设的目标运算结果,计算损失函数;
在所述损失函数的值大于或等于预设的目标精度时,则确定所述正向运算结果不满足所述预设需求;在所述损失函数的值小于所述预设的目标精度时,则确定所述正向运算结果满足所述预设需求。
15.根据权利要求14所述的处理器,其特征在于,所述运算电路在确定所述正向运算结果不满足所述预设需求时,对所述神经网络进行训练,直至所述正向运算结果满足预设需求时,所述运算电路用于:
若所述损失函数的值大于或等于预设的目标精度,则根据所述损失函数对进行反向运算,获得梯度值;
根据所述梯度值更新所述神经网络的权值,获得更新后的输入数据;
之后,所述运算电路用于根据所述第二输入数据进行正向运算,获得正向运算结果,直至所述损失函数的值小于所述预设的目标精度。
16.根据权利要求13所述的处理器,其特征在于,所述处理器还包括压缩电路,所述压缩电路连接所述运算电路和所述读写电路;
所述压缩电路用于对所述正向运算结果进行有损压缩编码;
所述解压电路还用于对所述有损压缩编码后的正向运算结果进行解压缩;
所述运算电路还用于根据解压缩后的正向运算结果与所述预设的目标运算结果,计算损失函数。
17.根据权利要求16所述的处理器,其特征在于,
所述运算电路还用于在所述损失函数的值大于或等于预设的目标精度,则根据所述损失函数进行反向运算,获得梯度值;
所述压缩电路还用于对所述梯度值进行有损压缩编码;
所述解压电路还用于对所述有损压缩编码后的梯度值进行解压缩;
所述运算电路还用于根据所述解压缩后获得的梯度值更新所述神经网络的权值数据;
所述压缩电路还用于对所述权值数据进行有损压缩编码;
所述解压电路还用于对所述有损压缩编码后的权值数据进行解压缩;
之后,所述运算电路用于根据所述第二输入数据进行正向运算,获得正向运算结果,直至所述损失函数的值小于所述预设的目标精度。
18.根据权利要求13所述的处理器,其特征在于,所述主处理电路还用于根据所述正向运算结果与预设的目标运算结果,计算损失函数;
若所述主处理电路确定所述损失函数的值大于或等于预设的目标精度,则确定所述正向运算结果不满足所述预设需求;
若所述主处理电路确定所述损失函数的值小于所述预设的目标精度,则确定所述正向运算结果满足所述预设需求。
19.根据权利要求18所述的处理器,其特征在于,
在所述主处理电路确定所述损失函数的值大于或等于所述目标精度时,所述第三压缩电路还用于对所述损失函数进行有损压缩编码,并将所述有损压缩编码后获得的处于压缩状态的损失函数传送至各个所述第四解压电路;
各个所述第四解压电路分别用于对接收到的所述处于压缩状态的损失函数进行解压缩;
各个所述从处理电路分别用于根据解压缩后的所述损失函数进行反向运算得到第二中间结果;
各个所述第四压缩电路分别用于将所述第二中间结果进行有损压缩编码后传送至所述第三解压电路;所述第三解压电路还用于对各个所述从处理电路传送的第二中间结果进行解压缩;
所述主处理电路还用于根据解压缩后的第二中间结果获得梯度值;
所述主处理电路根据所述梯度值更新所述第二输入数据的权值数据,之后,所述主处理电路用于将所述第二输入数据的权值数据进行有损压缩,并将处于压缩状态的权值数据传送至各个所述从处理电路,直至所述损失函数的值小于所述预设的目标精度。
20.根据权利要求13所述的处理器,其特征在于,所述处理器的压缩电路、所述第三压缩电路和所述第四压缩电路均包括第一压缩率确定模块和至少一个压缩模块,各个所述压缩模块并联设置,各个所述压缩模块均连接至所述第一压缩率确定模块;
所述第一压缩率确定模块用于根据所述预设的目标精度确定目标压缩率,并根据所述目标压缩率从至少一个所述压缩模块中选定目标压缩模块;
各个压缩模块分别用于按照不同的压缩率进行有损压缩编码。
21.根据权利要求13所述的处理器,其特征在于,所述处理器的解压电路、所述第三解压电路和第四解压电路均包括第二压缩率确定模块以及至少一个解压模块,至少一个所述解压模块并联设置,各个所述解压模块均连接至所述第二压缩率确定模块;
所述第二压缩率确定模块用于根据目标压缩率从至少一个所述解压模块中选定目标解压模块;
各个所述解压模块分别用于解压不同压缩率的数据。
22.根据权利要求13-21任一项所述的处理器,其特征在于,所述有损压缩编码包括预测编码、脉冲编码调制、插值法、外推法、变换编码、子带编码、混合编码、矢量量化、分型编码的一种或多种的组合。
23.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
CN201811581510.7A 2018-12-07 2018-12-24 数据处理方法、装置、处理器和存储介质 Active CN111353594B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201811581510.7A CN111353594B (zh) 2018-12-24 2018-12-24 数据处理方法、装置、处理器和存储介质
PCT/CN2019/121056 WO2020114283A1 (zh) 2018-12-07 2019-11-26 数据处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811581510.7A CN111353594B (zh) 2018-12-24 2018-12-24 数据处理方法、装置、处理器和存储介质

Publications (2)

Publication Number Publication Date
CN111353594A CN111353594A (zh) 2020-06-30
CN111353594B true CN111353594B (zh) 2022-12-02

Family

ID=71197913

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811581510.7A Active CN111353594B (zh) 2018-12-07 2018-12-24 数据处理方法、装置、处理器和存储介质

Country Status (1)

Country Link
CN (1) CN111353594B (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10748062B2 (en) * 2016-12-15 2020-08-18 WaveOne Inc. Deep learning based adaptive arithmetic coding and codelength regularization
CN108665062B (zh) * 2018-04-28 2020-03-10 中国科学院计算技术研究所 一种基于小波变换减少io开销的神经网络处理系统
CN108764454B (zh) * 2018-04-28 2022-02-25 中国科学院计算技术研究所 基于小波变换压缩和/或解压缩的神经网络处理方法

Also Published As

Publication number Publication date
CN111353594A (zh) 2020-06-30

Similar Documents

Publication Publication Date Title
US20210125070A1 (en) Generating a compressed representation of a neural network with proficient inference speed and power consumption
CN111641832B (zh) 编码方法、解码方法、装置、电子设备及存储介质
CN102369522B (zh) 计算引擎的并行流水线式集成电路实现
WO2018011842A1 (ja) 階層ネットワークを用いた演算処理システム
KR20220137076A (ko) 이미지 프로세싱 방법 및 관련된 디바이스
WO2022028197A1 (zh) 一种图像处理方法及其设备
KR20200089635A (ko) 다수의 상이한 비트레이트로 영상 압축을 하기 위한 시스템들 및 방법들
CN110892419A (zh) 停止码容忍的图像压缩神经网络
WO2022155974A1 (zh) 视频编解码以及模型训练方法与装置
CN111045726B (zh) 支持编码、解码的深度学习处理装置及方法
EP3849180A1 (en) Encoding or decoding data for dynamic task switching
CN111353594B (zh) 数据处理方法、装置、处理器和存储介质
CN111353592B (zh) 数据处理方法、计算机系统及存储介质
CN106231322B (zh) 无损图像压缩方法及装置
CN112784956A (zh) 用于处理神经网络的数据的方法和设备
CN116600119A (zh) 视频编码、解码方法、装置、计算机设备和存储介质
CN111353593A (zh) 数据处理方法、装置、处理器和存储介质
JP2021072540A (ja) 画像符号化装置、復号装置、伝送システム、及びその制御方法
CN114501031B (zh) 一种压缩编码、解压缩方法以及装置
CN115913245A (zh) 数据编码方法、数据解码方法以及数据处理装置
CN113554719A (zh) 一种图像编码方法、解码方法、存储介质及终端设备
KR20210035678A (ko) 동영상 코딩을 위한 훈련된 심층 인공 신경망의 압축 장치 및 방법
CN117915107B (zh) 图像压缩系统、图像压缩方法、存储介质与芯片
US20230261673A1 (en) Machine Learning Based Codec
CN114727109B (zh) 多媒体的量化处理方法、装置及编码、解码设备

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