JP6713036B2 - 折り畳まれた特徴データに対して畳み込み演算を実行するための方法および装置 - Google Patents

折り畳まれた特徴データに対して畳み込み演算を実行するための方法および装置 Download PDF

Info

Publication number
JP6713036B2
JP6713036B2 JP2018221116A JP2018221116A JP6713036B2 JP 6713036 B2 JP6713036 B2 JP 6713036B2 JP 2018221116 A JP2018221116 A JP 2018221116A JP 2018221116 A JP2018221116 A JP 2018221116A JP 6713036 B2 JP6713036 B2 JP 6713036B2
Authority
JP
Japan
Prior art keywords
folded
feature data
convolution
dimension
convolution kernel
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
JP2018221116A
Other languages
English (en)
Other versions
JP2019102082A (ja
Inventor
李徳林
凌坤
陳亮
李建軍
Original Assignee
南京地平綫机器人技術有限公司
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 南京地平綫机器人技術有限公司 filed Critical 南京地平綫机器人技術有限公司
Publication of JP2019102082A publication Critical patent/JP2019102082A/ja
Application granted granted Critical
Publication of JP6713036B2 publication Critical patent/JP6713036B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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
    • 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/50Adding; Subtracting
    • G06F7/501Half or full adders, i.e. basic adder cells for one denomination
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • 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

Landscapes

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

Description

本発明は、一般に畳み込みニューラルネットワークの技術分野に関し、特に、折り畳まれた特徴データに対して畳み込み演算を実行するための方法および装置に関する。
畳み込みニューラルネットワークに基づくディープラーニングは、画像認識、ビデオ分析、自然言語の処理、およびドライビング・アシストなどのさまざまな分野で広く使用されている。
畳み込みニューラルネットワークにおける演算量は通常大きい。汎用中央処理装置(CPU)、グラフィック処理装置(GPU)、または専用アクセラレータなどのようなハードウェアを使用して畳み込みニューラルネットワークにおける演算を効率的に実行できることが望まれている。
本開示は、折り畳まれた特徴データに対して畳み込み演算を実行するための方法および装置を提供する。該方法は、ダイナミックランダムアクセスメモリ(DRAM)から畳み込み層に提供される折り畳まれた特徴データ及びオリジナル畳み込みカーネルを読み出すステップと、前記折り畳まれた特徴データ及びオリジナル畳み込みカーネルに対して前処理を実行するステップと、前処理された折り畳まれた特徴データをスタティックランダムアクセスメモリ(SRAM)に格納するステップと、折り畳まれた特徴データの折り畳み方法に基づいて、幅又は高さの少なくとも一つの次元で前処理されたオリジナル畳み込みカーネルを折り畳み、オリジナル畳み込みカーネルに対応する一又は複数の折り畳まれた畳み込みカーネルを生成するステップと、前記一又は複数の折り畳まれた畳み込みカーネルを前記SRAMに格納するステップと、前処理された折り畳まれた特徴データ及び一つ又は複数の折り畳まれた畳み込みカーネルを、前記SRAMから計算手段に読み出し、前記一又は複数の折り畳まれた畳み込みカーネルを用いて、前処理された折り畳まれた特徴データに対して畳み込み演算を実行するステップとを含む。
本開示は、特徴データに対して畳み込み演算を実行する方法をさらに提供する。該方法は、畳み込み層に提供された折り畳まれた特徴データ及びオリジナル畳み込みカーネルに対して前処理を実行するステップと、前処理されたオリジナル畳み込みカーネルを、折り畳まれた特徴データの折り畳み方法に基づいて、幅又は高さの少なくとも一つの次元で折り畳み、前記オリジナル畳み込みカーネルに対応する一又は複数の折り畳まれた畳み込みカーネルを生成するステップと、生成された前記一又は複数の折り畳まれた畳み込みカーネルを用いて、前処理された折り畳まれた特徴データに対して前記畳み込み演算を実行するステップとを含む。
本開示は、特徴データに対して畳み込み演算を実行するための装置をさらに提供する。該装置は、指令を実行するように構成された一又は複数のプロセッサを具備し、前記指令の実行により、前記一つ又は複数のプロセッサが上記の方法のいずれかが実行される。
本開示は、コンピュータ装置によって実行されたときに上記の方法のいずれかを実行させるためのプログラム指令を記憶した非一時記憶媒体(non-temporary storage medium)をさらに提供する。
本開示は、コンピュータプログラムをさらに提供し、該コンピュータプログラムが、一以上のメモリと、一以上のプロセッサと、計算手段とを具備する装置によって実行されると、上記の方法のいずれかが実現される。
本開示は、さらにメモリを提供し、該メモリには、上記の方法のいずれかを実行することにより得られたデータ構造を有するデータブロックが格納されている。
本開示の実施例における方法及び/又は装置によれば、折り畳まれた特徴データを従来の折り畳まれていない特徴データに展開する必要がなく、折り畳まれた特徴データに対して直接畳み込み演算を実行することができ、演算効率の向上に有利である。
図1は、本開示の実施形態に係る折り畳まれた特徴データの例示を示す。 図2は、本開示の実施形態に係る折り畳まれた特徴データの例示を示す。 図3は、本開示の実施形態に係る折り畳まれた特徴データに対して畳み込み演算を実行する方法のフロー図を示す。 図4は、本開示の実施形態に係る折り畳まれた特徴データ及びオリジナル畳み込みカーネルに対して前処理を実行する例を示す。 図5は、本開示の実施形態に係る一次元において前処理されたオリジナル畳み込みカーネルを折り畳む例を示す。 図6は、本開示の実施形態に係る二次元において前処理されたオリジナル畳み込みカーネルを折り畳む例を示す。 図7は、本開示の実施形態に係る畳み込み演算を実行する例を示す。 図8は、本開示の実施形態に係る畳み込み演算を実行する例を示す。 図9は、本開示の実施形態に係る折り畳まれた特徴データに対して畳み込み演算を実行する装置の例を示す。 図10は、本開示の実施形態に係る折り畳まれた特徴データに対して畳み込み演算を実行する装置の例を示す。 図11は、本開示の実施形態に係る折り畳まれた特徴データに対して畳み込み演算を実行するための設備の例を示す。 図12Aは、本開示の実施形態に係る特徴データがスタティックランダムアクセスメモリに如何に格納されているかを示す例示である。 図12Bは、本開示の実施形態に係る特徴データがスタティックランダムアクセスメモリに如何に格納されているかを示す例示である。
以下の記載において、添付図面を参照しつつ、本開示に係る例示的な実施形態を述べる。
本開示において、畳み込みニューラルネットワークに提供される特徴データはデータキューブとみなすことができ、幅、高さ、及び深さ(すなわち、異なるチャネル)などの複数の次元を有してもよく、該特徴データにおけるデータごとに、データキューブ内の一つの点にそれぞれ対応させることができる。対応して、畳み込みニューラルネットワークにおける畳み込み演算のための重みパラメータも畳み込みカーネルごとに一つのデータキューブとみなすことができる。
通常、データキューブを述べるときに、「スライス」という用語を使用することができる。データキューブの三次元を、三次元デカルト座標系におけるX軸、Y軸、およびZ軸によって表される次元に対応するとみなす場合、該データキューブの、X軸によって表される次元に対応する第1の次元におけるスライスは、X軸に直交する平面を使用して該データキューブにおけるデータをサンプリングして得られた結果を示す。該結果は、Y軸とZ軸で表される二次元平面上の矩形データである。
また、データキューブを点の集合とみなし、
W、H及びDは、いずれも0より大きい整数である場合、該データキューブのX軸において表された次元に対応する第1の次元におけるスライスは
である。含まれているすべてのデータはいずれもゼロ(又はゼロに相当する)の値のスライスはゼロスライスと称することができる。
さらに、「画素」という用語も、データキューブを表すのによく使用される。データキューブの画素には、データキューブにおいて同じ幅(X軸)と高さ(Y軸)の座標を有する点が含まれている。
と表示することができる。なお、一のスライスは複数の画素を含み得ることは理解され得る。
本明細書において、説明の便宜上、特徴データ又は畳み込みカーネルがある次元におけるデータを述べる際に、「スライス」という用語をも使用する。例えば、幅の次元におけるスライス(本開示において「幅スライス」という)、高さの次元におけるスライス(本開示において「高さスライス」という)などである。
本明細書において、データキューブAの第1の次元(例えば、幅のような次元)でパディング又は一或いは複数のゼロスライスを附加することに言及するときに、Aの第1の次元における境界に(例えば、幅における左側又は右側)一又は複数のゼロスライスを増加させることで、Aの第1の次元の次元値(例えば、幅)を増加させ、増加したゼロスライスのそれぞれが別の二つの次元(例えば、高さと深さの二つの次元)において、オリジナルAと同じ次元値(例えば、高さ値と深さ値)を有することを意味するものとすることができる。
本明細書において、データキューブAの第1の次元及び第2の次元(例えば、幅と高さの二つの次元)でパディング又は一或いは複数のゼロスライスを附加することに言及するとき、Aの第1の次元における境界に(例えば、幅における左側又は右側)一又は複数のゼロスライスを増加させることで、Aの第1の次元の次元値(例えば、幅)を増加させ、増加したゼロスライスのそれぞれが別の二つの次元(例えば、高さと深さの二つの次元)において、オリジナルAと同じ次元値(例えば、高さ値と深さ値)を有することを意味するものとすることができる。そして、幅が増加した後に得られたキューブA’の第2の次元の境界で(例えば、高さにおける上側又は下側)一又は複数のゼロスライスを増加させて、A’の第2の次元の次元値(例えば、高さ)を増加させ、増加したゼロスライスのそれぞれが別の二つの次元(例えば、幅値と深さ値の二つの次元)で、A’と同じ次元値(例えば、幅値及び深さ値)を有することを意味するものとすることができる。
本明細書において、データキューブAに係る各スライスが深さの次元で揃える(align)ことを言及するとき、Aに対して所望の深さ値を有しないスライス(幅スライスであってもよく、高さスライスであってもよい)が、深さにゼロ(又はゼロに相当する値)を追加し、追加後のAの各スライスが所望の深さ値を有するようにすることを意味するものとすることができる。
本明細書において、データキューブAの第1の次元および/または第2の次元のパディングについて言及するとき、特に明記されない限り、パディングされたゼロスライスの数はゼロ又は一つ又は複数であってもよい。
畳み込み型ニューラルネットワークにおける計算量は、通常大きく、汎用の中央処理装置、グラフィックプロセッサ、または専用アクセラレータなどのハードウェアを使用して、畳み込み型ニューラルネットワークにおける演算を効率的に実行できることが望まれている。計算効率の改善および/またはハードウェア設計の簡略化のために、例えば、畳み込み演算を実行する加算器および/または乗算器にデータを提供するように、マルチチャネルをサポートするメモリを設計することができ、又は演算手段(例えば、畳み込み演算を実行するための乗算回路など)が、マルチチャネル(例えば、32チャネル)の演算をサポートするように設計することができる。
一方、通常、畳み込みニューラルネットワークの入力層に提供される特徴データのチャネル数は少ない(通常3チャネルまたは1チャネル)可能性があり、畳み込みニューラルネットワークのフィードフォワード推論方向に、前寄りの畳み込み層の入力特徴データのチャネル数も少ない可能性があるため、少なくとも畳み込みニューラルネットワーク全体のフィードフォワード推論プロセス(feedforward reasoning process)のある特定の段階において、マルチチャネルをサポートすることができるメモリおよび/または演算装置のリソースの利用率が低くなってしまう。そのため、従来の特徴データを、幅および/または高さにおいて折り畳むことができることで、例えばマルチチャネルをサポートすることができるメモリのリソース利用率を改善する。
しかしながら、既に設計された畳み込みニューラルネットワークのアーキテクチャの下では、折り畳まれた特徴データに対して、対応する畳み込み層における重みパラメータを直接使用して畳み込み演算を実行することができない。したがって、折り畳まれた特徴データを、まず従来の折り畳まれていない特徴データに展開し、それから、展開により得られた折り畳まれていない特徴データを対応する畳み込み層に提供し、該畳み込み層の重みパラメータを使用して折り畳まれていない特徴データに対して、畳み込みを実行する必要がある。これは、折り畳まれた特徴データを使用することによる利点が相殺され、例えば、再度キャッシュメモリおよび/または乗算器などのハードウェアリソースの浪費をもたらし、多くの無駄な演算を導入するおそれがあることを意味する。
そのため、既に設計された畳み込みニューラルネットワークのアーキテクチャの下で、直接折り畳まれた特徴データに対して畳み込み演算を実行できることが望まれる。
折り畳まれた特徴データは、幅及び高さにおける一の次元D1において、オリジナル特徴データFDのD1におけるNx(Nxは1より大きい整数で)個ごとのスライスを深さで折り畳んで得られた結果FD’であってもよい。ここで、FDのうちのD1おける第ifx×Nx+jfx番目のスライスのすべてのC個のチャネルのデータは、FD’のうちのD1におけるifx番目のスライスのjfx×C個のチャネルから開始する連続のCx個チャネルのデータに対応し、ここで、ifxは0以上の整数であり、jfxは0以上かつNx未満の整数であり、Cxは0より大きい整数である。
また、折り畳まれた特徴データは、幅及び高さの二つの次元において、オリジナル特徴データFDを折り畳んで得られた結果FD’’であってもよい。例えば、FD’’は、引き続き幅及び高さにおける別の次元D2で、前記FD’のD2におけるNy(Nyは1より大きい整数で)個ごとのスライスを、深さで折り畳むことで得られた結果であってもよく、ここで、FD’のうちのD2における第ify×Ny+jfy番目のスライスのすべてのCy個のチャネルのデータは、FD’’のうちのD2におけるify番目のスライスのjfy×Cy個のチャネルから開始する連続のCy個チャネルのデータに対応し、ここで、ifyは0以上の整数であり、jfyは0以上かつNy未満の整数であり、Cyは0より大きい整数である。
図1に幅、高さ及び深さがそれぞれ6、5及び3である折り畳まれていない特徴データFDに対応する幅折り畳み特徴データの例示FD’を示し、ここで、FD’の幅、高さ及び深さがそれぞれ3、5及び6で、幅におけるつなぎ合わせ数Nx=2である。
図2に図1におけるFDに対応する幅及び高さにおける折り畳む折り畳まれたデータの例示FD’’を示し、ここで、FD’’はFDがFD’をベースに引き続き高さで折り畳んで得られた結果であり、FD’’の幅、高さ及び深さはそれぞれ3、3及び12で、高さにおけるつなぎ合わせ数はNy=2である。
図1及び図2において、各小キューブは特徴データにおける一のデータ値(例えば、RGB画像における一の色の画素値)を示す。各小キューブの正面に“x、y”の形式で幅及び高さの二つの次元における座標値が標記され、側面に該小キューブが代表するデータ値が対応する特徴データにおけるチャネル番号が標記されている。
例えば、図1におけるFDにおける正面に「1,1」と標記された小キューブが、FDの中の幅及び高さの二つの次元で見た場合の第1行第1列に位置することを示す。また、該小キューブの側面に「1」と標記されている。これは、該小キューブが深さ(またはチャネル)の次元から見た第1行に位置することを示す。これらのすべての小キューブが折り畳まれていない特徴データFDを構成し、FDは6つの幅スライスを有し、すなわち、FDにおける第1列のすべての小キューブ(y=1)、FDにおける第2列のすべての小キューブ(y=2)、FDにおける第3列のすべての小キューブ(y=3)、FDにおける第4列のすべての小キューブ(y=4)、FDにおける第5列のすべての小キューブ(y=5)及びFDにおける第6列のすべての小キューブ(y=6)である。
また、折り畳まれた特徴データにおける各データと折り畳まれていない特徴データにおける各データとの対応関係を示すために、図1および図2では、FD’及びFD’’における各小キューブのチャネルの番号は付け直していない。
図2に示すように、FD’の高さスライスの総数はNyの整数倍ではないため、FD’’における第3行の高さスライスには、FD’’における各スライスが深さにおいて揃えるゼロ値データが、さらに含まれている(図2において破線の枠のAで表示する)。
図1及び図2は単なる例示であることは理解されるべきである。別の例示において、折り畳まれた特徴データは、一つの従来の特徴データに対して高さで折り畳んだ結果であってもよく、又はまず高さで折り畳み、次いで幅で折り畳んだ結果であってもよく、折り畳んだ結果の各スライスが深さで揃えるためのゼロ値データを含むこともできる。
折り畳まれた特徴データについて、少なくとも該折り畳まれた特徴データを生成するために使用される折り畳み方法(D1における折り畳みに関連付けられるNx値及び/又はD1における折り畳みに関連付けられるNy値を含む)は予め知っているものであってもよい。また、折り畳んだ結果の各スライスが深さ方向で揃えるためのゼロ値データの数も予め知っているものであってもよい。
なお、前後文の文脈が明確な場合、以後の記載では、特徴データ(及び後述の畳み込みカーネル)における各小キューブを示さないで、平面を使って各スライスを示す可能性がある。例えば、幅、高さ及び深さの三つの次元がそれぞれ三次元デカルト座標系のX軸、Y軸、Z軸にそれぞれ対応させた場合、X軸に垂直な(又はY−Z平面に平行な)平面を用いて特徴データ(又は後述する畳み込みカーネル)の幅スライスを表示することができる。
図3は、本開示の一実施形態に係る折り畳まれた特徴データに対して畳み込み演算を実行する例示の方法300のフロー図を示す。
図3に示すように、例示方法300は以下のステップを含むことができる。
ステップS305:折り畳まれた特徴データ及び畳み込み層のオリジナル畳み込みカーネルに対して前処理を実行し、
ステップS310:前処理されたオリジナル畳み込みカーネルを折り畳み、オリジナル畳み込みカーネルに対応する一又は複数の折り畳まれた畳み込みカーネルを生成し、及び
ステップS315、生成された一又は複数の折り畳まれた畳み込みカーネルを用いて、前処理された折り畳まれた特徴データに対して畳み込み演算を実行する。
従来の畳み込み演算において、すなわち、オリジナル畳み込みカーネルを用いて、畳み込み層に提供されたオリジナル折り畳まれていない特徴データに対して畳み込みを実行する場合、オリジナル畳み込みカーネルが、幅におけるストライドSx(1以上)で、高さにおけるストライドSy(1以上)で、オリジナル畳まれていない特徴データ上スライドさせ、オリジナル畳まれていない特徴データにおけるスライディングウィンドウ(sliding window)が対応する部分のデータに対して畳み込みを行う。
所望の出力特徴データを得ることができるようにするために、畳み込みを実行する前に、予め指定されたパディング方法に従い、オリジナル畳まれていない特徴データの幅及び高さの二つの次元における周辺(幅での開始境界及び終了境界(starting and ending boundaries)及び高さにおける開始境界及び終了境界を含む)でゼロスライスをパディングし、パディングしたゼロスライスの数は指定されたパディング方法によって決まり、0個、1個、又は複数個であってもよい。
すでに設計された畳み込みニューラルネットワークに対して、各畳み込み層において使用される重みパラメータ(畳み込みカーネルの数と畳み込みカーネルごとの幅、高さ、深さ、及び含まれる値を含む)、及び該畳み込み層に提供されるオリジナル畳み込まれていない特徴データのパディング方法は常に既知である。これらの設定は、該畳み込みニューラルネットワークの設計に際して、畳み込みニューラルネットワークの設計者によって事前に指定することができ、又は学習によって設計され又は調整されてもよい。
折り畳まれた特徴データを畳み込みニューラルネットワークの畳み込み層に提供されるとき、本開示の実施形態による方法を使用して正しい所望の結果が依然として得られることを確実にするために、ステップS305において、折り畳まれた特徴データ及びオリジナル畳み込みカーネルに対して前処理を、先に実行することができる。
一実施形態において、該畳み込み層が受信した折り畳まれた特徴データが、オリジナル折り畳まれていない特徴データFDに対して、幅及び高さの一つの次元D1において、スプライシング数(splicing number)Nxに従って折り畳んだ結果FD’である場合、畳み込み層によって指定されたFDのパディング方法に基づいて、FDのD1の開始境界でパディングしようとする
FD’のD1の終了境界について、FD’のD1における次元値FVx’(例えば、D1が幅である場合の幅値)、該畳み込み層の重みパラメータのオリジナル畳み込みカーネルKのD1における次元値FVx及びD1におけるストライドSxを、先に決定することができる。
を計算して得られた結果がSxの整数倍になるように、FD’のD1の終了境界で、P2’個のゼロスライスをパディングすることができる。
FD’のD1の終了境界について、予期の折り畳まれた畳み込みカーネルがD1における次元値
の結果値がSxの整数倍になるように、FD’のD1における終了境界のパディング量P2’を決定することができ、でなければ、P2’<KVx’になるように、FD’のD1における終了境界のパディング量P2’を決定することができる。
また、該畳み込み層によって指定された幅及び高さにおける別の次元D2においてFDに対してパディングするというパディング方法に従い、FD’のD2における開始境界及び/又は終了境界でパディングすることができる。
オリジナル畳み込みカーネルのD1における開始境界で
個のゼロスライスをパディングすることができる。
別の実施形態において、畳み込み層が受信した折り畳まれた特徴データは、オリジナル折り畳まれていない特徴データFDに対して、幅及び高さの二つの次元で折り畳んだ結果FD’’である場合、例えば、FD’’は、まず幅と高さにおける一の次元D1において、スプライシング数Nxに従って折り畳みを行ってFD’を得、そして引き続きFD’の幅及び高さにおける別の次元D2において、スプライシング数Nyに従って折り畳みを行って、得られた結果である場合、FD’’に対して、D1において前の実施形態において述べたFD’に対するD1における開始境界及び終了境界でパディングするような方法でパディングすることができる。
そして、該畳み込み層によって指定されたFDに対するパディング方法に従い、FDがD2の開始境界でパディングしようとする
のゼロスライスをパディングする。
FD’’のD2における終了境界について、FD’’のD2における次元値FVy’(例えば、D2が高さである場合の高さ値)、該畳み込み層の重みパラメータのオリジナル畳み込みカーネルKのD2における次元値FVy及びD2におけるストライドSyを先に決定することができる。
を計算して得られた結果がSyの整数倍になるように、FD’’のD2の終了境界で、P3’個のゼロスライスをパディングすることができる。
FD’’のD2の終了境界に対して、予期の折り畳まれた畳み込みカーネルがD2における次元値
の結果値がSyの整数倍になるように、FD’’のD2における終了境界のパディング量P3’を決定することができ、でなければ、P3’<KVy’になるように、FD’’のD2における終了境界のパディング量P3’を決定することができる。
また、オリジナル畳み込みカーネルKのD1における開始境界で
個のスライスをパディングすることができる。
例えば、図2の例示におけるFDに対して設定された重みパラメータの畳み込みカーネルKの幅、高さ及び深さはそれぞれ3、3及び3であり、幅及び高さにおける畳み込みのストライドがいずれも1であり、FDによって指定されたパディング方法が左側及び右側にそれぞれ1列をパディングし(すなわち、それぞれ1つのゼロスライスをパディングし)、上側及び下側にはパディングする必要がないとする場合、ステップ305において、図4に示すように、図2におけるFD’’に対して、
個のゼロスライスKPをパディングすることで、幅が4の前処理された畳み込みカーネルK’を生成することができる。
図4の例示において、一つのオリジナル畳み込みカーネルしか示されていないが、一つの畳み込み層の重みパラメータも複数個の畳み込みカーネルを有してもよく、このような場合、本開示の実施形態に係る方法により、該重みパラメータの畳み込みカーネルごとに処理を行うことができる。
折り畳まれた特徴データ及びオリジナル畳み込みカーネルに対して前処理を実行した後、例示方法300はステップS310に進み、前処理されたオリジナル畳み込みカーネルを折り畳むことができる。
ステップS310において、前処理された畳み込みカーネルK’のD1における開始境界でkx×Sx個のゼロスライスをそれぞれパディングして、オリジナル畳み込みカーネルK又は前処理された畳み込みカーネルK’に対応する一又は複数の変換された畳み込みカーネルK’[kx]を生成する。ここで、SxはD1におけるオリジナル畳み込みカーネルKのD1におけるストライドであり、kxはゼロ以上の整数である。例えば、0個のゼロスライス、Sx個のゼロスライス、及び2×Sx個のゼロスライスのそれぞれによってオリジナル畳み込みカーネルKとの3つの変換された畳み込みカーネルK’を生成することができる。
変換された畳み込みカーネルの数を制御するように、kxの最大値を設定することができる。例えば、kx<Exにすることができ、Exを、SxとNxの最小公倍数をSxで除算して得られた結果値、又はNxをNxとSxの最大公約数で除算して得られた結果値と決定することができ、又はSx=1又はSxとNxとが互い素である場合、ExをNxに等しいと決定することができる。これにより、K又はK’に対応するEx個の変換された畳み込みカーネルK’を生成することができる。
そして、各変換された畳み込みカーネルK’[kx]のそれぞれに対して、D1におけるNx個ごとの連続スライスを、深さの次元でつぎあわせるように、D1でK’[kx]のそれぞれに対して折り畳み、各変換された畳み込みカーネルK’[kx]のそれぞれに対して、対応する折り畳まれた畳み込みカーネルK’’[kx]を生成し、各K’’[kx]のD1における第ikx×Nx+jkx番目のスライスのすべてのCx個のチャネルのデータが、それぞれK’[kx]のD1における第ikx個のスライスの第jkx×Cx個チャネルから開始する連続のCx個チャネルのデータに対応するようにする。ここで、ikxは0以上の整数で、jkxは0以上Nx未満の整数である。
生成された変換された畳み込みカーネルK’[kx]は、D1において異なる次元値(例えば、D1が幅である場合の幅値)を有する可能性があり、又は一或いは複数の変換された畳み込みカーネルK’[kx]が存在する可能性があり、D1における次元値はNxの整数倍ではなく、対応するK’’[kx]のスライスが深さにおいて揃っていない(not aligned)。
このような場合は、Ex、Sx、Nx及び前処理された畳み込みカーネルK’のD1における次元値に基づいて、変換された畳み込みカーネルK’[kx]ごとのD1における期待次元値EVxを決定することができる。例えば、式
に基づいて、変換された畳み込みカーネルK’[kx]ごとのD1における期待次元値EVxを決定することができる。
変換された畳み込みカーネルK’[kx]のD1における次元値がEVx未満の場合、変換された畳み込みカーネルK’[kx]のD1における終了境界でゼロスライスを附加することで調整したK’[kx]により、調整後の変換された畳み込みカーネルK’[kx]のD1における次元値がEVxに等しくなるようにすることができる。そして、D1において調整後の変換された畳み込みカーネルK’[kx]を折り畳み、対応の折り畳まれた畳み込みカーネルK’’[kx]を生成することができる。
ハードウェアの特性又は処理能力(例えば、マルチチャネルをサポートするオペレータまたはメモリ)を直接利用することもできる。例えば、ハードウェアがチャネル揃える(aligning the channels)機能を持つことができる場合、実際のデータによって占められていないチャネルは、ハードウェアによって自動的にゼロ値を有するとみなすことができる。このような場合、各折り畳まれた畳み込みカーネルにおけるスライスごとのチャネルは、ハードウェアによって自動的に揃える。例えば、ハードウェアが同時に32チャネルをサポートしている場合、各折り畳まれた畳み込みカーネルのチャネル数は、ハードウェアによって自動的に32チャネルに揃える(align)ことができる。
一実施形態において、畳み込み層が受信した折り畳まれた特徴データが、オリジナル折り畳まれていない特徴データFDのD1において折り畳んだ結果のみである場合、ステップS310において、得られた折り畳まれた畳み込みカーネルK’’[kx]を最終の折り畳まれた畳み込みカーネルとすることができる。
別の実施形態において、該畳み込み層が受信した折り畳まれた特徴データが、オリジナル折り畳まれていない特徴データFDのD1において、スプライシング数Nxに従って折り畳んでFD’を得、続いてFD’に対して、引き続きFD’’においてスプライシング数Nyに従って折り畳んで得られた結果FD’’である場合、ステップS310において、D2においてスプライシング数Nyに従って、引き続き折り畳まれた畳み込みカーネルK’’[kx]ごとに折り畳むことができる。D2においてNyに従ってK’’[kx]を折り畳む手順は、D1においてNxに従って前処理された畳み込みカーネルK’の手順と同様である。
例えば、K’’[kx]のD2における開始境界にky×Sy個のゼロスライスをそれぞれパディングして、K’’[kx]対応する一又は複数の変換された畳み込みカーネルK’’[kx,ky]を生成することができる。ここで、Syはオリジナル畳み込みカーネルKのD2におけるストライドであり、kyは0以上の整数である。同様に、変換された畳み込みカーネルの数を制御するために、kyの最大値を設定することができる。
例えば、ky<Eyにすることができる。ここで、Eyを、SyとNyの最小公倍数をSyで除算して得られた結果値、又はNyを、NyとSyの最大公約数を除算して得られた結果値と決定することができ、又はSy=1又はSyとNyが互い素である場合、EyをNyに等しいと決定することができる。これにより、K’’[kx]に対応するEy個の変換された畳み込みカーネルK’’[kx,ky]、又はK或いはK’に対応するEx×Ey個の変換された畳み込みカーネルK’’[kx,ky]を生成することができる。
そして、変換された畳み込みカーネルK’’[kx,ky]のそれぞれに対して、D2におけるNy個ごとの連続スライスを、深さの次元でつぎあわせるように、D2でK’’[kx]のそれぞれに対して折り畳み、変換された畳み込みカーネルK’’[kx,ky]のそれぞれに対して、対応の折り畳まれた畳み込みカーネルK’’’[kx,ky]を生成し、各K’’’[kx,ky]のD2における第iky×Ny+jky番目のスライスのすべてのCy個のチャネルのデータが、K’’[kx,ky]のD2における第iky個のスライスの第jky×Cy個チャネルから開始する連続のCy個チャネルのデータにそれぞれ対応するようにする。ここで、ikyは0以上の整数で、jkyは0以上Ny未満の整数である。
同様に、Ey、Sy、Ny及びK’のD2における次元値Vyに基づいて、変換された畳み込みカーネルK’’[kx,ky]ごとのD2における期待次元値EVyを決定することができる。例えば、下式
に基づいて、変換された畳み込みカーネルK’’[kx,ky]ごとのD2における期待次元値EVyを決定することができる。
変換された畳み込みカーネルK’’[kx,ky]のD2における次元値がEVy未満の場合、変換された畳み込みカーネルK’’[kx,ky]のD2における終了境界でゼロスライスを附加することにより調整したK’’[kx,ky]によって、調整後の変換された畳み込みカーネルK’’[kx,ky]のD2における次元値がEVyに等しくなるようにすることができる。そして、D2において調整後の変換された畳み込みカーネルK’’[kx,ky]を折り畳み、対応の折り畳まれた畳み込みカーネルK’’’[kx,ky]を生成するすることができる。
得られたEx×Ey個の折り畳まれた畳み込みカーネルK’’’[kx,ky]を最終の折り畳まれた畳み込みカーネルとすることができる。
図5に、図2におけるFD’’に対して、図4に含まれている4つの幅スライスの畳み込みカーネルK’が幅において折り畳んだ例示を示す。図5に示すように、Nx=2かつSx=1のため、K’に対応する変換された畳み込みカーネルの数が2であると決定することができる。
K’の左側及び右側に0個及び2個のゼロスライスKA(変換1)を、それぞれパディングして、調整後の変換された畳み込みカーネルK’[0]を得る。K’の左側及び右側に1個のゼロスライスKA(変換2)を、それぞれパディングして、調整後の変換された畳み込みカーネルK’[1]を得る。ここで、調整後の変換された畳み込みカーネルK’[0]及びK’[1]の幅はいずれも6
である。
K’[0]について、KS1をKPの後につなぎ合わせ、KS3をKS2の後につなぎ合わせ、KAをKAの後につなぎ合わせて、折り畳まれた畳み込みカーネルK’’[0]を生成することができる。K’[1]について、KPはKAの後につなぎ合わせ、KS2はKS1の後につなぎ合わせ、そしてKAはKS3の後につなぎ合わせて、折り畳まれた畳み込みカーネルK’’[1]を生成することができる。K’’[0]及びK’’[1]ごとの幅、高さ、及び深さは、それぞれ3、3、及び6である。
続いて、K’’[0]及びK’’[1]ごとに高さにおいて折り畳むことができる。図6に示すように、K’’[0]に対して、Ny=2、Sy=1であるため、K’’[0]に対応する変換された畳み込みカーネルの数は2であると決定することができる。
K’’[0]の上側及び下側にそれぞれ0個及び1個のゼロスライスKA’をパディングすることにより、調整後の変換された畳み込みカーネルK’’[0,0]を得ることができ、K’’[0]の上側に1個のゼロスライスKA’をパディングすることにより、調整後の変換された畳み込みカーネルK’’[0,1]を得ることができる。同様に、K’’[1]に対して、変換された畳み込みカーネルK’’[1,0]及びK’’[1,1]を得ることができる。K’’[0,0]、K’’[0,1]、K’’[1,0]及びK’’[1,1]のそれぞれの高さは4
である。
変換された畳み込みカーネルK’’[0,0]に対して、K’’[0,0]のKS2’をKS1’の後につなぎ合わせ、KA’をKS3’の後につなぎ合わせることによって、対応の折り畳まれた畳み込みカーネルK’’’[0,0]を生成することができる。同様に、変換された畳み込みカーネルK’’[0,1]、K’’[1,0]及びK’’[1,1]のそれぞれに対して、対応の折り畳まれた畳み込みカーネルK’’’[0,1]、K’’’[1,0]及びK’’’[1,1]を生成することができる。折り畳まれた畳み込みカーネルK’’’[0,1]、K’’’[1,0]及びK’’’[1,1]のそれぞれの幅、高さ及び深さはそれぞれ3、2及び12である。
例示方法300は、ステップS315へ進み、ステップS310で得られた一又は複数の折り畳まれた畳み込みカーネルを用いて、ステップS305で得られた前処理された折り畳まれた特徴データに対して畳み込み演算を実行する。
該畳み込み層が受信した折り畳まれた特徴データが、オリジナル折り畳まれていない特徴データFDのD1において折り畳んで得られた結果FD’のみの場合、ステップS315において、ステップS310で得られたEx個の折り畳まれた畳み込みカーネルK’’[kx]を用いて、ステップS305で得られた前処理された折り畳まれた特徴データに対して畳み込み演算を実行することができる。
このような場合、オリジナル畳み込みカーネルKのD1におけるストライドSxの値がNxに等しいとすると、折り畳まれた畳み込みカーネルK’’[kx]ごとのD1におけるストライドは1である。でなければ、折り畳まれた畳み込みカーネルK’’[kx]ごとのD1におけるストライドはSxである。また、折り畳まれた畳み込みカーネルK’’[kx]ごとの幅及び高さの別の次元D2におけるストライドは、オリジナル畳み込みカーネルKのD2におけるストライドSyである。
該畳み込み層が受信した折り畳まれた特徴データは、オリジナル折り畳まれていない特徴データFDがD1において、スプライシング数Nxに従って折り畳んでFD’を得、そして、FD’に対して、引き続きFD’’においてスプライシング数Nyに従って得られた折り畳んたFD’’である場合、ステップS315において、ステップS310で得られたEx×Ey個の折り畳まれた畳み込みカーネルK’’’[kx,ky]を用いて、ステップS305で得られた前処理された折り畳まれた特徴データに対して畳み込み演算を実行することができる。
このような場合、オリジナル畳み込みカーネルKのD1におけるストライドSxの値がNxに等しいとすると、折り畳まれた畳み込みカーネルK’’’[kx,ky]ごとのD1におけるストライドは1で、でなければ、折り畳まれた畳み込みカーネルK’’’[kx,ky]ごとのD1におけるストライドはSxである。また、オリジナル畳み込みカーネルKのD2におけるストライドSyの値がNyに等しいとすると、折り畳まれた畳み込みカーネルK’’’[kx,ky]ごとのD2におけるストライドは1で、でなければ、折り畳まれた畳み込みカーネルK’’’[kx,ky]ごとのD2におけるストライドはSyである。
一実施形態では、ステップS315において、すべての折り畳まれた畳み込みカーネルを使用して折り畳まれた特徴データの同一部分に対して畳み込みをした後、D1又はD2において、折り畳まれた畳み込みカーネルのD1におけるストライド又はD2におけるストライドに従い、すべての折り畳まれた畳み込みカーネルを移動させ、折り畳まれた特徴データの他の部分に対して畳み込みを実行する。折り畳まれた特徴データのすべての部分に対して畳み込みを実行した後、最終の出力特徴データを得ることができる。
図7にこのような畳み込みの方法の例示を示す。図7の例示では、図6における折り畳まれた畳み込みカーネルK’’’[0,0]、K’’’[0,1]、K’’’[1,0]、及びK’’’[1,1]を用いて、図4における折り畳まれた特徴データFD’’’に対して畳み込み演算を実行する。
図7に示すように、まず、FD’’’の第1行と第2行において(1,1)、(1,2)、(1,3)、(2,1)、(2,2)及び(2,3)を含む部分に対して、4つの折り畳まれた畳み込みカーネルK’’’[0,0]、K’’’[0,1]、K’’’[1,0]、及びK’’’[1,1]をそれぞれ用いて畳み込みを実行することによって、出力特徴データFDOにおける(1,1)、(2,1)、(1,2)及び(2,2)を含む部分のデータをそれぞれ得る。
幅において、ストライド(すなわち、オリジナル畳み込みカーネルKの幅におけるストライド)1に従い、4つの折り畳まれた畳み込みカーネルK’’’[0,0]、K’’’[0,1]、K’’’[1,0]、及びK’’’[1,1]を移動させ、FD’’’の第1行と第2行において(1,2)、(1,3)、(1,4)、(2,2)、(2,3)及び(2,4)を含む部分に対して畳み込みを実行することによって、出力特徴データFDOにおける(1,3)、(2,3)、(1,4)及び(2,4)を含む部分のデータをそれぞれ得る。
続いで、幅においてストライド(すなわち、オリジナル畳み込みカーネルKの幅におけるストライド)1に従い、4つの折り畳まれた畳み込みカーネルK’’’[0,0]、K’’’[0,1]、K’’’[1,0]、及びK’’’[1,1]を移動させ、FD’’’の第1行と第2行において(1,3)、(1,4)、(1,5)、(2,3)、(2,4)及び(2,5)を含む部分に対して畳み込みを実行することによって、出力特徴データFDOにおける(1,5)、(2,5)、(1,6)及び(2,6)を含む部分のデータをそれぞれ得る。
FD’’’の第1行と第2行に対する畳み込みを完了した後、高さにおいてストライド(すなわち、オリジナル畳み込みカーネルKの高さにおけるストライド)1に従い、FD’’’の第2行と第3行に対して畳み込みを実行するために、4つの折り畳まれた畳み込みカーネルK’’’[0,0]、K’’’[0,1]、K’’’[1,0]、及びK’’’[1,1]を移動させる。FD’’’の第2行と第3行に対して畳み込みを実行する手順は、4つの折り畳まれた畳み込みカーネルK’’’[0,0]、K’’’[0,1]、K’’’[1,0]、及びK’’’[1,1]を用いて、FD’’’の第1行と第2行に対して畳み込みを実行する手順と同様であるため、ここで省略する。
4つの折り畳まれた畳み込みカーネルK’’’[0,0]、K’’’[0,1]、K’’’[1,0]、及びK’’’[1,1]を用いて、FD’’’に対して畳み込みの実行を完了した後、最終の出力特徴データFDOを得る。出力特徴データFDOについての最終行のデータ(4,1)、(4,2)、(4,3)、(4,4)、(4,5)及び(4,6)について、状況に応じて保留し又は捨てることができる。
例えば、図2に示すオリジナル折り畳まれていない特徴データFDに対して、図4に示すオリジナル畳み込みカーネルKを使用して畳み込みを実行した後、3行の出力特徴データ(対応して、高さにおいてFDに対してパディングしない)を得ることを期待する場合、出力特徴データFDOの最終行のデータ(4,1)、(4,2)、(4,3)、(4,4)、(4,5)及び(4,6)を捨てることができる。
畳み込み層の重みパラメータが複数の畳み込みカーネルを有する場合、図7の例示における出力特徴データFDOは、最終の出力特徴データの一つのチャネル上のデータに対応してもよい。
他の実施形態では、折り畳まれた畳み込みカーネルごとに、折り畳まれた特徴データの全体に対してそれぞれ畳み込みを実行することもできる。このような場合、ハードウェア用の畳み込み指令を修正する必要はない。しかし、一つのオリジナル畳み込みカーネルが複数の折り畳まれた畳み込みカーネルに対応する場合、折り畳まれた畳み込みカーネルごとに使用して得られた部分結果は、異なるチャネルにわたって分散されることになる。出力特徴データを畳み込みニューラルネットワークの次の層に提供される前に、又は畳み込みニューラルネットワーク全体の最終出力として提供される前に、一つのチャネルにおける完全な出力結果を得るように、異なるチャネルに分散された部分結果を再度編成又は展開させることができる。
図8にこのような方法で畳み込みを実行した一例を示す。図7の例示とは異なり、図8の例示では、4つの折り畳まれた畳み込みカーネルK’’’[0,0]、K’’’[0,1]、K’’’[1,0]、及びK’’’[1,1]のそれぞれを用いて、FD’’’全体に対して畳み込みを実行する。図8に示すように、折り畳まれた畳み込みカーネルごとの使用は、出力特徴データFDOの部分データしか得ることができない。
例えば、K’’’[0,0]を用いてFD’’’に対して畳み込みを実行した後、(1,1)、(1,3)、(1,5)、(3,1)、(3,3)及び(3,5)を含む一部のデータしか得ることができない。完全な出力特徴データFDOを得るように、それぞれの折り畳まれた畳み込みカーネルを使用して得られた部分データをまとめる(organized together)ことができる。同様に、畳み込み層の重みパラメータが複数の畳み込みカーネルを有する場合、図8の例示における出力特徴データFDOは、最終の出力特徴データの一つのチャネルにおけるデータに対応することができる。
例示の方法300は、折り畳まれた特徴データを、まず従来の折り畳まれていない特徴データに展開する必要がなく、畳み込み層に提供される折り畳まれた特徴データに対して、畳み込み演算を直接実行することができるようにすることで、チャネル利用率の向上、キャッシュの占有率の低減、演算効率の向上に有利である。
例えば、処理手段(例えば、畳み込み演算のための乗算器アレイ)が、一度に32チャネルのデータを処理することができ、重みパラメータの畳み込みカーネルの幅及び高さがそれぞれ5及び5であると仮定すると、720×1280で、チャネル数が3であるRGB画像に対応するNx=2の幅の折り畳まれた画像に対して、折り畳まれた画像を展開するのにもたらす余計な演算を考慮せずに、本開示に係る方法を用いて、幅の折り畳まれた画像に対して直接畳み込み演算を実行する場合の演算量は、展開された画像に対して従来の方法を用いて畳み込み演算を実行する場合の演算量の約60%に過すぎず、有効演算の割合が展開された画像に対して従来の方法を用いて畳み込み演算を実行した場合の約2倍である。
720×1280で、及びチャネル数が3であるRGB画像に対応するNx=2かつNy=2の幅プラス高さの折り畳み画像に対して、折り畳まれた画像を展開するのにもたらす余計な演算を考慮せずに、本開示に係る方法を用いて、折り畳まれた画像に対して直接畳み込み演算を実行する場合の演算量は、展開された画像に対して従来の方法を用いて畳み込み演算を実行する場合の演算量の約36%に過すぎず、有効演算の割合が展開された画像に対して従来の方法を用いて畳み込み演算を実行した場合の約4倍である。
図9及び図10は、本開示の一実施形態による折り畳まれた特徴データに対して畳み込み演算を実行する例示的な装置のブロック図を示す。
図9に示すように、例示装置900は、一又は複数のプロセッサ910を含むことができる。プロセッサ910は、例えば、汎用CPU、GPU、専用ニューラルネットワークプロセッサまたはアクセラレータなどのようなデータ処理能力及び/又は指令実行能力を有する任意の形態の処理手段であってもよい。例えば、プロセッサ910は、本願の実施形態による折り畳まれた特徴データに対して畳み込み演算を実行する方法を実行することができる。さらに、プロセッサ910は、所望の機能を実行するために装置900うちの他の構成要素を制御することができる。
プロセッサ910は、バスシステムおよび/または他の形態の接続機構(図示せず)を介して、メモリ920およびI/Oインターフェイス930に接続することができる。
メモリ920は、例えば、揮発性メモリおよび/または不揮発性メモリなどの様々なコンピュータ読み書き可能な記憶媒体を含むことができる。揮発性メモリは、ランダムアクセスメモリ(RAM)及び/又はキャッシュメモリ(キャッシュ)などを含むことができる。不揮発性メモリは、例えば、読み取り専用メモリ(ROM)、ハードディスク、フラッシュメモリ等を含むことができる。
読み書き可能な記憶媒体は、例えば、電気、磁気、光、電磁気、赤外線、または半導体のシステム、装置、またはデバイス、またはそれらの任意の組み合わせを含むことができる。例えば、ニューラルネットワーク専用プロセッサに合わせて使用する場合、メモリ920は、専用プロセッサが搭載されるチップ上のRAMであってもよい。メモリ920は、本開示に係る実施形態による折り畳まれた特徴データに対して畳み込み演算を実行する方法の実行を装置900に指示するためのプログラム指令を含むことができる。
I/Oインターフェイス930は、プロセッサ910にパラメータまたはデータを提供し、かつプロセッサ910によって処理された結果データの出力のために用いることができる。
図10に示すように、例示装置1000は、プリプロセッサ1010、フォールディング手段1020及び演算手段1030を含むことができる。
プリプロセッサ1010は、畳み込み層に提供される折り畳まれた特徴データ及びオリジナル畳み込みカーネルに対して前処理を実行するように構成することができる。一実施形態では、プリプロセッサ1010は、図3に示す例示方法300のステップS305を実行するように構成することができる。
フォールディング手段1020は、オリジナル畳み込みカーネルに対応する一または複数の折り畳まれた畳み込みカーネルを生成するために、折り畳まれた特徴データの折り畳み方法に従って、幅及び高さの少なくとも一の次元で前処理されたオリジナル畳み込みカーネルを折り畳むように構成されてもよい。一実施形態では、第2のフォールディング手段1020は、例えば、図3に示す例示方法300のステップS310を実行するように構成することができる。
演算手段1030は、生成された一又は複数の折り畳まれた畳み込みカーネルを用いて、前処理された折り畳まれた特徴データに対して畳み込み演算を実行するように構成することができる。一実施形態では、演算手段1030は、図3に示す例示方法300のステップS315を実行するように構成することができる。
図9及び図10に示された装置900及び1000は単なる例示であって限定的なものではない。必要に応じて、本開示に係る実施形態に係る装置は、その他の部品および/または構造を具備することができることは理解されるべきである。
図11は、本開示の実施形態に係る折り畳まれた特徴データに対して畳み込み演算を実行するための装置の一例を示す。図11を参照すると、装置1100は、メインプロセッサ1110、ダイナミックランダムアクセスメモリ(DRAM)1120、及び畳み込みエンジン1130を含むことができる。それらはバスシステム1101によって相互接続されている。
メインプロセッサ1110は、ARMプロセッサ、汎用中央処理装置(CPU)、又は任意のほかのタイプのプロセッサ又は制御手段であってもよく、装置1100における他の部品を制御し、例えば、後述するDRAM1120及び畳み込みエンジン1130の動作を制御するためのプログラム指令を実行させることができる。
DRAM1120は、例えば、DDR RAM、又は他の任意のタイプのDRAMとすることができ、磁気ハードディスクなどの不揮発性メモリから読み出されたデータを一時的に記憶することができる。例えば、畳み込みニューラルネットワークにおける畳み込み層のための上述の折り畳まれた特徴データ及びオリジナル畳み込みカーネル、又はメインプロセッサ1110などによって実行されるプログラム指令等は、DRAM1120に一時的に記憶されてもよい。
畳み込みエンジン1130は、折り畳まれた特徴データ及びオリジナル畳み込みカーネルをDRAM1120から読みだし、上述の方法のいずれかに従って折り畳まれた特徴データに対して直接畳み込み演算を実行することができる。畳み込みエンジン1130は、チップに形成されてもよく、その構成要素及び動作は以下に詳細に説明する。
図11を参照すると、畳み込みエンジン1130は入力バッファ1131を含み、入力バッファ1131はスタティックランダムアクセスメモリ(SRAM)であってもよい。DRAM1120から、折り畳まれた特徴データ及びオリジナル畳み込みカーネルを読み出し、SRAM1131に格納することができる。図11に示す例示では、折り畳まれた特徴データとオリジナル畳み込みカーネルは、同一のSRAM1131に格納することができる。
ほかの実施形態では、それらは異なるSRAMに格納することができる。折り畳まれた特徴データ及びオリジナル畳み込みカーネルがSRAM1131に格納される前に、またはそれと同時に、折り畳まれた特徴データ及びオリジナル畳み込みカーネルに対して、上述した図4を参照して述べた前処理を実行することができる。なお、前処理の詳細はここでは繰り返さない。
一実施形態では、折り畳まれた特徴データに対する前処理及び折り畳まれた特徴データのSRAM1131への格納は、同一のステップで実行してもよい。例えば、DRAM1120から読み出された折り畳まれた特徴データをSRAM1131に格納するとき、SRAM1131に格納された折り畳まれた特徴データが前処理される(上述のように、ゼロでパディングする)ものになるように、追加されるゼロ値を折り畳まれた特徴データのデータストリームに挿入することができる。図12A及びBは、特徴データが如何にSRAM1131に存在するのかを示す例示であり、そのうち、図12Aは図1のオリジナル特徴データFDを示し、図12Bは図1の折り畳まれた特徴データFD’を示す。
まず図12Aを参照すると、SRAM1131は、複数の列1140に配置された複数のメモリ手段1141を含んでもよく、各列1140は「スライス」とも呼ばれる。各メモリ手段1141は、それぞれ複数のビットを格納するための複数のメモリユニット(図示せず)を含んでもよい。
例えば、各メモリ手段1141は、8ビット、16ビット又はそれ以上のビットを格納することができる。各メモリ手段1141に格納されているビット数はデータ幅とも称する。メモリ手段1141ごとにアドレスを有し、SRAMスライス1140は列方向に連続的にアドレス指定(addressing)される。メモリ手段1141ごとの複数のメモリ手段は同期で読み書きをすることができ、複数のSRAMスライス1140は同期して読み書きすることができるため、SRAM1131のデータ幅はB×Nに等しく、BはSRAMチップ(又はメモリ手段1141)のデータ幅であり、NはSRAM1131に含まれるスライス1140の数である。
メモリ手段1141ごとのデータ幅を64とすると、8個のデータを格納することができる。オリジナル特徴データFDは折り畳まれていないため、各メモリ手段1141には1画素(3チャネル、3データ)しか格納されておらず、メモリ手段1141における残りの40(64−3×8)ビットは、図12Aに示すように、5つのゼロ値がパディングされてもよい。
折り畳まれる特徴データFD’については、図12Bに示すように、メモリ手段1141ごとに2つの画素を格納することができ、各画素の末尾には一つのゼロ値のみパディングする。ほかの実施形態では、代わりに、第2番目の画素の末尾にだけ2つのゼロ値をパディングすることができる。メモリ手段1141がより大きいデータ幅を有する場合、メモリ手段1141ごとに2画素又はより多くの画素を格納することができることは理解される。メモリ手段1141ごとに2画素又はより多くの画素を格納することにより、一つのメモリ手段1141において1画素しか格納しない場合に比較して、一サイクルで、後述の計算手段1133に、畳み込み演算の実行のためのより多くのデータを提供することができる。それにより、装置1100の計算効率を高めることができる。
さらに、前処理されたオリジナル畳み込みカーネルがSRAM1131に格納される前に又は同時に折り畳みを行ってもよい。上記の図5〜図6を参照して述べたように、オリジナル畳み込みカーネルに対応する一又は複数の折り畳まれた畳み込みカーネルを生成するように、折り畳まれた特徴データの折り畳み方法に従って、幅及び高さの少なくとも一つの次元で、前処理されたオリジナル畳み込みカーネルに対して折り畳んでもよい。ここで折り畳み処理の詳細は繰り返さない。
一又は複数の折り畳まれた畳み込みカーネルは、SRAM1131に格納されてもよい。同様に、オリジナル畳み込みカーネルに対する前処理、折り畳み、及び格納ステップは同一のステップで実行することができる。例えば、DRAM1120から読み出されたオリジナル畳み込みカーネルのデータは、所定のフォーマットに従ってSRAM1131に書き込むことができ、オリジナル畳み込みカーネルのデータストリームに追加のゼロ値を挿入することができ、それによって、SRAM1131に格納された畳み込みカーネルが上述のように前処理されかつ折り畳まれたものにする。
一又は複数の折り畳まれた畳み込みカーネルのSRAM1131への格納は、異なるSRAMスライス1140に格納される場合を除いて、上述の図12Aおよび12Bを参照して述べた折り畳まれた特徴データの格納と同様であってもよい。ここで、折り畳まれた畳み込みカーネルのSRAM1131への格納の詳細は省略する。SRAM1131はDRAM1120よりも容量が小さいため、毎回一部の特徴データ及び一部の畳み込みカーネルだけ読み出すようにしてもよいことは理解されるべきである。
図11を参照すると、折り畳まれた特徴データ及び一又は複数の折り畳まれた畳み込みカーネルを、SRAM1131から計算手段1133に読み出し、一又は複数の折り畳まれた畳み込みカーネルを用いて折り畳まれた特徴データに対して直接畳み込み演算を実行することができる。計算手段1133は、畳み込み演算を実行するために、複数の乗算器及び複数の加算器を含んでもよい。
一の例示では、計算手段1133は、折り畳まれた特徴データにおける複数の画素のそれぞれを、複数の折り畳まれた畳み込みカーネルの対応する画素との積を同時に計算することができる。該演算を繰り返すことにより、すべての折り畳まれた畳み込みカーネルを用いて、折り畳まれた特徴データの同一の部分に対して畳み込みをすることができる。
例えば、計算手段1133は256個の乗算器を含むと仮定すると、折り畳まれた特徴データの8個の画素(画素ごとに4つのチャネルを有し、合計32個のデータがある)のそれぞれと8個の畳み込みカーネルの対応する画素(同様に4つのチャネルを有する)との積を同時に計算でき、64個のデータ(8画素×8画素)を生成することができる。特徴データが折り畳まれていない従来の場合と比較して、計算効率が大幅に改善された。
計算手段1133の計算結果は、出力バッファ(SRAM)1135に格納することができる。入力バッファ1131及び出力バッファ1135には、それぞれバッファ付きクロスバー・スイッチ1132及び1134を設けることができ、計算手段1133に提供されるデータ及び計算手段1133から受信したデータを制御するようにする。必要に応じて、計算結果を出力バッファ1135からDRAM1120に移動させてもよい。
前後文から明確に別途の要求がある場合を除き、明細書及び特許請求の範囲の全体にわたって、用語「comprise」(有する)、「include」(含む)などは、排他性又は限界性(exhaustive)の意味と逆である包括的な意味として解釈すべきであり、つまり、「を含むが、これに限定されない」の意味として解釈すべきである。また、用語「本明細書」、「以上の記載」、「以下の記載」及び似たような意味の用語が本開示において使用される場合、本開示のある具体的な部分を指すものではなく、本開示の全体を指すとすべきである。
前後文が許される場合、単数形または複数形を使用する以上の記載における用語も、それぞれ複数又は単数を含むことができる。二つ又は複数の項目のリストを言及する場合の用語「又は」について、該用語は該用語の以下の解釈における全部をカバーする。すなわち、リストにおける任意の項目、リストにおけるすべての項目、及びリストにおける項目の任意の組み合わせの全部をカバーする。
本開示に係る実施形態の上述の詳細な説明は、制限的又は本発明を以上の記載によって開示された範囲内に限定することを意図するものではない。説明のために、本開示に係る具体的な実施形態及び例示を述べたが、当該分野における技術者が認識しているように、本発明の技術的範囲内である限り、各種の均等の範囲における変更は可能である。
例えば、処理またはブロックは所定の順序で示されているが、代替の実施形態は、異なる順序でこれらのステップの処理を実行してもよく、又は異なる順序でこれらのブロックを有するシステムを採用してもよく、一部の処理又はブロックは、削除され、移動され、追加され、細分され、組み合わせられ及び/又は修正されてもよい。これらの一部の処理又はブロックは直列的な実行で示されるが、代わりにこれらの一部の処理又はブロックは並列的に実行されてもよく、又は異なる時間に実行されてもよい。
本明細書で提供される本発明の教示は、必ずしも上述のシステムである必要はなく、他のシステムにも適用することができる。上述のそれぞれの実施形態に係る部品及び動作を組み合わせることで、別の実施形態を提供することができる。
本開示に係るいくつかの実施形態について説明したが、これらの実施形態は、例示として示すものであり、本開示の範囲を限定することを意図していない。実際、本明細書に記載された新規の方法及びシステムは、様々なその他の形態で実施することができる。また、本願の範囲から逸脱しなければ、本明細書に記載された方法及びシステムの形式上の種々の省略、置換及び変更をすることが可能である。
300 例示方法
900 例示装置
910 プロセッサ
920 メモリ
930 I/Oインターフェイス
1000 例示装置
1010 プリプロセッサ
1020 フォールディング手段
1030 演算手段
1100 メインプロセッサ
1120 DRAM
1130 畳み込みエンジン
1131 入力バッファ(SRAM)
1132、1134 バッファ付きクロスバー・スイッチ
1133 計算手段
1135 出力バッファ(SRAM)

Claims (17)

  1. 折り畳まれた特徴データに対してコンピュータ装置が畳み込み演算を実行する方法であって、
    ダイナミックランダムアクセスメモリ(DRAM)から畳み込み層に提供される折り畳まれた特徴データ及びオリジナル畳み込みカーネルを読み出すステップと、
    前記折り畳まれた特徴データ及び前記オリジナル畳み込みカーネルに対し、ゼロ個の又は一若しくは複数個のゼロスライスをパディングすることにより前記折り畳まれた特徴データ及び前記オリジナル畳み込みカーネルの双方を幅又は高さの少なくとも一つの次元で揃えるのを可能にする前処理を実行するステップと、
    前処理された折り畳まれた特徴データをスタティックランダムアクセスメモリ(SRAM)に格納するステップと、
    前記折り畳まれた特徴データの折り畳み方法に基づいて、幅又は高さの少なくとも一つの揃えられた次元で前処理されたオリジナル畳み込みカーネルを折り畳み、前記オリジナル畳み込みカーネルに対応する一又は複数の折り畳まれた畳み込みカーネルを生成するステップと、
    前記一又は複数の折り畳まれた畳み込みカーネルを前記SRAMに格納するステップと、
    前記前処理された折り畳まれた特徴データ及び前記一つ又は複数の折り畳まれた畳み込みカーネルを、前記SRAMから計算手段に読み出し、前記一又は複数の折り畳まれた畳み込みカーネルを用いて、前記前処理された折り畳まれた特徴データに対して前記畳み込み演算を実行するステップと
    を含む折り畳まれた特徴データに対して畳み込み演算を実行する方法。
  2. 前記SRAMは複数のメモリ手段を含み、メモリ手段ごとにメモリアドレスを有し、前記前処理された折り畳まれた特徴データにおいて少なくとも2画素ごとに同一のメモリ手段に格納され、各折り畳まれた畳み込みカーネルにおいて、少なくとも2画素ごとに同一のメモリ手段に格納される請求項1に記載の方法。
  3. 前記折り畳まれた特徴データは、第1の次元における折り畳まれていない第1特徴データに対応し、前記第1特徴データにおける第1の次元での第ifx×N+jfx番目のスライスのすべてのC個のチャネルのデータは、前記折り畳まれた特徴データの前記第1の次元における第ifx番目のスライスのjfx×C番目のチャネルから開始する連続のC個のチャネルのデータに対応し、前記第1の次元は幅及び高さのいずれかであり、ifxは0以上の整数で、Nは1より大きい整数で、jfxは0以上N未満の整数で、Cは0より大きい整数である請求項1に記載の方法。
  4. 前記前処理は、
    前記畳み込み層によって指定されたパディング方法に基づいて、前記パディング方法が求める前記第1特徴データの前記第1の次元における開始境界でのパディング量を示す第1パディング量Pを決定するステップと、
    前記第1パディング量Pは0以上であり、
    を含む請求項3に記載の方法。
  5. 前記オリジナル畳み込みカーネルの前記第1の次元における第1ストライドがNに等しくない場合、前記畳み込み演算を行うことは、
    前記オリジナル畳み込みカーネルに対応するすべての折り畳まれた畳み込みカーネルを用いて、前記前処理された折り畳まれた特徴データの同一部分に対して畳み込みを行った後に、前記オリジナル畳み込みカーネルに対応するすべての折り畳まれた畳み込みカーネルを、第1の次元で前記第1ストライドに従って同時に移動させ、前記折り畳まれた特徴データのすべての部分が畳み込まれて最終出力特徴データを得るまで前記折り畳まれた特徴データの次の部分に対して畳み込みを行うステップ、又は
    前記オリジナル畳み込みカーネルに対応する各折り畳まれた畳み込みカーネルをそれぞれ用いて、前記前処理された折り畳まれた特徴データ全体に対して畳み込みを行うステップを含み、
    前記折り畳まれた畳み込みカーネルごとの前記第1の次元におけるストライドは前記第1ストライドに等しく、
    前記オリジナル畳み込みカーネルの第1の次元における第1ストライドがNに等しい場合、前記折り畳まれた畳み込みカーネルごとの第1の次元におけるストライドは1である請求項3に記載の方法。
  6. 前記オリジナル畳み込みカーネルに対応するすべての折り畳まれた畳み込みカーネルを用いて、前記前処理された折り畳まれた特徴データの同一部分に対して畳み込みを行うことは、
    前記計算手段における複数の乗算器によって、前記前処理された折り畳まれた特徴データにおける複数の画素のうちのそれぞれが、複数の折り畳まれた畳み込みカーネルの一の対応する画素との積を同時に計算するステップを含む請求項5に記載の方法。
  7. 前記少なくとも一つの次元で前処理されたオリジナル畳み込みカーネルの折り畳みを行うことは、
    前処理されたオリジナル畳み込みカーネルの前記第1の次元における開始境界で、k×S個のゼロスライスをそれぞれパディングし、E個の第1変換された畳み込みカーネルを生成するステップと、
    は前記オリジナル畳み込みカーネルの前記第1の次元における第1のストライドであり、Eは1以上であってN及びSによって決まる値であり、kは0以上E未満の整数であり、
    前記第1の次元におけるN個ごとの連続スライスを、深さの次元でつなぎ合わせるように、前記第1の次元で第1変換された畳み込みカーネルのそれぞれに対して第1折り畳みを行い、第1変換された畳み込みカーネルのそれぞれに対して、対応する第1折り畳まれた畳み込みカーネルを生成するステップと
    を含む請求項3に記載の方法。
  8. 前記第1変換された畳み込みカーネルごとの前記第1の次元における第ikx×N+jkx番目のスライスのすべてのC個のチャネルのデータは、対応する第1折り畳まれた畳み込みカーネルの前記第1の次元における第ikx番目のスライスのjkx×C番目から開始する連続のC個のチャネルのデータにそれぞれ対応し、ikxは0以上の整数で、jkxは0以上N未満の整数である請求項7に記載の方法。
  9. 前記第1特徴データは、第2の次元における折り畳まれていない第2特徴データに対応し、前記第2特徴データの第2の次元における第ify×N+jfy番目のスライスのすべてのC個のチャネルのデータは、前記第1特徴データの第2の次元におけるify番目のスライスの第jfy×C番目のチャネルから開始する連続のC個のチャネルのデータに対応し、第2の次元は幅又は高さのうちの他方であり、ifyは0以上の整数で、Nは1より大きい整数で、jfyは0以上N未満の整数で、Cは0より大きい整数である請求項7に記載の方法。
  10. 前記前処理は、
    前記畳み込み層によって指定されたパディング方法に基づいて、前記パディング方法が求める前記第2特徴データの前記第2の次元における開始境界でのパディング量を示す第2のパディング量Pを決定するステップと、
    前記第2のパディング量Pは0以上であり、
    をさらに含む請求項9に記載の方法。
  11. 前記少なくとも一つの次元で前処理されたオリジナル畳み込みカーネルの折り畳みを行うことは、
    第1折り畳まれた畳み込みカーネルごとの前記第2の次元における開始境界で、k×S個のゼロスライスをそれぞれパディングし、前記第1折り畳まれた畳み込みカーネルのそれぞれに対して、E個の第2変換された畳み込みカーネルをそれぞれ生成するステップと、
    は前記オリジナル畳み込みカーネルの前記第2の次元における第2のストライドで、Eは1以上であってN及びSによって決まる値であり、kは0以上E未満の整数であり、
    前記第2の次元におけるN個ごとの連続のスライスを深さの次元でつなぎ合わせるように、前記第2の次元で第2変換された畳み込みカーネルのそれぞれに対して第2折り畳みを行い、第2変換された畳み込みカーネルのそれぞれに対して、対応する第2折り畳まれた畳み込みカーネルを生成するステップと
    をさらに含む請求項9に記載の方法。
  12. 前記第2変換された畳み込みカーネルごとの前記第2の次元における第iky×N+jky番目のスライスのすべてのC個のチャネルのデータは、対応する第2折り畳まれた畳み込みカーネルの前記第2の次元における第iky番目のスライスのjky×C番目から開始する連続のC個のチャネルのデータにそれぞれ対応し、ikyは0以上の整数で、jkyは0以上N未満の整数である請求項11に記載の方法。
  13. 前記オリジナル畳み込みカーネルの前記第2の次元における第2ストライドがNに等しくない場合、前記畳み込み演算を行うことは、
    前記オリジナル畳み込みカーネルに対応するすべての折り畳まれた畳み込みカーネルを用いて、前記前処理された折り畳まれた特徴データの同一部分に対して畳み込みを行った後に、前記オリジナル畳み込みカーネルに対応するすべての折り畳まれた畳み込みカーネルを、第2の次元で前記第2ストライドに従って同時に移動させ、前記折り畳まれた特徴データのすべての部分が畳み込まれて最終出力特徴データを得るまで前記折り畳まれた特徴データの次の部分に対して畳み込みを行うステップ、又は
    前記オリジナル畳み込みカーネルに対応する各折り畳まれた畳み込みカーネルをそれぞれ用いて、前記前処理された折り畳まれた特徴データ全体に対して畳み込みを行うステップを含み、
    前記折り畳まれた畳み込みカーネルごとの前記第2の次元におけるストライドは前記第2ストライドに等しく、
    前記オリジナル畳み込みカーネルの第2の次元における第2ストライドがNに等しい場合、前記折り畳まれた畳み込みカーネルごとの第2の次元におけるストライドは1である請求項11に記載の方法。
  14. 折り畳まれた特徴データに対して畳み込み演算を実行するための装置であって、
    前記装置は一又は複数のプロセッサを具備し、前記一又は複数のプロセッサ以下のステップを実行させるための指令を実行するように構成され、
    前記ステップは、
    ダイナミックランダムアクセスメモリ(DRAM)から畳み込み層に提供された折り畳まれた特徴データ及びオリジナル畳み込みカーネルを読み出すステップと、
    前記折り畳まれた特徴データ及びオリジナル畳み込みカーネルに対し、ゼロ個の又は一若しくは複数個のゼロスライスをパディングすることにより前記折り畳まれた特徴データ及び前記オリジナル畳み込みカーネルの双方を幅又は高さの少なくとも一つの次元で揃えるのを可能にする前処理を実行するステップと、
    前処理された折り畳まれた特徴データをスタティックランダムアクセスメモリ(SRAM)に格納するステップと、
    前記折り畳まれた特徴データの折り畳み方法に基づいて、幅又は高さの少なくとも一つの揃えられた次元で前処理されたオリジナル畳み込みカーネルの折り畳みを行い、前記オリジナル畳み込みカーネルに対応する一又は複数の折り畳まれた畳み込みカーネルを生成するステップと、
    前記一又は複数の折り畳まれた畳み込みカーネルを前記SRAMに格納するステップと、
    前記前処理された折り畳まれた特徴データ及び前記一又は複数の折り畳まれた畳み込みカーネルを、前記SRAMから計算手段に読み出し、前記一又は複数の折り畳まれた畳み込みカーネルを用いて、前記前処理された折り畳まれた特徴データに対して前記畳み込み演算を実行するステップと
    を含む装置。
  15. 折り畳まれた特徴データに対してコンピュータ装置が畳み込み演算を実行する方法であって、
    畳み込み層に提供された前記折り畳まれた特徴データ及びオリジナル畳み込みカーネルに対し、ゼロ個の又は一若しくは複数個のゼロスライスをパディングすることにより前記折り畳まれた特徴データ及び前記オリジナル畳み込みカーネルの双方を幅又は高さの少なくとも一つの次元で揃えるのを可能にする前処理を実行するステップと、
    前記折り畳まれた特徴データの折り畳み方法に基づいて、前処理されたオリジナル畳み込みカーネルを、幅又は高さの少なくとも一つの揃えられた次元で折り畳み、前記オリジナル畳み込みカーネルに対応する一又は複数の折り畳まれた畳み込みカーネルを生成するステップと、
    前記一又は複数の折り畳まれた畳み込みカーネルを用いて、前記前処理された折り畳まれた特徴データに対して前記畳み込み演算を実行するステップと
    を含む方法。
  16. コンピュータプログラムであって、
    前記コンピュータプログラムは、一以上のメモリと、一以上のプロセッサと、計算手段とを具備する装置によって実行されると、請求項1乃至請求項13のいずれか1項に記載の方法が実現されるコンピュータプログラム。
  17. コンピュータ装置によって実行されたときに請求項1乃至請求項13のいずれか1項に記載の方法を実行させるべく動作するプログラム指令を記憶したコンピュータ可読非一時記憶媒体
JP2018221116A 2017-11-28 2018-11-27 折り畳まれた特徴データに対して畳み込み演算を実行するための方法および装置 Active JP6713036B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201711212000.8 2017-11-28
CN201711212000.8A CN107832842B (zh) 2017-11-28 2017-11-28 针对折叠特征数据执行卷积运算的方法和装置

Publications (2)

Publication Number Publication Date
JP2019102082A JP2019102082A (ja) 2019-06-24
JP6713036B2 true JP6713036B2 (ja) 2020-06-24

Family

ID=61646178

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018221116A Active JP6713036B2 (ja) 2017-11-28 2018-11-27 折り畳まれた特徴データに対して畳み込み演算を実行するための方法および装置

Country Status (5)

Country Link
US (1) US11500958B2 (ja)
EP (1) EP3489864A1 (ja)
JP (1) JP6713036B2 (ja)
KR (1) KR102129895B1 (ja)
CN (1) CN107832842B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109190758B (zh) * 2018-09-04 2021-06-15 地平线(上海)人工智能技术有限公司 用于展开卷积神经网络的张量数据的方法和装置
KR102637733B1 (ko) * 2018-10-31 2024-02-19 삼성전자주식회사 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법
CN111723917B (zh) * 2019-03-21 2022-11-01 中科寒武纪科技股份有限公司 运算方法、装置及相关产品
CN111832585B (zh) * 2019-04-16 2023-04-18 杭州海康威视数字技术股份有限公司 图像处理的方法和装置
CN110188773B (zh) * 2019-05-24 2021-06-22 北京迈格威科技有限公司 图像处理方法及装置
CN113435591B (zh) * 2019-08-14 2024-04-05 中科寒武纪科技股份有限公司 数据处理方法、装置、计算机设备和存储介质
US11699081B2 (en) * 2019-12-20 2023-07-11 Meta Platforms, Inc. Systems and methods for reducing data movement during convolution operations in artificial neural networks
EP4273751A1 (en) * 2020-12-31 2023-11-08 Cambricon Technologies Corporation Limited Data processing apparatus and method for executing neural network model, and related products
CN112668717B (zh) * 2021-01-04 2023-06-02 哈尔滨工业大学 一种面向神经网络模型优化的数据处理方法和装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1502203A2 (en) * 2002-01-10 2005-02-02 Massively Parallel Technologies, Inc. Parallel processing systems and method
US8634604B2 (en) * 2008-05-05 2014-01-21 Sonavation, Inc. Method and system for enhanced image alignment
EP3035204B1 (en) * 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
US10405739B2 (en) 2015-10-23 2019-09-10 International Business Machines Corporation Automatically detecting eye type in retinal fundus images
JP6609505B2 (ja) * 2016-04-06 2019-11-20 Kddi株式会社 画像合成装置及びプログラム
US10706348B2 (en) * 2016-07-13 2020-07-07 Google Llc Superpixel methods for convolutional neural networks
JP6964969B2 (ja) * 2016-09-30 2021-11-10 キヤノン株式会社 演算処理装置、演算処理方法及びプログラム
KR20240093932A (ko) * 2017-05-19 2024-06-24 모비디어스 리미티드 콘볼루션 효율을 개선하기 위한 방법들, 시스템들, 및 장치

Also Published As

Publication number Publication date
US11500958B2 (en) 2022-11-15
EP3489864A1 (en) 2019-05-29
JP2019102082A (ja) 2019-06-24
KR102129895B1 (ko) 2020-07-03
US20190163717A1 (en) 2019-05-30
KR20190062303A (ko) 2019-06-05
CN107832842B (zh) 2020-05-22
CN107832842A (zh) 2018-03-23

Similar Documents

Publication Publication Date Title
JP6713036B2 (ja) 折り畳まれた特徴データに対して畳み込み演算を実行するための方法および装置
JP6775565B2 (ja) 畳み込みニューラルネットワークの畳み込み層における演算を実行するための方法、装置、メモリ及びコンピュータプログラム
JP6856609B2 (ja) 畳み込みニューラルネットワークの畳み込み層における演算を実行する方法及び装置
US10642622B2 (en) Arithmetic processing device and control method of the arithmetic processing device
WO2019127517A1 (zh) 数据处理方法、设备、dma控制器及计算机可读存储介质
CN109885407B (zh) 数据处理方法和装置、电子设备、存储介质
EP3093757B1 (en) Multi-dimensional sliding window operation for a vector processor
CN112686377B (zh) 利用卷积硬件对特征数据进行反卷积处理的方法和装置
CN112703511A (zh) 运算加速器和数据处理方法
JP2020126651A (ja) ニューラルネットワークのコンボルーション演算を処理する方法及び装置
CN111133457A (zh) 电子设备及其控制方法
WO2023103551A1 (zh) 图像数据处理方法、装置、设备及存储介质
CN114662647A (zh) 处理用于神经网络的层的数据
KR20220067142A (ko) 하드웨어로 구현되는 초해상도 장치를 위한 전처리 장치 및 방법
WO2020194465A1 (ja) ニューラルネットワーク回路
JP2021002185A (ja) 高位合成装置及び高位合成方法
US11842273B2 (en) Neural network processing
KR102448147B1 (ko) 디컨볼루션 연산에 기반한 다차원 정보 생성 방법, 그리고 이를 구현하기 위한 장치
US20240257432A1 (en) Method of generating a mipmap
CN118643253A (zh) 数据处理方法、装置、设备和存储介质
CN117786298A (zh) 一种用于arm架构的通用矩阵乘法计算方法及系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190320

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200114

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200413

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: 20200519

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200602

R150 Certificate of patent or registration of utility model

Ref document number: 6713036

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250