CN111353592B - 数据处理方法、计算机系统及存储介质 - Google Patents

数据处理方法、计算机系统及存储介质 Download PDF

Info

Publication number
CN111353592B
CN111353592B CN201811580866.9A CN201811580866A CN111353592B CN 111353592 B CN111353592 B CN 111353592B CN 201811580866 A CN201811580866 A CN 201811580866A CN 111353592 B CN111353592 B CN 111353592B
Authority
CN
China
Prior art keywords
processor
circuit
forward operation
data
lossy compression
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
CN201811580866.9A
Other languages
English (en)
Other versions
CN111353592A (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 CN201811580866.9A priority Critical patent/CN111353592B/zh
Priority to PCT/CN2019/121056 priority patent/WO2020114283A1/zh
Publication of CN111353592A publication Critical patent/CN111353592A/zh
Application granted granted Critical
Publication of CN111353592B publication Critical patent/CN111353592B/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为一个实施例中数据处理装置的结构框图;
图15为另一个实施例中数据处理方法的流程示意图;
图16为又一实施例中数据处理方法的流程示意图;
图17为一个实施例中数据处理方法中对神经网络进行训练或重训练的步骤的流程示意图;
图18为一个实施例中数据处理方法中对神经网络进行训练或重训练的步骤的流程示意图;
图19为一个实施例中数据处理方法中对神经网络进行训练或重训练的步骤的流程示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的数据处理方法,可以应用于如图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之前,上述方法还包括如下步骤:
获取神经网络的原始输入数据,该原始输入数据包括神经元数据和权值数据,该原始输入数据为未经有损压缩的数据;
对该原始输入数据进行有损压缩编码,获得第一输入数据。进一步地,对该原始输入数据进行有损压缩编码,获得第一输入数据的步骤,还可以包括:
根据预设的目标精度获得目标压缩率;
根据目标压缩率,对神经网络的原始输入数据进行有损压缩编码,获得处于压缩状态的第一输入数据。
可选地,处理器可以根据其接收到的原始输入数据,对该原始数据进行有损压缩编码,从而通过有损压缩降低数据量。具体地,处理器可以根据目标精度与目标压缩率之间的预设对应关系,确定目标压缩率。例如,目标精度与目标压缩率之间的预设对应关系可以是预设的数学公式对应关系。再如,目标精度与目标压缩率之间的预设对应关系可以是预设的映射表,此时,处理器可以根据预设的目标精度,通过查询该预设的映射表,获得目标压缩率,并根据该目标压缩率对其接收到的原始输入数据进行有损压缩编码。
可选地,可以通过其中一个处理器对其原始输入数据进行有损压缩编码,并将有损压缩编码后的第一输入数据传送至另一处理器上进行运算等操作。例如,第一处理器可以根据预设的目标精度确定目标压缩率,将原始输入数据进行有损压缩编码,并将有损压缩编码后的第一输入数据传送至第二处理器,该第二处理器可以是终端或云端服务器上的处理器,此处不做具体限定。第二处理器可以获得该第一输入数据的压缩率,并根据该第一输入数据的压缩率对该第一输入数据进行解压缩,从而获得第二输入数据。进一步地,该第二处理器可以根据第二输入数据对神经网络进行训练或重训练,直至神经网络的正向运算结果满足预设需求。
进一步地,当处理器的运算电路存在两个以上的处理电路时,该主处理电路可以根据预设的目标精度确定目标压缩率,并根据该目标压缩率对第二输入数据及损失函数等进行有损压缩编码。相应地,主处理电路还可以根据该目标压缩率对其接收的第一中间结果和第二中间结果等进行解压缩。可选地,各个从处理电路可以根据预设的目标精度确定目标压缩率,并根据该目标压缩率对第一中间结果和第二中间结果等数据进行有损压缩编码。相应地,各个从处理电路还可以根据该目标压缩率对其接收的输入数据及损失函数等进行解压缩。可选地,该预设的目标精度与目标压缩率之间的预设对应关系。例如,目标精度与目标压缩率之间的预设对应关系可以是预设的数学公式对应关系。再如,目标精度与目标压缩率之间的预设对应关系可以是预设的映射表,此时,主处理电路或从处理电路等可以根据预设的目标精度,通过查询该预设的映射表,获得目标压缩率。
可选地,上述任一实施例中采用的有损压缩编码可以包括预测编码、脉冲编码调制、插值法、外推法、变换编码、子带编码、混合编码、矢量量化、分型编码的一种或多种的组合。应当清楚的是,此处仅用以举例说明,并不构成对本申请的实质性限定,其他能够实现相同功能的有损压缩方式同样适用于本申请。
在一个实施例中,如图14所示,一种数据处理装置,所述装置包括:
获取模块,获取所述神经网络的第一输入数据,其中,所述第一输入数据为有损压缩编码后获得的处于压缩状态的数据;
解压模块,用于对所述第一输入数据进行解压缩,获得所述神经网络的第二输入数据;
训练模块,用于根据所述第二输入数据进行正向运算,获得正向运算结果;若所述正向运算结果不满足预设需求,则对所述神经网络进行重训练或训练,直至所述正向运算结果满足预设需求。
关于数据处理装置的具体限定可以参见上文中对于数据处理方法的限定,在此不再赘述。上述数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,第一处理器100可以设置在终端上,第二处理器200可以设置在云端服务器上,通过终端和云端服务器交互协同的方式实现对神经网络的训练或重训练。例如,终端的第一处理器100可以获得一处于收敛状态的神经网络,并对该神经网络执行正向运算,判断该神经网络的第一正向运算结果是否满足该终端的需求,当该神经网络的第一正向运算结果不满足终端的预设需求时,终端的第一处理器100可以对该神经网络的输入数据进行有损压缩编码,并将有损压缩编码后的神经网络的输入数据发送至云端服务器,以对该神经网络进行重训练。云端服务器的第二处理器200可以根据该有损压缩编码后的输入数据对该神经网络进行重训练,并对重训练好的神经网络进行有损压缩编码,并将该重训练后的神经网络回传给终端。从而使得重训练后的神经网络的精度能够满足终端的需求,以便终端能够应用该重训练好的神经网络实现相应的运算。
当然,该终端的第一处理器100也可以获得一未经训练的神经网络,该未经训练的神经网络的权值数据可以是随机数。此时,终端可以对该神经网络的输入数据进行有损压缩编码,并将有损压缩编码后的神经网络的输入数据发送至云端服务器。最后,云端服务器可以根据有损压缩编码后的神经网络进行训练,并对训练好的神经网络进行有损压缩编码,并将该训练后的神经网络回传给终端。从而使得训练后的神经网络的精度能够满足终端的需求,以便终端能够应用该训练好的神经网络实现相应的运算。
本申请实施例中,通过终端与云端服务器协同的方式,并在云端服务器实现对神经网络的训练或重训练过程,可以降低终端的运算量。同时,终端和云端服务器之间的传送的数据均为有损压缩编码后获得数据,从而可以减少数据的访存开销,提高该计算机系统的性能。
具体地,如图15所示,本申请实施例还提供了一种数据处理方法,该数据处理方法能够用于终端和云端服务器形成的计算机系统中。上述方法可以包括如下步骤:
S600、第一处理器根据获取的输入数据进行正向运算,获得第一正向运算结果。
可选地,该神经网络的输入数据可以是该神经网络的原始输入数据,也可以是是有损压缩编码后处于压缩状态后的第一输入数据,也可以是有损压缩编码后处于解压状态的第二输入数据,上述的神经网络的输入数据可以包括神经元数据和权值数据。当该输入数据为处于压缩状态的第一输入数据时,第一处理器还可以首先对该第一输入数据进行解压缩,获得第二输入数据,之后,根据解压缩之后的第二输入数据进行正向运算,获得第一正向运算结果。
S700、若第一处理器确定所述第一正向运算结果不满足预设需求,则第一处理器对输入数据进行有损压缩编码,并将有损压缩编码后的输入数据传送至第二处理器;其中,该输入数据包括输入神经元数据和权值数据。
S800、第二处理器对有损压缩编码后的输入数据进行解压缩,并根据有损压缩编码后的输入数据对神经网络进行训练或重训练,直至第二处理器获得的第二正向运算结果满足预设需求。
具体地,该第二处理器可以根据解压缩后的输入数据,对神经网络进行训练(此处的训练可以是指对未经训练的神经网络的训练,也可以是指对处于收敛状态的神经网络的重训练),直至该神经网络的第二正向运算结果满足预设需求。可选地,该第二处理器对神经网络的训练或重训练过程与上述步骤S400的执行过程基本一致。
若第一处理器确定该第一正向运算结果满足终端的预设需求,此时,第一处理器可以直接应用该神经网络实现相关的运算。
可选地,第一处理器可以该第一正向运算获得的损失函数的值确定该第一正向运算结果是否满足终端的预设需求。具体地,如图16所示,上述方法还包括:
S610、第一处理器根据第一正向运算结果与预设的目标运算结果,获得第一损失函数;
可选地,上述步骤S610可以包括如下步骤:
第一处理器上的第一压缩电路可以对第一正向运算结果进行有损压缩编码,进一步地,第一压缩电路可以确定目标压缩率,并根据目标压缩率对第一正向运算结果进行有损压缩编码。之后,第一处理器上的第一解压电路可以对有损压缩后的第一正向运算结果进行解压缩,并根据解压缩后的第一正向运算结果确定第一损失函数。该确定第一损失函数的过程与上述步骤S510类似,具体可参见上文的描述。
S620、第一处理器判断该第一损失函数的值是否小于预设的目标精度;
若第一损失函数的值大于或等于预设的目标精度,则执行步骤S621,确定该第一正向运算结果不满足终端的预设需求;若第一损失函数的值小于预设的目标精度,则确定该第一正向运算结果不满足终端的预设需求。其中,该预设的目标精度可以根据第一处理器的实际需求确定,也可以根据先验知识确定,此处不做具体限定。
可选地,上述神经网络可以是处于收敛状态的神经网络,也可以是未经训练的神经网络,该未经训练的神经网络的权值数据为随机数。当该神经网络为未经训练的神经网络时,第一处理器还可以不执行上述正向运算过程,直接将该神经网络的输入神经元数据及权值数据进行有损压缩后传送至第二处理器。
在一个实施例中,当第一处理器确定该第一正向运算结果不满足预设需求时,则可以该神经网络的输入数据进行有损压缩编码,并将该有损压缩编码后的输入数据传送至第二处理器上进行训练或重训练。具体地,如图17所示,上述步骤S800可以包括如下步骤:
S822、第二处理器根据有损压缩编码的输入数据进行正向运算,获得第二正向运算结果;
S823、第二处理器根据第二正向运算结果确定第二损失函数;
S824、第二处理器判断第二损失函数的值是否小于预设的目标精度;
若第二损失函数的值大于或等于预设的目标精度,则执行如下步骤:
S825、第二处理器根据第二损失函数进行反向运算,获得梯度值;
S826、第二处理器根据梯度值更新有损压缩编码后的输入数据的权值数据,获得更新后的权值数据,之后,返回上述步骤S822,第二处理器根据有损压缩编码后的输入数据进行正向运算,获得第二正向运算结果的步骤,直至第二正向运算结果满足预设需求。
若第二损失函数的值小于预设的目标精度,表明该第二正向运算结果满足终端的预设需求,完成该神经网络的训练或重训练。
本申请实施例中,上述步骤S822~步骤S826的执行过程,与上述实施例中的步骤S300、步骤S500及步骤S400的执行过程类似,具体可参见上文中的描述。
在另一个实施例中,如图18所示,上述步骤S700可以包括步骤S710,第一处理器对输入数据以及第一损失函数进行有损压缩编码,获得交互数据,并将交互数据传送至第二处理器。这样,第二处理器可以根据其获取的交互数据进行反向运算,而无需通过重复执行一次正向运算确定神经网络的精度,减小了运算量,提高神经网络的训练或重训练的效率。
进一步地,上述步骤S800可以包括:
S801、第二处理器对第一处理器传送的交互数据进行解压缩;
S802、第二处理器根据解压缩后获得的第一损失函数的值对神经网络进行反向运算,获得梯度值;
S803、第二处理器根据梯度值更新输入数据中的权值数据,获得更新后的权值数据;
S804、第二处理器根据更新后的权值数据对神经网络进行正向运算,获得第二正向运算结果;
S805、第二处理器根据第二正向运算结果和预设的目标运算结果,获得第二损失函数;
S806,第二处理器判断第二损失函数的值是否小于预设的目标精度;
第二处理器在第二损失函数的值大于或等于预设的目标精度时,执行步骤S807,第二处理器根据第二损失函数的值对神经网络进行反向运算,获得梯度值,之后返回步骤S803,第二处理器根据梯度值更新输入数据的权值数据,获得更新后的权值数据的步骤,直至第二损失函数的值小于预设的目标精度。
本申请实施例中,步骤S801~步骤S807中对神经网络的正向运算及反向运算的过程,与上述实施例中的步骤S300~步骤S500的执行过程类似,具体可参见上文中的描述。
可选地,上述步骤S823或步骤S805还可以包括:
第二处理器对所述第二正向运算结果进行有损压缩编码后在对所述第二正向运算结果进行解压缩。具体地,每当第二处理器完成一次正向运算,则第二处理器可以对其获得的第二正向运算结果进行有损压缩编码,以减少数据量,降低数据访存开销。进一步地,第二处理器可以根据预设的目标精度确定目标压缩率,并根据该目标压缩率对第二正向运算结果进行有损压缩编码。之后,第二处理器可以对该有损压缩后的第二正向运算结果进行解压缩,以根据解压缩的数据进行相应的运算。
第二处理器根据解压缩后的第二正向运算结果确定第二损失函数。具体地,第二损失函数的确定方式与上文中损失函数的确定方式一致,具体可参见上文的图11所示的实施例中的描述。
可选地,上述步骤S826或S803还可以包括:
第二处理器对所述梯度值进行有损压缩编码后再对所述有损压缩编码后的梯度值进行解压缩,根据所述解压缩后获得的梯度值更新所述权值数据,获得更新后的权值数据。
具体地,第二处理器每完成一次反向运算,则第二处理器可以对反向运算获得的梯度值进行有损压缩编码。进一步地,第二处理器可以确定目标压缩率,并根据目标压缩率对该梯度值进行有损压缩编码。之后,第二处理器可以对该梯度值进行解压缩,以便根据该解压缩后的梯度值更新权值数据。具体可参见图12所示的实施例中的描述。
可选地,上述步骤S822或S804还可以包括:
第二处理器对所述权值数据进行有损压缩编码后再对所述有损压缩编码后的权值数据进行解压缩;之后返回第二处理器根据解压缩后的所述权值数据进行正向运算,获得第二正向运算结果。具体地,每当完成一次权值数据的更新,则第二处理器可以对权值数据进行有损压缩编码。之后,第二处理器可以对有损压缩编码后的权值数据进行解压缩,并根据该解压缩的权值数据再次进行正向运算,直至第二正向运算结果满足终端的预设需求。具体可参见图12所示的实施例中的描述。
在一个实施例中,第二处理器包含至少两个处理电路,至少两个处理电路包括主处理电路和从处理电路;如图19所示,上述步骤S800可以包括:
S814、主处理电路对权值数据进行有损压缩编码,并将处于压缩状态的权值数据传送至各个从处理电路。可选地,该权值数据可以是输入数据中包含的初始权值数据,也可以是根据第一损失函数更新后的权值数据。
S815、各个从处理电路分别对接收到的处于压缩状态的权值数据进行解压缩,并根据解压缩后的权值数据对神经网络进行正向运算得到第一中间结果,将第一中间结果进行有损压缩编码后传送至主处理电路。
S816、主处理电路对各个从处理电路传送的第一中间结果进行解压缩,并根据解压缩后的第一中间结果获得正向运算结果。
S817、主处理电路根据该正向运算结果和预设的目标运算结果计算第二损失函数。
S818、主处理电路判断第二损失函数的值是否大于或等于预设的目标精度。
若主处理电路在确定第二损失函数的值大于或等于目标精度时,则执行步骤S819、主处理电路对第二损失函数进行有损压缩编码,并将有损压缩编码后获得的处于压缩状态的第二损失函数传送至各个从处理电路。
S820、各个从处理电路分别对接收到的处于压缩状态的第二损失函数进行解压缩,并根据解压缩后的第二损失函数对神经网络进行反向运算得到第二中间结果,将第二中间结果进行有损压缩编码后传送至主处理电路。
S821、主处理电路对各个从处理电路传送的第二中间结果进行解压缩,并根据解压缩后的第二中间结果获得梯度值,并根据梯度值更新输入数据中的权值数据,获得更新后的权值数据。之后,返回步骤S814,主处理电路将输入数据的权值数据进行有损压缩,并将处于压缩状态的权值数据传送至各个从处理电路的步骤。
可选地,当该权值数据为根据第一损失函数更新后的权值数据时,在上述步骤S814之前,还可以包括如下步骤:
S811、主处理电路获取交互数据,并将交互数据传送至各个从处理电路;具体地,主处理电路可以将交互数据分为多块,并向各个从处理电路发送至少一块交互数据。
S812、各个从处理电路分别对该交互数据进行解压缩,并根据解压缩后获得的第一损失函数的值对神经网络进行反向运算,获得中间计算结果,并将中间计算结果进行有损编码后传送至主处理电路。该中间计算结果可以是各个从处理电路执行反向运算获得的各层的梯度值。
S813、主处理电路可以根据上述中间计算结果计算获得梯度值,并根据梯度值更新输入数据中的权值数据,获得更新后的权值数据。
本申请实施例中,步骤S813~步骤S821中对神经网络的正向运算及反向运算的过程,与图13所示的实施例中的各个步骤的执行过程类似,具体可参见上文中的描述。
进一步地,上述方法还包括:
第二处理器在确定神经网络的精度小于预设的目标精度时,对神经网络进行有损压缩编码,并将有损压缩编码后的神经网络传送至第一处理器。本申请实施例中,对神经网络进行有损压缩编码,可以是对训练或重训练完毕的神经网络的权值数据进行有损压缩编码的过程。
应该理解的是,虽然图8-图19的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图8-图19中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求上述任一实施例所述的方法的步骤。具体地,当该计算机程序被处理器执行时,可以实现如下步骤:
第一处理器根据获取的神经网络的输入数据进行正向运算,获得第一正向运算结果;
若所述第一处理器确定所述第一正向运算结果不满足预设需求,则所述第一处理器对所述输入数据进行有损压缩编码,并将所述有损压缩编码后的输入数据传送至第二处理器;
所述第二处理器对所述有损压缩编码的输入数据进行解压缩,并根据所述有损压缩编码的输入数据对所述神经网络进行训练或重训练,直至所述第二处理器获得的第二正向运算结果满足所述预设需求。
应当清楚的是,本申请实施例中,计算机程序被处理器执行实现的各个步骤,与上述方法中各个步骤的执行过程一致,具体可参见上文中的描述,此处不再赘述。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (24)

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

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201811580866.9A CN111353592B (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
CN201811580866.9A CN111353592B (zh) 2018-12-24 2018-12-24 数据处理方法、计算机系统及存储介质

Publications (2)

Publication Number Publication Date
CN111353592A CN111353592A (zh) 2020-06-30
CN111353592B true CN111353592B (zh) 2022-12-02

Family

ID=71195455

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811580866.9A Active CN111353592B (zh) 2018-12-07 2018-12-24 数据处理方法、计算机系统及存储介质

Country Status (1)

Country Link
CN (1) CN111353592B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115474045A (zh) * 2021-06-11 2022-12-13 微软技术许可有限责任公司 图像编解码

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108764454A (zh) * 2018-04-28 2018-11-06 中国科学院计算技术研究所 基于小波变换压缩和/或解压缩的神经网络处理方法
CN108805259A (zh) * 2018-05-23 2018-11-13 北京达佳互联信息技术有限公司 神经网络模型训练方法、装置、存储介质及终端设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180075347A1 (en) * 2016-09-15 2018-03-15 Microsoft Technology Licensing, Llc Efficient training of neural networks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108764454A (zh) * 2018-04-28 2018-11-06 中国科学院计算技术研究所 基于小波变换压缩和/或解压缩的神经网络处理方法
CN108805259A (zh) * 2018-05-23 2018-11-13 北京达佳互联信息技术有限公司 神经网络模型训练方法、装置、存储介质及终端设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
面向移动设备的深度学习部署运算优化技术;熊伟;《电子制作》;20170615(第12期);第94-96页 *

Also Published As

Publication number Publication date
CN111353592A (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
US20220103839A1 (en) Instance-adaptive image and video compression using machine learning systems
KR102618558B1 (ko) 조건부 오토인코더를 이용한 가변-레이트 압축을 위한 장치 및 방법
CN112149797B (zh) 神经网络结构优化方法和装置、电子设备
CN111723933A (zh) 神经网络模型的训练方法和相关产品
EP3849180A1 (en) Encoding or decoding data for dynamic task switching
KR20200089635A (ko) 다수의 상이한 비트레이트로 영상 압축을 하기 위한 시스템들 및 방법들
JP2021131876A (ja) 情報処理装置、情報処理方法およびプログラム
WO2022028197A1 (zh) 一种图像处理方法及其设备
CN104539948A (zh) 视频处理系统和视频处理方法
WO2022155974A1 (zh) 视频编解码以及模型训练方法与装置
CN111353592B (zh) 数据处理方法、计算机系统及存储介质
CN114698395A (zh) 神经网络模型的量化方法和装置、数据处理的方法和装置
CN111353594B (zh) 数据处理方法、装置、处理器和存储介质
US20240007827A1 (en) Method and apparatus for resource-efficient indoor localization based on channel measurements
CN112784956A (zh) 用于处理神经网络的数据的方法和设备
CN111050177A (zh) 视频编码、视频解码方法、装置、计算机设备和存储介质
CN111353593A (zh) 数据处理方法、装置、处理器和存储介质
EP4362365A1 (en) Method for feeding back channel state information, method for receiving channel state information, and terminal, base station, and computer-readable storage medium
CN114501031B (zh) 一种压缩编码、解压缩方法以及装置
JP2021072540A (ja) 画像符号化装置、復号装置、伝送システム、及びその制御方法
US20230100413A1 (en) Transformer-based architecture for transform coding of media
WO2022236785A1 (zh) 信道信息的反馈方法、收端设备和发端设备
US20210319358A1 (en) Learning apparatus, communication system, and learning method
CN116644783A (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