JP7177000B2 - 演算装置および演算方法 - Google Patents

演算装置および演算方法 Download PDF

Info

Publication number
JP7177000B2
JP7177000B2 JP2019092626A JP2019092626A JP7177000B2 JP 7177000 B2 JP7177000 B2 JP 7177000B2 JP 2019092626 A JP2019092626 A JP 2019092626A JP 2019092626 A JP2019092626 A JP 2019092626A JP 7177000 B2 JP7177000 B2 JP 7177000B2
Authority
JP
Japan
Prior art keywords
bit
bits
convolution
reduction
weight
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
JP2019092626A
Other languages
English (en)
Other versions
JP2020187608A5 (ja
JP2020187608A (ja
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.)
Hitachi Astemo Ltd
Original Assignee
Hitachi Astemo 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 Hitachi Astemo Ltd filed Critical Hitachi Astemo Ltd
Priority to JP2019092626A priority Critical patent/JP7177000B2/ja
Priority to US17/610,251 priority patent/US11886874B2/en
Priority to PCT/JP2020/015878 priority patent/WO2020230488A1/ja
Priority to CN202080031698.7A priority patent/CN113785312B/zh
Publication of JP2020187608A publication Critical patent/JP2020187608A/ja
Publication of JP2020187608A5 publication Critical patent/JP2020187608A5/ja
Application granted granted Critical
Publication of JP7177000B2 publication Critical patent/JP7177000B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Software Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)

Description

本発明は、畳み込み演算を実行する演算装置および演算方法に関する。
DNN(Deep Neural Network)を用いた物体認識や行動予測等の自動運転への適用が進展している。DNNを車載用ECU(Electronic Control Unit)に実装する際には回路実装規模の削減が必要となる。回路実装規模の制約からDNNの実装は層ごとに行われ、層ごとに入力パラメータを変更することで同一回路で畳み込み演算が実行される。DNNの畳み込み演算ではオーバーフローが発生する可能性があり、その対策に畳み込み演算器のビット数および回路実装規模を増加する必要がある。DNNのオーバーフローの判定結果は層ごとに異なるため、最適な畳み込み演算器のビット数は層ごとに異なる。回路実装上は、一番条件が厳しい層に合わせて回路実装規模を選択する必要がある。
特許文献1の回路設計方法は、所望のデジタル信号処理に関してオーバーフロー判定する対象演算にディレクティブを付加しつつプログラムを作成し、このプログラムに基づいて動作合成を行い、ディレクティブが付加された対象演算に対してオーバーフロー検出回路を付加してRTL回路を生成する。
特開2009‐48367号公報
上述した特許文献1の回路設計方法は、回路設計時にオーバーフロー判定回路を付与し実際に演算を行った後にオーバーフローを判定する。したがって、演算を行うまでオーバーフローが発生するかがわからず、回路実装後にオーバーフローが発生する場合は対策することができない。また、特許文献1の回路設計方法は、オーバーフローの判定を行い、判定結果に基づいて演算器のビット数を増加させる。したがって、畳み込み演算器の回路規模が増加する。
本発明は、畳み込み演算装置でのオーバーフローの発生を未然に抑制することを目的とする。
本願において開示される発明の一側面となる演算装置は、ニューラルネットワークを構成する複数の畳み込み層の各々でフィルタと前記フィルタのサイズ分の対象データとの畳み込み演算を畳み込み演算器で実行する演算装置であって、前記畳み込み層ごとに、前記対象データの最下位ビットから第1ビット数分のビット列を削減し、前記フィルタの要素である重みの最下位ビットから第2ビット数分のビット列を削減するビット削減部と、前記ビット削減部による削減後の前記対象データおよび前記重みが前記畳み込み演算器に入力されたことにより前記畳み込み演算器から出力された畳み込み演算結果の最下位ビットに、前記第1ビット数および前記第2ビット数を合計した第3ビット数分のビット列を追加するビット追加部と、を有することを特徴とする。
本発明の代表的な実施の形態によれば、畳み込み演算器でのオーバーフローの発生を未然に抑制することができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
図1は、外界認識をするためのCNNを示す説明図である。 図2は、図1に示した畳み込み演算例を示す説明図である。 図3は、図2の部分拡大図である。 図4は、ビットシフト例を示す説明図である。 図5は、実施例1にかかる演算装置の構成例を示すブロック図である。 図6は、実施例1にかかる演算装置の演算処理手順例を示すフローチャートである。 図7は、実施例2にかかるビットシフト例を示す説明図である。 図8は、ビット列の探索例を示す説明図である。 図9は、実施例4にかかる演算装置の構成例を示すブロック図である。 図10は、オーバーフロー判定結果テーブルの一例を示す説明図である。 図11は、実施例4にかかる演算装置の演算処理手順例を示すフローチャートである。
<CNN>
図1は、外界認識をするためのCNN(Convolutional Neural Network)を示す説明図である。CNN100は、L個(Lは2以上の整数)の畳み込み層を含む畳み込みニューラルネットワークである。図1では畳み込み層以外のプーリング層や全結合層、出力層は省略する。CNN100は、たとえば、画像データ102が入力されると、L個の畳み込み層C1~CLにより順次畳み込み演算を実行して、画像データ102に表示されている物体の認識結果105を出力する。任意の層番号jである第j層の畳み込み層を、第j畳み込み層Ci(1≦j≦L)または畳み込み層Cjと称す。
ここで、第1畳み込み層C1(j=1)を例に挙げて畳み込み演算を説明する。CNN100は、第1畳み込み層C1に対応する重みフィルタ110を学習済みモデル101から取得する。学習済みモデル101は、畳み込み層Ciごとに異なる重みフィルタ110を有する。重みフィルタ110は、たとえば、n×n(nは1以上の整数)の重み行列Wで表現される。n×nは、畳み込み演算での積和演算での加算回数となる。図1では、例としてn=3とし、9個の要素である重みwa~wiを含む。
する。
CNN100は、畳み込み演算器103により、画像データ102内の重み行列Wと同じn×nである対象領域120の画素a~iと、重み行列Wと、を用いて、畳み込み演算を実行し、対象領域120の畳み込み演算結果140を出力する。CNN100は、畳み込み演算器103により、重み行列Wを画像データ102内でラスタスキャンしながら対象領域120ごとに畳み込み演算結果140を出力することで、畳み込み演算結果104を後段の第2畳み込み層C2に出力する。CNN100の計算量は膨大になるため、CNN100は、各対象領域120で積和演算する際に、CNN100内の加算器にオーバーフローが発生することがある。
<畳み込み演算例>
図2は、図1に示した畳み込み演算例を示す説明図である。図3は、図2の部分拡大図である。図2および図3において、(A)は、画素および重みを示す各ビット列に対してビットシフトおよびビット逆シフトをしない場合の畳み込み演算例を示し、(B)は、画素および重みを示す各ビット列に対してビットシフトおよびビット逆シフトをする場合の畳み込み演算例を示す。
画素a~iの値を表現するためのビット幅である各ビット数piは同一ビット数とは限らないが、本例では、便宜上、いずれの画素a~iのビット数もpiと表記する。同様に、重みwa~wiの値を表現するためのビット幅である各ビット数pwも同一ビット数とは限らないが、本例では、便宜上、いずれの重みwa~wiのビット数もpwと表記する。
図2(A)において、畳み込み演算器103は、第j畳み込み層Cjにおいて、積和演算器で畳み込み演算の乗算と加算を逐次演算する。畳み込み演算器103は、乗算器201と、加算器202と、格納レジスタ203と、出力レジスタ204と、を有する。乗算器201は、2入力1出力の回路である。乗算器201は、(1)対象領域120からのビット数piの画素(たとえば、画素b)と、(2)当該画素に対応する重み行列Wの要素であるビット数pwの重み(たとえば、重みwb)と、を入力して、(3)ビット数(pi+pw)の乗算結果(たとえば、b×wb)を出力する。
加算器202は、(3)乗算結果(たとえば、b×wb)と、(4)1画素前の累積加算結果(たとえば、a×wa)と、を加算して、(5)最新の累積加算結果(たとえば、a×wa+b×wb)を格納レジスタ203に出力する。加算器202の最大ビット数をMビットとする。Mは1以上の整数である。累積加算結果のビット数は、2回目(k=1,2,3,…)の加算ごとに繰り上がる。
格納レジスタ203は、(5)最新の累積加算結果を格納する。出力レジスタ204は、加算回数n×nの加算の終了時、すなわち、対象領域120での畳み込み演算の終了時での最新の累積加算結果を格納レジスタ203から取得して、出力データ格納レジスタ205に出力する。
畳み込み演算前、すなわち、0回目の加算では、(1)のビット数pi、(2)のビット数pw、(3)のビット数(pi+pw)、(4)の1画素前の累積加算結果のビット数、および(5)の加算累積結果のビット数は、いずれも0ビットである。
加算回数n×n=1回目の演算では、畳み込み演算器103は、(1)ビット数piの画素aと(2)ビット数pwの重みwaとの(3)乗算結果a×wa(ビット数(pi+pw))を出力する。(4)対象領域120の最初の画素aであるため、1画素前の加算累積結果は存在しない。このため、(5)最新の加算累積結果は、ビット数(pi+pw)の乗算結果a×waとなる。
加算回数n×n=2回目の演算では、畳み込み演算器103は、(1)ビット数piの画素bと(2)ビット数pwの重みwbとの(3)乗算結果b×wb(ビット数(pi+pw))を出力する。(4)1画素前の加算累積結果は、ビット数(pi+pw)の乗算結果a×waである。このため、(5)最新の加算累積結果は、ビット数(pi+pw+1)の乗算結果(a×wa+b×wb)となる。図3の(A)に示すように、このような処理を、畳み込み演算器103は、画素iまで実行する。
このように、畳み込み演算器103は、畳み込み演算を加算回数n×n回目まで繰り返す。この場合、n×n回目の加算終了時の(5)加算累積結果のビット数Nmaxが加算器202のビット数Mよりも大きくなると、オーバーフローが発生し、計算精度が低下する。オーバーフロー分のビット数をs(sは、s>0を満たす整数)とすると、オーバーフローの発生を防止するためには、畳み込み演算器103の加算器202のビット数Mを、MビットからM+sビットに変更しなければならない。
より具体的には、畳み込み層Cjごとにオーバーフローの発生条件(加算回数n×n、画素や重みの入力ビット数)が異なる。したがって、全畳み込み層C1~CLの中でオーバーフローの条件が一番厳しい畳み込み層Cjに合わせて加算器202のビット数Mを調整する必要がある。これにより、回路規模が増大する。具体的には、たとえば、各畳み込み層Cjのオーバーフロー分のビット数をsj(1≦j≦L)とした場合に、オーバーフロー分のビット数s1~sLのうち最大のビット数をsとする。この場合、オーバーフローの発生を防止するためには、畳み込み演算器103の加算器202のビット数Mを、MビットからM+sビットに変更しなければならない。
図2の(B)において、畳み込み演算器103の前段にビットシフト器211i,211wが設けられ、畳み込み演算器103の後段にビット逆シフト器212が設けられる。ビットシフト器211iは、siビット数分、画素のビット数piをシフトする。ビットシフト器211wは、swビット数分、重みのビット数pwをシフトする。なお、ビット数si,swの関係は、下記式(1)を充足すればよい。
s=si+sw>0・・・(1)
図4は、ビットシフト例を示す説明図である。第1ビットシフト器211iは、最上位ビットMSB(Most Significant Bit)から最下位ビットLSB(Least Significant bit)への方向に画素のビット列をsiビット分シフトすることにより、画素の下位siビットを削減する。第2ビットシフト器211wは、重みのビット数pwを最上位ビットMSBから最下位ビットLSBへの方向にswビット分シフトすることにより、重みの下位swビットを削減する。
これにより、図2(B)に示したように、(1)´第1ビットシフト器211iはビット数(pi-si)またはビット数piの画素を乗算器201に出力し、(2)´第2ビットシフト器211wはビット数(pw-sw)またはビット数pwの重みを乗算器201に出力する。
加算回数n×n=1回目の演算では、畳み込み演算器103は、(1)´ビット数pi-siの画素aと(2)´ビット数pw-swの重みwaとの(3)乗算結果a×wa(ビット数(pi+pw-s))を出力する。(4)対象領域120の最初の画素aであるため、1画素前の加算累積結果は存在しない。このため、(5)最新の加算累積結果は、ビット数(pi+pw-s)の乗算結果a×waとなる。
加算回数n×n=2回目の演算では、畳み込み演算器103は、(1)´ビット数pi-siの画素bと(2)´ビット数pw-swの重みwbとの(3)乗算結果b×wb(ビット数(pi+pw-s))を出力する。(4)1画素前の加算累積結果は、ビット数(pi+pw-s)の乗算結果a×waである。このため、(5)最新の加算累積結果は、ビット数(pi+pw-s+1)の乗算結果(a×wa+b×wb)となる。図3の(B)に示すように、このような処理を、畳み込み演算器103は、画素iまで実行する。
このように、畳み込み演算器103は、畳み込み演算を加算回数n×n回目まで繰り返す。この場合、n×n回目の加算終了時の(5)加算累積結果のビット数Nmaxが加算器202のビット数Mよりも大きくなると、オーバーフローが発生し、計算精度が低下するが、各加算回において、シフトする累積削減ビット数s(=si+sw)が、下記式(2)の条件を充足すれば、オーバーフローが発生しない。
s=Nmax-M・・・(2)
Nmaxは、(5)加算累積結果のビット数である。上記式(2)を充足するように、第1ビットシフト器211i,第2ビットシフト器211wで画素および重みの各ビット列をビットシフトすることにより、オーバーフローを回避することができる。このあと、CNN100は、ビット逆シフト器212で、加算回ごとに(5)加算累積結果のビット列をビット数s分、逆シフトする。逆シフトとは、(5)加算累積結果のビット列を、最下位ビットLSBから最上位ビットMSBへの方向にsビット分シフトすることである。
これにより、(5)加算累積結果のビット列に、sビット分の下位ビットが追加される。この追加されたsビット分の下位ビットの値は任意に設定される。このように、画素および重みについて畳み込み演算に先立ってビット数削減することで、畳み込み演算器103のオーバーフローを回避することができる。これにより、畳み込み演算器103の計算精度の低下を抑制し、畳み込み演算器103の回路規模を削減することができる。
より具体的には、畳み込み層Cjごとにオーバーフローの発生条件(加算回数n×n、画素や重みの入力ビット幅)が異なる場合でも、全畳み込み層C1~CLの中でオーバーフローの条件が一番厳しい畳み込み層Cjに合わせて加算器202のビット数Mを調整する必要はなく、シフトする累積削減ビット数sを層jごとに動的に変化させればよい。
<演算装置の構成例>
図5は、実施例1にかかる演算装置の構成例を示すブロック図である。演算装置500は、データ入力部501と、フィルタ格納部502と、判定器503と、削減ビット数計算器504と、ビット削減部505と、畳み込み演算器103と、ビット逆シフト器212と、出力加算器506と、出力データ格納レジスタ205と、を有する。データ入力部501、フィルタ格納部502、判定器503、削減ビット数計算器504、ビット削減部505、畳み込み演算器103、ビット逆シフト器212、出力加算器506、および出力データ格納レジスタ205は、具体的には、たとえば、LSI(Large-scale Integrated Circuit)またはメモリにより実現される。
データ入力部501は、データの入力を受け付ける。データ入力部501に入力されたデータを「入力データ」と称す。たとえば、データ入力部501は、演算装置500に接続されたカメラ(不図示)から出力された画像データ102の入力を受け付ける。この場合、画像データ102は入力データである。また、データ入力部501は、出力データ格納レジスタ205に格納されている最新の加算累積結果(図2(B)の(5)を参照)の入力も受け付ける。この最新の加算累積結果も入力データである。
データ入力部501は、入力データ分岐器511と、入力データ格納レジスタ512と、を有する。入力データ分岐器511は、CNN100の層番号jに基づいて、入力データ格納レジスタ512に出力する入力データを、画像データ102または最新の加算累積結果のいずれかに切り替える。具体的には、たとえば、畳み込み層Cjの層番号jがj=1であれば、入力データ分岐器511は、画像データ102を入力データ格納レジスタ512に出力し、層番号jがj≧2であれば、入力データ分岐器511は、最新の加算累積結果を入力データ格納レジスタ512に出力する。なお、層番号jは、入力データの畳み込み演算が完了するとインクリメントされる。
入力データ格納レジスタ512は、入力データ分岐器511からの入力データを格納する。入力データ格納レジスタ512は、パラメータ格納レジスタ522からの現在の層番号jに対応する重みサイズn×nに応じて、重みフィルタ110との畳み込み対象となる対象領域120を選択して、判定器503および第2ビットシフト器211iに出力する。
フィルタ格納部502は、畳み込み層Cjごとの重みフィルタ110を格納する。具体的には、たとえば、フィルタ格納部502は、アドレスデコーダ521と、パラメータ格納レジスタ522と、を有する。アドレスデコーダ521は、畳み込み層Cjの層番号jに対応するアドレス情報adjをパラメータ格納レジスタ522に出力する。パラメータ格納レジスタ522は、畳み込み演算器103内の加算器202のビット数Mを格納する。また、パラメータ格納レジスタ522は、アドレス情報adjごとに、画素のビット数piと、重みのビット数pwと、重み行列Wと、重みサイズn×nと、を格納する。
判定器503は、対象領域120の畳み込み演算において、畳み込み演算器103でオーバーフローを発生させないために必要な加算器202のビット数Nmaxを算出する。ビット数Nmaxは、たとえば、下記式(3)により算出される。
Nmax=(pi+pw)+log(n)・・・(3)
そして、判定器503は、上記式(3)で算出したビット数Nmaxと加算器202のビット数Mとに基づいて、下記式(4)により、畳み込み演算器103でオーバーフローが発生するか否かを事前に判定する。
M<Nmax・・・(4)
判定器503は、M<Nmaxである場合、対象領域120の畳み込み演算において、畳み込み演算器103でオーバーフローが発生すると判定し、M<Nmaxでない場合、対象領域120の畳み込み演算において、畳み込み演算器103でオーバーフローが発生しないと判定する。
削減ビット数計算器504は、累積削減ビット数sを計算して、ビット逆シフト器212に出力する。累積削減ビット数sとは、画素削減ビット数siと重み削減ビット数swとの合計値である(s=si+sw)。画素削減ビット数siとは、ビット数piの画素のビット列を、最上位ビットMSBから最下位ビットLSBへの方向にシフトするビット数である。最下位ビットLSBからあふれた画素削減ビット数si分のビット列が、ビット数piの画素のビット列から削減される。
重み削減ビット数swとは、ビット数pwの重みを、最上位ビットMSBから最下位ビットLSBへの方向にシフトするビット数である。最下位ビットLSBからあふれた重み削減ビット数sw分のビット列が、ビット数pwの重みのビット列から削減される。累積削減ビット数sに占める画素削減ビット数siおよび重み削減ビット数swの割合は、任意に設定される。画素削減ビット数siおよび重み削減ビット数swのいずれか一方が0でもよい。
具体的には、たとえば、削減ビット数計算器504は、判定器503によってM<Nmaxでないと判定された場合、累積削減ビット数sを0ビットに設定する。一方、削減ビット数計算器504は、判定器503によってM<Nmaxであると判定された場合、下記式(5)により、累積削減ビット数sを算出する。
s=log(|n-2(M-(pi+pw))|)・・・(5)
右辺の「2(M-(pi+pw)」は、Mビットの加算器202で画素と重みの乗算結果(ビット数pi+pw)が何回累積加算可能かを示す。すなわち、「M-(pi+pw)」は、Mbitの加算器202で乗算結果(ビット数pi+pw)を累積加算するときのオーバーフローまでのビット余裕(図2の(B)の(1)および(2)を参照)を示す。上記式(5)の累積削減ビット数sの計算結果が整数であれば、そのまま採用される。上記式(5)の累積削減ビット数sの計算結果が小数を含む場合は、切り上げ後の値が累積削減ビット数sとして採用される。たとえば、上記式(5)の算出結果が「5.4」であれば、切り上げ後の値である「6」が累積削減ビット数sとして採用される。
また、削減ビット数計算器504は、画素削減ビット数siを第1ビットシフト器211iに出力し、重み削減ビットswを第2ビットシフト器211wに出力する。
ビット削減部505は、第1ビットシフト器211iと第2ビットシフト器211wとを有する。第1ビットシフト器211iは、対象領域120の画素を順次受け付け、当該画素を、画素削減ビット数si分最上位ビットMSBから最下位ビットLSBへの方向にシフトする。
第1ビットシフト器211iは、ビットシフト後のビット数(pi-si)の画素を畳み込み演算器103に出力する。第2ビットシフト器211wは、重み行列Wの要素である重みwa~wiを順次受け付け、当該重みを、重み削減ビット数sw分最上位ビットMSBから最下位ビットLSBへの方向にシフトする。第2ビットシフト器211wは、ビットシフト後のビット数(pw-sw)の重みを畳み込み演算器103に出力する。
畳み込み演算器103は、図2の(B)に示したように、第1ビットシフト器211iからの画素と第2ビットシフト器211wからの重みとを順次受け付けて畳み込み演算を実行する。畳み込み演算器103は、対象領域120の畳み込み演算結果を加算器202およびビット逆シフト器212に出力する。
ビット逆シフト器212は、畳み込み演算器103からの対象領域120の加算累積結果を、累積削減ビット数s分、最下位ビットLSBから最上位ビットMSBへの方向に逆シフトする。ビット逆シフト後の最下位ビットLSBからの累積削減ビット数s分の空白ビット列には、所定の値(たとえば、0)がパディングされる。このように、ビット逆シフト器212は、累積削減ビット数s分のビット列を追加するビット追加部として機能する。
出力加算器506は、ビット逆シフト後の対象領域120の加算累積結果を、出力データ格納レジスタ205に格納されている最新の加算累積結果に加算する。出力データ格納レジスタ205は、最新の加算累積結果を格納する。最新の加算累積結果は、出力加算器506により対象領域120の加算累積結果が加算されることで更新される。出力データ格納レジスタ205は、層番号jが更新されるとリセットされる。
<演算装置500の演算処理手順例>
図6は、実施例1にかかる演算装置500の演算処理手順例を示すフローチャートである。演算装置500は、第j畳み込み層Cjの畳み込み演算を開始する(ステップS600)。なお、層番号jの初期値は、j=1である。演算装置500は、フィルタ格納部502から層番号jに対応するパラメータとして、加算器202のビット数Mと、画素のビット数piと、重みのビット数pwと、重み行列Wと、重みサイズnと、を取得する(ステップS601)。
演算装置500は、データ入力部501により、入力データ内の対象領域120の画素群を取得する(ステップS602)。層番号j=1の時の入力データは画像データ102であり、j≧2の時の入力データは、出力データ格納レジスタ205に格納されている第j-1畳み込み層Cjでの畳み込み演算結果104である。対象領域120の初期位置は、入力データの左上隅である。対象領域120は、対象領域120での積和演算が終了する都度、所定のストライドで右方向に移動し、右端に到達すると所定のストライドで下方向に移動し、再度右および下方向に移動する。
演算装置500は、判定器503により、上記式(3)を用いて、畳み込み演算でオーバーフローを起こさないために必要な加算器202のビット数Nmaxを算出する(ステップS603)。そして、演算装置500は、判定器503により、上記式(4)を用いて、加算器202のビット数Mが、ステップS603で算出したビット数Nmaxよりも小さいか否かを判断する(ステップS604)。
加算器202のビット数Mがビット数Nmaxよりも小さい場合(ステップS604:Yes)、ステップS605に移行し、加算器202のビット数Mがビット数Nmaxよりも小さくない場合(ステップS604:No)、ステップS607に移行する。
ステップS605において、演算装置500は、削減ビット数計算器504により、上記式(5)を用いて、対象領域120内の画素削減ビット数siおよび重み削減ビット数swを求める(ステップS605)。そして、演算装置500は、ビット削減部505により、対象領域120内の画素のビット数piを画素削減ビット数si分シフトし、重みのビット数pwを重み削減ビット数sw分シフトする(ステップS606)。これにより、画素のビット数si分の下位ビットが画素のビット列から削減され、重みのビット数sw分の下位ビットが重みのビット列から削減される。
ステップS607において、演算装置500は、畳み込み演算器103により、畳み込み演算を実行する(ステップS607)。演算装置500は、ビット逆シフト器212により、ステップS607の対象領域120の畳み込み演算結果を累積削減ビット数s分逆シフトする(ステップS608)。なお、ステップS604:Noの場合は、累積削減ビット数s=0に設定されるため、0ビット分逆シフト、すなわち、逆シフトされない。
演算装置500は、入力データ全域の演算が終了したか否かを判断する(ステップS609)。終了していない場合(ステップS609:No)、演算装置500は対象領域120をストライドしてステップS602に戻る。入力データ全域の演算が終了した場合(ステップS609:Yes)、演算装置500は、第j畳み込み層Cjの演算を終了する(ステップS611)。そして、演算装置500は、層番号jをインクリメントしてステップS600に戻る。層番号jがj=Lの場合は、演算装置500は、演算処理を終了する。
このように、実施例1にかかる演算装置500は、畳み込み層Cjごとにオーバーフロー判定を行い、オーバーフローが発生すると事前に判定されると、画素のビット数piおよび重みのビット数pwを削減して、加算器202における加算回数のマージンを動的に確保する。これにより、畳み込み演算の回路規模の低減化を図ることができる。
また、ビット削減部505からの出力を監視することで、畳み込み演算器103に入力される画素および重みについてビットシフトされているか否かを確認することができる。また、出力データ格納レジスタ205に格納されている最新の加算累積結果の削減ビット数s分の下位ビットの値が、パディングされた値と一致するか否かを監視することで、ビット逆シフトがされているか否かを確認することができる。
つぎに、実施例2について説明する。実施例1の演算装置500は、加算回数n×nを元に累積削減ビット数sを決定した(上記式(5)を参照)。実施例2の演算装置500は、入力データの内容に応じて累積削減ビット数sを決定する。具体的には、たとえば、画素や重みのビット列の最上位ビットMSBの値が0であれば、そのビット列の加算では、繰り上がりに必要なビットは削減されているとみなす。画素や重みのビット列の最上位ビットMSBを判定ビットと称す。なお、実施例1と共通部分については同一符号を付し、その説明を省略する。
図7は、実施例2にかかるビットシフト例を示す説明図である。図7では、画素ビット数piがpi=8ビットの画素のビット列の例を示す。(A)において、(例1)および(例2)のビット列の判定ビット(MSB)はいずれも「0」である。したがって、加算回数n×nから1減算される。(例3)および(例4)のビット列の判定ビット(MSB)はいずれも「1」である。したがって、加算回数n×nから減算されない。
実施例2の削減ビット数計算器504は、判定器503によってM<Nmaxであると判定された場合、下記式(6)により、累積削減ビット数sを算出する。
Figure 0007177000000001
Bikは、画素のビット列の最上位ビットMSBの値が「1」であれば「0」、「0」であれば「1」となる。同様に、Bwkは、重みのビット列の最上位ビットMSBの値が「1」であれば「0」、「0」であれば「1」となる。Xkは、BikとBwkの論理和である。すなわち、画素のビット列および重みのビット列のうち少なくとも一方の最上位ビットMSBの値が「0」であれば、Xkは「1」となる。
Xkの総和は、Mビットの加算器202に乗算器201からの出力が入力された時のオーバーフローまでのビット余裕(最上位ビットMSBからの空きビット数)を示す。図7の(B)で、Bikの決定例を示す。判定ビットが「0」であれば、Bik=1となり、判定ビットが「1」であれば、Bik=0となる。図示はしないが、Bwkについても同様である。
このように、実施例2にかかる演算装置500は、実施例1と同様、畳み込み層Cjごとにオーバーフロー判定を行い、オーバーフローが発生すると事前に判定されると、画素のビット数piおよび重みのビット数pwを削減して、加算器202における加算回数のマージンを動的に確保する。これにより、畳み込み演算の回路規模の低減化を図ることができる。
また、累積削減ビット数sを実施例1よりも小さくすることができるため、ビット列の削減幅が実施例1よりも小さい。したがって、実施例1よりも畳み込み演算器103の演算精度の向上を図ることができる。
つぎに、実施例3について説明する。実施例1の演算装置500は、加算回数n×nを元に累積削減ビット数sを決定した(上記式(5)を参照)。実施例3の演算装置500は、実施例2と同様、入力データの内容に応じて累積削減ビット数sを決定する。具体的には、たとえば、判定器503は、画素や重みのビット列において最上位ビットMSBから最下位ビットLSBの方向に探索し、1の値が最初に出現する桁の位置を特定する。なお、実施例1と共通部分については同一符号を付し、その説明を省略する。
図8は、ビット列の探索例を示す説明図である。(例1)のビット列の場合、最上位ビットMSBから2ビットが「00」であり、3ビット目で「1」が出現する。したがって、最上位ビットMSBからの2ビットが削減される。(例2)のビット列の場合、最上位ビットMSBから3ビットが「000」であり、4ビット目で「1」が出現する。したがって、最上位ビットMSBから3ビットが削減される。(例3)のビット列の場合、最上位ビットMSBで「1」が出現する。したがって、最上位ビットMSBから0ビットが削減される。(例4)のビット列の場合、最上位ビットMSBから1ビットが「0」であり、2ビット目で「1」が出現する。したがって、最上位ビットMSBから1ビットが削減される。
実施例3の削減ビット数計算器504は、判定器503によってM<Nmaxであると判定された場合、下記式(7)により、累積削減ビット数sを算出する。
Figure 0007177000000002
Wkは、k回目の加算で使用する重みのうち乗算器201の最大ビットからビット値が「1」の位置が何ビット小さい位置にあるか、換言すれば、値があらかじめ何ビット分削減されているとみなすかを示す値である。図8の例で、画素のビット列が(例1)の場合、Wk=2である。
Ikは、k回目の加算で使用する画素のうち乗算器201の最大ビットからビット値が「1」の位置が何ビット小さい位置にあるか、換言すれば、値があらかじめ何ビット分削減されているとみなすかを示す値である。図8の例で、重みのビット列が(例2)の場合、Wk=3である。
このように、実施例3にかかる演算装置500は、実施例1と同様、畳み込み層Cjごとにオーバーフロー判定を行い、オーバーフローが発生すると事前に判定されると、画素のビット数piおよび重みのビット数pwを削減して、加算器202における加算回数のマージンを動的に確保する。これにより、畳み込み演算の回路規模の低減化を図ることができる。
また、ビット列から値に影響がない上位ビットを削減することにより、累積削減ビット数sを実施例1よりも小さくし、かつ、実施例2よりも畳み込み演算器103の演算精度の向上を図ることができる。
つぎに、実施例4について説明する。実施例1では、演算装置500内で畳み込み演算に先立って加算器202がオーバーフローするか否かを事前判定し、オーバーフローが生じないように累積削減ビット数sを計算して、画素や重みのビット列のビット数を削減した。実施例4では、あらかじめ演算装置500の外部のコンピュータが実施例1の演算装置500のように判定器503によるオーバーフロー判定と、削減ビット数計算器504による累積削減ビット数sの算出と、を実行し、オーバーフロー判定結果テーブルを作成する。オーバーフロー判定結果テーブルは、実施例4の演算装置500に実装される。なお、実施例1と共通部分については同一符号を付し、その説明を省略する。
<演算装置500の構成例>
図9は、実施例4にかかる演算装置500の構成例を示すブロック図である。実施例4の演算装置500は、実施例1の判定器503および削減ビット数計算器504に替え、オーバーフロー判定結果テーブル900を有する。
図10は、オーバーフロー判定結果テーブル900の一例を示す説明図である。オーバーフロー判定結果テーブル900は、アドレス情報フィールド1001と、画素削減ビット数フィールド1002と、重み削減ビット数フィールド1003と、累積削減ビット数フィールド1004と、を有する。同一行の各フィールドの値が第j畳み込み層Cjでのオーバーフロー判定結果を示すエントリを構成する。なお、フィールドの値の符号の末尾のjは層番号jを意味する。たとえば、画素削減ビット数sijは、第j畳み込み層Cjの画素削減ビット数siを意味する。
アドレス情報フィールド1001は、アドレス情報adjを格納するフィールドである。アドレス情報adjは、層番号jに対応する情報である。画素削減ビット数フィールド1002は、画素削減ビット数sijを格納するフィールドである。重み削減ビット数フィールド1003は、重み削減ビット数swjを格納するフィールドである。累積削減ビット数フィールド1004は、累積削減ビット数sj(=sij+swj)を格納するフィールドである。
第j畳み込み層Cjについて畳み込み演算を実行する場合、演算装置500は、アドレスデコーダ521からアドレス情報adjを読み出してオーバーフロー判定結果テーブル900に出力する。演算装置500は、オーバーフロー判定結果テーブル900において、アドレス情報adjのエントリに含まれる画素削減ビット数sij、重み削減ビット数swjおよび累積削減ビット数sjを特定する。
そして、演算装置500は、画素削減ビット数sijをオーバーフロー判定結果テーブル900から第1ビットシフト器211に出力し、重み削減ビット数swをオーバーフロー判定結果テーブル900から第2ビットシフト器211に出力し、累積削減ビット数sjをオーバーフロー判定結果テーブル900からビット逆シフト器212に出力する。なお、ビットシフトしないと加算器202でオーバーフローが発生する畳み込み層Cjでは、累積削減ビット数sjはsj>0となり、ビットシフトしなくても加算器202でオーバーフローが発生しない畳み込み層Cjでは、累積削減ビット数sjはsj=0となる。
なお、オーバーフロー判定結果テーブル900は、累積削減ビット数フィールド1004の列を格納しなくてもよい。この場合、ビット逆シフト器212が、累積削減ビット数sj(=sij+swj)を算出することになる。
<演算装置500の演算処理手順例>
図11は、実施例4にかかる演算装置500の演算処理手順例を示すフローチャートである。図6と相違は、図11では、演算装置500は、ステップS605を実行しない点である。
なお、オーバーフロー判定結果テーブル900の値は、更新されてもよい。具体的には、たとえば、演算装置500は、図示しない管理サーバと通信可能に接続されているものとする。管理サーバは、訓練データとなる画像データ102を用いて、実施例1~実施例3の演算装置500のように、畳み込み層Cjごとに画素削減ビット数sij、重み削減ビット数swjおよび累積削減ビット数sjを算出する。そして、管理サーバは、畳み込み層Cjごとに画素削減ビット数sij、重み削減ビット数swjおよび累積削減ビット数sjを演算装置500に送信する。
このようにして、演算装置500は、管理サーバからの畳み込み層Cjごとに画素削減ビット数sij、重み削減ビット数swjおよび累積削減ビット数sjでオーバーフロー判定結果テーブル900を更新することができる。
たとえば、演算装置500が複数の自動車の各々のECUに実装されているものとする。管理サーバは、特定の時間帯、たとえば、複数の自動車において相対的または絶対的に夜間の走行頻度が高い自動車から、当該自動車が撮影した画像データを受信し、受信した画像データを訓練データとして、畳み込み層Cjごとに画素削減ビット数sij、重み削減ビット数swjおよび累積削減ビット数sjを再算出する。
そして、管理サーバは、畳み込み層Cjごとに再算出した画素削減ビット数sij、重み削減ビット数swjおよび累積削減ビット数sjを、当該夜間の走行頻度が高い自動車の演算装置500に送信する。これにより、オーバーフロー判定結果テーブル900の内容を、演算装置500のユーザに特化した値に更新することができ、演算精度の向上を図ることができる。上述した例では、夜間の走行頻度について説明したが、降雨や降雪時などの悪天候時の走行頻度でもよい。
このように、実施例4にかかる演算装置500は、画素のビット数pijおよび重みのビット数pwjを削減して、加算器202における加算回数のマージンを動的に確保する。これにより、畳み込み演算の回路規模の低減化を図ることができる。また、演算装置500に判定器503および削減ビット数計算器504が実装されていないため、回路規模の低減化を図ることができる。また、演算装置500に判定器503および削減ビット数計算器504が実装されていないため、判定器503および削減ビット数計算器504で処理が実行されない。したがって、低消費電力化を図ることができる。
以上説明したように、上述した実施例では、DNNのオーバーフローおよびこれに伴う回路実装規模の増加を抑制することができる。
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加、削除、または置換をしてもよい。
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記憶装置、又は、IC(Integrated Circuit)カード、SDカード、DVD(Digital Versatile Disc)の記録媒体に格納することができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
201 乗算器
202 加算器
211i 第1ビットシフト器
211w 第2ビットシフト器
212 ビット逆シフト器
500 演算装置
501 データ入力部
502 フィルタ格納部
503 判定器
504 削減ビット数計算器
505 ビット削減部
506 出力加算器
511 入力データ分岐器
512 入力データ格納レジスタ
521 アドレスデコーダ
522 パラメータ格納レジスタ
900 オーバーフロー判定結果テーブル

Claims (10)

  1. ニューラルネットワークを構成する複数の畳み込み層の各々でフィルタと前記フィルタのサイズ分の対象データとの畳み込み演算を畳み込み演算器で実行する演算装置であって、
    前記畳み込み層ごとに、前記対象データの最下位ビットから第1ビット数分のビット列を削減し、前記フィルタの要素である重みの最下位ビットから第2ビット数分のビット列を削減するビット削減部と、
    前記ビット削減部による削減後の前記対象データおよび前記重みが前記畳み込み演算器に入力されたことにより前記畳み込み演算器から出力された畳み込み演算結果の最下位ビットに、前記第1ビット数および前記第2ビット数を合計した第3ビット数分のビット列を追加するビット追加部と、
    を有することを特徴とする演算装置。
  2. 請求項1に記載の演算装置であって、
    前記畳み込み層ごとに、前記畳み込み演算器でオーバーフローが発生するか否かを判定する判定器を有し、
    前記ビット削減部は、前記判定器による判定結果に基づいて、前記対象データの最下位ビットから前記第1ビット数分のビット列を削減し、前記重みの最下位ビットから前記第2ビット数分のビット列を削減し、
    前記ビット追加部は、前記判定器による判定結果に基づいて、前記畳み込み演算結果の最下位ビットに、前記第3ビット数分のビット列を追加する、
    ことを特徴とする演算装置。
  3. 請求項2に記載の演算装置であって、
    前記畳み込み層ごとに、前記フィルタのサイズと、前記対象データのビット数と、前記フィルタ内の要素である重みのビット数と、を格納する格納部を有し、
    前記判定器は、畳み込み演算対象の畳み込み層における、前記フィルタのサイズと、前記対象データのビット数と、前記フィルタ内の要素である重みのビット数と、を前記格納部から取得して、前記畳み込み演算器でオーバーフローが発生しない第4ビット数を算出し、前記第4ビット数と前記畳み込み演算器内の加算器のビット数とに基づいて、前記畳み込み演算器でオーバーフローが発生するか否かを判定する、
    ことを特徴とする演算装置。
  4. 請求項1に記載の演算装置であって、
    畳み込み演算対象の畳み込み層における、前記フィルタのサイズ、前記対象データのビット数、および前記フィルタ内の要素である重みのビット数と、前記畳み込み演算器内の加算器のビット数とに基づいて、前記第3ビット数を算出し、前記第3ビット数に基づいて前記第1ビット数および前記第2ビット数を決定する削減ビット数計算器を有し、
    前記ビット削減部は、前記対象データの最下位ビットから前記削減ビット数計算器によって決定された第1ビット数分のビット列を削減し、前記重みの最下位ビットから前記削減ビット数計算器によって決定された第2ビット数分のビット列を削減し、
    前記ビット追加部は、前記畳み込み演算結果の最下位ビットに、前記削減ビット数計算器によって算出された第3ビット数分のビット列を追加する、
    ことを特徴とする演算装置。
  5. 請求項4に記載の演算装置であって、
    前記削減ビット数計算器は、さらに、前記対象データの値および前記重みの値の少なくとも一方に基づいて、前記第3ビット数を算出する、
    ことを特徴とする演算装置。
  6. 請求項5に記載の演算装置であって、
    前記削減ビット数計算器は、前記対象データの最上位ビットの値および前記重みの最上位ビットの値の少なくとも一方が0となる畳み込み演算の回数に基づいて、前記第3ビット数を算出する、
    ことを特徴とする演算装置。
  7. 請求項5に記載の演算装置であって、
    前記削減ビット数計算器は、前記対象データの最上位ビットから0の値が連続するビット数および前記重みの最上位ビットから0の値が連続するビット数に基づいて、前記第3ビット数を算出する、
    ことを特徴とする演算装置。
  8. 請求項1に記載の演算装置であって、
    前記畳み込み層ごとに、前記第1ビット数と、前記第2ビット数と、を格納する格納部を有し、
    前記ビット削減部は、前記畳み込み層ごとに、前記第1ビット数および前記第2ビット数を取得して、前記対象データの最下位ビットから前記第1ビット数分のビット列を削減し、前記重みの最下位ビットから前記第2ビット数分のビット列を削減する、
    ことを特徴とする演算装置。
  9. 請求項8に記載の演算装置であって、
    前記格納部は、前記畳み込み層ごとに、さらに、前記第3ビット数を格納し、
    前記ビット追加部は、前記畳み込み層ごとに、前記第3ビット数を前記格納部から取得して、前記畳み込み演算結果の最下位ビットに、前記第3ビット数分のビット列を追加する、
    ことを特徴とする演算装置。
  10. ニューラルネットワークを構成する複数の畳み込み層の各々でフィルタと前記フィルタのサイズ分の対象データとの畳み込み演算を畳み込み演算器で実行する演算装置による演算方法であって、
    前記演算装置が、
    前記畳み込み層ごとに、前記対象データの最下位ビットから第1ビット数分のビット列を削減し、前記重みの最下位ビットから第2ビット数分のビット列を削減し、
    削減後の前記対象データおよび前記フィルタの要素である重みが前記畳み込み演算器に入力されたことにより前記畳み込み演算器から出力された畳み込み演算結果の最下位ビットに、前記第1ビット数および前記第2ビット数を合計した第3ビット数分のビット列を追加する、
    ことを特徴とする演算方法。
JP2019092626A 2019-05-16 2019-05-16 演算装置および演算方法 Active JP7177000B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2019092626A JP7177000B2 (ja) 2019-05-16 2019-05-16 演算装置および演算方法
US17/610,251 US11886874B2 (en) 2019-05-16 2020-04-08 Arithmetic operation device and arithmetic operation method
PCT/JP2020/015878 WO2020230488A1 (ja) 2019-05-16 2020-04-08 演算装置および演算方法
CN202080031698.7A CN113785312B (zh) 2019-05-16 2020-04-08 运算装置及运算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019092626A JP7177000B2 (ja) 2019-05-16 2019-05-16 演算装置および演算方法

Publications (3)

Publication Number Publication Date
JP2020187608A JP2020187608A (ja) 2020-11-19
JP2020187608A5 JP2020187608A5 (ja) 2022-01-06
JP7177000B2 true JP7177000B2 (ja) 2022-11-22

Family

ID=73223260

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019092626A Active JP7177000B2 (ja) 2019-05-16 2019-05-16 演算装置および演算方法

Country Status (4)

Country Link
US (1) US11886874B2 (ja)
JP (1) JP7177000B2 (ja)
CN (1) CN113785312B (ja)
WO (1) WO2020230488A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7350768B2 (ja) 2018-10-25 2023-09-26 株式会社半導体エネルギー研究所 検知装置、半導体装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180232621A1 (en) 2017-02-10 2018-08-16 Kneron, Inc. Operation device and method for convolutional neural network
WO2019029785A1 (en) 2017-08-07 2019-02-14 Renesas Electronics Corporation MATERIAL CIRCUIT

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2864598B2 (ja) * 1989-12-26 1999-03-03 ソニー株式会社 ディジタル演算回路
JP2821406B2 (ja) * 1995-11-24 1998-11-05 日本電気アイシーマイコンシステム株式会社 積和演算器およびこれを用いたディジタルフィルタ回路
KR100222122B1 (ko) * 1997-03-05 1999-10-01 선우명훈 단일의 천이누적 회로를 이용한 컨볼루션 필터
KR100235536B1 (ko) * 1997-03-05 1999-12-15 선우명훈 전용의 곱셈기 및 나눗셈기가 없는 곱셈 및 나눗셈 연산회로
JP2001188468A (ja) * 1999-12-27 2001-07-10 Toyo Commun Equip Co Ltd ガロア体上の元の除算演算方法および除算演算回路
JP4630056B2 (ja) * 2004-12-24 2011-02-09 株式会社アドバンテスト 畳み込み演算回路
WO2007096982A1 (ja) * 2006-02-24 2007-08-30 Fujitsu Limited 演算処理装置および演算処理方法
JP2008059287A (ja) 2006-08-31 2008-03-13 Brother Ind Ltd 画像処理装置および画像処理プログラム
JP5014920B2 (ja) 2007-08-17 2012-08-29 ラピスセミコンダクタ株式会社 回路設計方法、ならびにその方法により製造される集積回路
US20130018932A1 (en) * 2011-07-12 2013-01-17 Hughes Network Systems, Llc System and method for long range and short range data compression
GB201607713D0 (en) * 2016-05-03 2016-06-15 Imagination Tech Ltd Convolutional neural network
GB2568660B (en) * 2017-10-20 2020-10-14 Graphcore Ltd Generating Random Numbers Based on a Predetermined Probaility Distribution in an Execution Unit
CN109409514A (zh) * 2018-11-02 2019-03-01 广州市百果园信息技术有限公司 卷积神经网络的定点运算方法、装置、设备和存储介质
CN109711542B (zh) * 2018-12-29 2020-08-18 西安交通大学 一种支持动态精度的dnn加速器及其实现方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180232621A1 (en) 2017-02-10 2018-08-16 Kneron, Inc. Operation device and method for convolutional neural network
WO2019029785A1 (en) 2017-08-07 2019-02-14 Renesas Electronics Corporation MATERIAL CIRCUIT

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7350768B2 (ja) 2018-10-25 2023-09-26 株式会社半導体エネルギー研究所 検知装置、半導体装置

Also Published As

Publication number Publication date
US11886874B2 (en) 2024-01-30
WO2020230488A1 (ja) 2020-11-19
US20220236985A1 (en) 2022-07-28
JP2020187608A (ja) 2020-11-19
CN113785312B (zh) 2024-06-07
CN113785312A (zh) 2021-12-10

Similar Documents

Publication Publication Date Title
JP6540725B2 (ja) 演算処理装置、方法、およびプログラム
JP7348971B2 (ja) 畳み込みニューラルネットワークハードウエア構成
JP6900487B2 (ja) ハードウェアにおける平均プーリングの実行
CN111353579B (zh) 利用反向传播为深度神经网络选择量化参数的方法和系统
CN110009099B (zh) 用于确定表示dnn的层的值的定点数格式的方法和系统
JP6540841B1 (ja) 演算処理装置、情報処理装置、情報処理方法、およびプログラム
KR102637733B1 (ko) 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법
JP2019139338A (ja) 情報処理装置、情報処理方法、およびプログラム
US11810330B2 (en) Information processing apparatus, information processing method, non-transitory computer-readable storage medium
EP4033379A1 (en) Implementing dilated convolution in hardware
JP7177000B2 (ja) 演算装置および演算方法
EP2940576A2 (en) Approximating functions
US11907834B2 (en) Method for establishing data-recognition model
JP2019211985A (ja) 学習プログラム、学習方法、及び情報処理装置
JP6886389B2 (ja) 演算装置及び車載制御装置
US20220405561A1 (en) Electronic device and controlling method of electronic device
CN116151321A (zh) 半导体装置
US20210216867A1 (en) Information processing apparatus, neural network computation program, and neural network computation method
JP5545128B2 (ja) ジャギー緩和処理装置及びジャギー緩和処理方法
WO2022102221A1 (ja) Dnn縮約装置及び車載演算装置
KR20050008812A (ko) 화상 처리 방법, 계산 회로, 화상 처리 시스템, 셋톱 박스및 통신망
JP3733883B2 (ja) 2次元直交変換処理方法および2次元直交変換処理装置
CN116888575A (zh) 精简近似的基于共享的单输入多权重乘法器
CN113822413A (zh) 用于基于网络灵敏度和量化误差选择深度神经网络的数字格式的方法和系统
CN112602097A (zh) 数据处理系统和数据处理方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211122

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211122

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221101

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221110

R150 Certificate of patent or registration of utility model

Ref document number: 7177000

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150