(57)【要約】      （修正有）【課題】希薄化畳み込みニューラルネットワークにおける畳み込み演算を、ハードウェアによって効率的に実現する装置及び方法を提供する。【解決手段】畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置は、重みパラメータの１つまたは複数の非ゼロ要素を選択するセレクタ２００と、選択された非ゼロ要素に対応する、入力特徴データ中のデータ項目を選択するセレクタ３００と、演算を実行する計算機ユニット４００とを備える。装置は、希薄化畳み込みニューラルネットワークにおける畳み込み演算をハードウェアによって効率的に実現することができる。【選択図】図２
2019106186.tif 000002
【特許請求の範囲】
【請求項１】
畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置であって、
重みパラメータを記憶する第１のメモリに結合された第１のセレクタと、
入力特徴データを記憶する第２のメモリに結合された第２のセレクタと、
計算機と、
を備え、
前記第１のセレクタは、前記重みパラメータの１つまたは複数のカーネルの１つまたは複数の第１の非ゼロ要素を、１つまたは複数の第１のチャネル内で選択するように構成されており、
各第１のチャネルは、少なくとも１つの第１の非ゼロ要素を含み、
各第１の非ゼロ要素は、対応する前記カーネルの同じ要素位置にあり、
前記要素位置は、高さおよび幅の二次元における二次元位置であり、
前記第２のセレクタは、前記入力特徴データの１つまたは複数の第１のデータ項目を、前記１つまたは複数の第１の非ゼロ要素に対応する前記１つまたは複数の第１のチャネル内で選択するように構成されており、
前記入力特徴データ中の各第１のデータ項目のデータ項目位置は、対応する前記第１の非ゼロ要素の前記要素位置によって決まり、
各第１のデータ項目は、対応する前記第１の非ゼロ要素と同じ第１のチャネルにあり、
前記データ項目位置は、高さおよび幅の二次元における二次元位置であり、
前記計算機は、前記第２のセレクタからの各第１のデータ項目と、前記第１のセレクタからの当該第１のデータ項目に対応する前記第１の非ゼロ要素とを乗算して積を求め、前記積を累積するように構成されている、
畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置。
【請求項２】
第１のカウンタをさらに備え、
前記第１のセレクタは、前記１つまたは複数のカーネルのそれぞれのすべての非ゼロ要素を前記重みパラメータの全カーネルの間で選択することによって、１つまたは複数の第２のチャネル内で前記１つまたは複数のカーネルの１つまたは複数の第２の非ゼロ要素を選択するように構成され、
前記１つまたは複数のカーネルは、前記第１のカウンタの現在のカウント値に対応し、
前記１つまたは複数の第２のチャネルは、前記１つまたは複数の第１のチャネルを含み、
前記１つまたは複数の第２の非ゼロ要素は、前記１つまたは複数の第１の非ゼロ要素を含む、
請求項１に記載の装置。
【請求項３】
第１のカウンタをさらに備え、
前記第１のセレクタは、前記１つまたは複数のカーネルのそれぞれの１つまたは複数のチャネル内で前記第１のカウンタの現在のカウント値に対応する要素位置において１つまたは複数の非ゼロ要素を選択することによって、１つまたは複数の第２のチャネル内で前記１つまたは複数のカーネルの１つまたは複数の第２の非ゼロ要素を選択するように構成され、
前記１つまたは複数の第２のチャネルは、前記１つまたは複数の第１のチャネルを含み、
前記１つまたは複数の第２の非ゼロ要素は、前記１つまたは複数の第１の非ゼロ要素を含む、
請求項１に記載の装置。
【請求項４】
第１のカウンタをさらに備え、
前記第１のセレクタは、前記１つまたは複数のカーネルの１つまたは複数の非ゼロ要素を前記第１のカウンタの現在のカウント値に対応する１つまたは複数の第２のチャネル内で選択することによって、１つまたは複数の第２のチャネル内で前記１つまたは複数のカーネルの１つまたは複数の第２の非ゼロ要素を選択するように構成され、
前記１つまたは複数の第２のチャネルは、前記１つまたは複数の第１のチャネルを含み、
前記１つまたは複数の第２の非ゼロ要素は、前記１つまたは複数の第１の非ゼロ要素を含む、
請求項１に記載の装置。
【請求項５】
第２のカウンタをさらに備え、
前記第１のセレクタは、前記１つまたは複数の第１の非ゼロ要素を前記１つまたは複数の第２の非ゼロ要素から選択するようにさらに構成され、
前記１つまたは複数の第１のチャネルは、前記第２のカウンタの現在のカウント値に対応する、
請求項２〜４のいずれか一項に記載の装置。
【請求項６】
前記第１のセレクタは、
１つまたは複数のマルチプレクサと、
前記１つまたは複数の第２の非ゼロ要素をバッファリングするように構成された第１のバッファメモリと
を含む、
請求項２〜４のいずれか一項に記載の装置。
【請求項７】
第１のカウンタをさらに備え、
前記第２のセレクタは、前記入力特徴データの１つまたは複数の第２のデータ項目を１つまたは複数の第３のチャネル内で選択するように構成され、
前記第１のカウンタの現在のカウント値に対応する出力特徴データ中の１つまたは複数のデータ項目は、前記１つまたは複数の第２のデータ項目に基づいて生成され、
前記１つまたは複数の第３のチャネルは、前記１つまたは複数の第１のチャネルを含み、
前記１つまたは複数の第２のデータ項目は、前記１つまたは複数の第１のデータ項目を含む、
請求項１に記載の装置。
【請求項８】
第１のカウンタをさらに備え、
前記第２のセレクタは、
前記１つまたは複数のカーネルの非ゼロ要素の要素位置を記録する非ゼロ要素位置リストから、前記第１のカウンタの現在のカウント値を前記非ゼロ要素位置リストの指標値として使用することによって前記要素位置を検索し、
前記要素位置に対応する前記入力特徴データ中の１つまたは複数のデータ項目位置を決定し、
前記決定されたデータ項目位置のそれぞれにおける前記入力特徴データ中の１つまたは複数の第２のデータ項目を１つまたは複数の第３のチャネル内で選択するように構成され、
前記１つまたは複数の第３のチャネルは、前記１つまたは複数の第１のチャネルを含み、
前記１つまたは複数の第２のデータ項目は、前記１つまたは複数の第１のデータ項目を含む、
請求項１に記載の装置。
【請求項９】
第１のカウンタをさらに備え、
前記第２のセレクタは、前記入力特徴データの１つまたは複数の第２のデータ項目を、前記第１のカウンタの現在のカウント値に対応する１つまたは複数の第３のチャネル内で選択するように構成され、
前記１つまたは複数の第３のチャネルは、前記１つまたは複数の第１のチャネルを含み、
前記１つまたは複数の第２のデータ項目は、前記１つまたは複数の第１のデータ項目を含む、
請求項１に記載の装置。
【請求項１０】
第２のカウンタをさらに備え、
前記第２のセレクタはさらに、
前記１つまたは複数のカーネルの非ゼロ要素があるチャネルを記録する非ゼロチャネルリストから、前記第２のカウンタの現在のカウント値を前記非ゼロチャネルリストの指標値として使用することによって前記１つまたは複数の第１のチャネルを検索し、
前記１つまたは複数の第２のデータ項目から前記１つまたは複数の第１のチャネル内の前記１つまたは複数の第１のデータ項目を選択するように構成される、
請求項７〜９のいずれか一項に記載の装置。
【請求項１１】
前記非ゼロチャネルリストに記録された情報は、前記１つまたは複数のカーネルの前記非ゼロ要素の前記要素位置に関連する、
請求項１０に記載の装置。
【請求項１２】
前記第２のセレクタは、
１つまたは複数のマルチプレクサと、
前記１つまたは複数の第２のデータ項目をバッファリングするように構成された第２のバッファメモリと
を含む、
請求項７〜９のいずれか一項に記載の装置。
【請求項１３】
畳み込みニューラルネットワークにおいて畳み込み演算を実行する方法であって、
重みパラメータを記憶する第１のメモリに結合された第１のセレクタが、前記重みパラメータの１つまたは複数のカーネルの１つまたは複数の第１の非ゼロ要素を、１つまたは複数の第１のチャネル内で選択するステップであって、各第１のチャネルが少なくとも１つの第１の非ゼロ要素を含み、各第１の非ゼロ要素が、対応する前記カーネルの同じ要素位置にあり、前記要素位置が、高さおよび幅の二次元における二次元位置であるステップと、
入力特徴データを記憶する第２のメモリに結合された第２のセレクタが、前記入力特徴データの１つまたは複数の第１のデータ項目を、前記１つまたは複数の第１の非ゼロ要素に対応する前記１つまたは複数の第１のチャネル内で選択するステップであって、前記入力特徴データ中の各第１のデータ項目のデータ項目位置が、前記対応する第１の非ゼロ要素の前記要素位置によって決まり、各第１のデータ項目が、前記対応する第１の非ゼロ要素と同じく第１のチャネルにあり、前記データ項目位置が、高さおよび幅の前記二次元における二次元位置であるステップと、
計算機によって、前記第２のセレクタからの各第１のデータ項目と、前記第１のセレクタからの前記対応する第１の非ゼロ要素とを乗算して積を得てから、前記積を累積するステップと
を含む、
畳み込みニューラルネットワークにおいて畳み込み演算を実行する方法。
【請求項１４】
前記重みパラメータの１つまたは複数のカーネルの１つまたは複数の第１の非ゼロ要素を１つまたは複数の第１のチャネル内で選択するステップは、
前記１つまたは複数のカーネルの１つまたは複数の第２の非ゼロ要素を、第１のカウンタからのカウント値に応じて１つまたは複数の第２のチャネル内で選択するステップと、
前記１つまたは複数の第１の非ゼロ要素を前記１つまたは複数の第２の非ゼロ要素から選択するステップと、
を含み、
前記１つまたは複数の第１のチャネルは、第２のカウンタのカウント値に対応する、
請求項１３に記載の方法。
【請求項１５】
前記入力特徴データの１つまたは複数の第１のデータ項目を前記１つまたは複数の第１のチャネル内で選択するステップは、
前記入力特徴データの１つまたは複数の第２のデータ項目を、前記第１のカウンタの前記カウント値に応じて１つまたは複数の第３のチャネル内で選択するステップと、
前記１つまたは複数のカーネルの非ゼロ要素があるチャネルを記録する非ゼロチャネルリストから、前記第２のカウンタの現在のカウント値を前記非ゼロチャネルリストの指標値として使用することによって前記１つまたは複数の第１のチャネルを検索するステップと、
前記１つまたは複数の第２のデータ項目から、前記１つまたは複数の第１のチャネル内の前記１つまたは複数の第１のデータ項目を選択するステップと、
を含む、
請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に畳み込みニューラルネットワークに関し、より詳細には、畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置および方法に関する。
【背景技術】
【０００２】
畳み込みニューラルネットワークに基づく深層学習技術は、画像認識および検出、音声認識などに使用することができ、精度が高く、そのため、安全監視、運転補助、知的コンパニオンロボット、知的医療などの分野で広範に使用されている。
【０００３】
畳み込みニューラルネットワークは通常、演算集約型（operation intensive）である。畳み込みニューラルネットワークにおける演算量を減らすために、畳み込みニューラルネットワークの重みパラメータを希薄化（sparsified）することができる。すなわち、重みパラメータ中の１つまたはいくつかの要素の値が強制的にゼロに設定され、これらのゼロ値の要素に関連する演算がスキップされる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
希薄化畳み込みニューラルネットワークにおける畳み込み演算は、ハードウェアによって効率的に実現できることが期待されている。
【課題を解決するための手段】
【０００５】
畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置が開示される。この装置は以下を備える。すなわち、装置は、重みパラメータを記憶する第１のメモリに結合された第１のセレクタと、入力特徴データを記憶する第２のメモリに結合された第２のセレクタと、計算機とを備える。第１のセレクタは、重みパラメータの１つまたは複数のカーネルの１つまたは複数の第１の非ゼロ要素を、１つまたは複数の第１のチャネル内で選択するように構成されている。各第１のチャネルは、少なくとも１つの第１の非ゼロ要素を含む。各第１の非ゼロ要素は、対応するカーネルの同じ要素位置にある。要素位置は、高さおよび幅の二次元における二次元位置である。第２のセレクタは、入力特徴データの１つまたは複数の第１のデータ項目を、１つまたは複数の第１の非ゼロ要素に対応する１つまたは複数の第１のチャネル内で選択するように構成されている。入力特徴データ中の各第１のデータ項目のデータ項目位置は、対応する第１の非ゼロ要素の要素位置によって決まる。各第１のデータ項目は、対応する第１の非ゼロ要素と同じ第１のチャネルにある。第１のデータ項目位置は、高さおよび幅の二次元における二次元位置である。計算機は、第２のセレクタからの各第１のデータ項目と、第１のセレクタからの対応する第１の非ゼロ要素とを乗算して積を得てから、その積を累積するように構成されている。
【発明の効果】
【０００６】
本開示の実施形態による装置によって、重みパラメータが任意の方法で希薄化されている畳み込みニューラルネットワークにおいて畳み込み演算をハードウェアによって効率的に実現することができる。
【図面の簡単な説明】
【０００７】
【図１】本開示の一実施形態による、重みパラメータの希薄化ならびに非ゼロ要素位置リストおよび非ゼロチャネルリストの一例の図である。
【図２】本開示の一実施形態による、畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置のブロック図である。
【図３】本開示の一実施形態による、畳み込みニューラルネットワークにおいて畳み込み演算を実行する装置の構成の一例の図である。
【発明を実施するための形態】
【０００８】
畳み込みニューラルネットワークの各層の特徴データは三次元データとすることができ、また、特定の高さ、幅および深さを有し複数の点から成るデータキューブとして表すことができる。データキューブの任意の点が特徴データのデータ項目と呼ばれることがあり、三つ組（ｘ、ｙ、ｚ）を用いて表すことができる。ここで、ｘは、そのデータ項目が上から下への順序でデータキューブ中のどの行にあるか（すなわち、高さの次元における位置）を表すことができ、ｙは、そのデータ項目が左から右への順序でデータキューブ中のどの列にあるか（すなわち、幅の次元における位置）を表すことができ、ｚは、そのデータ項目が前から後への順序でデータキューブ中のどのチャネルにあるか（すなわち、深さの次元における位置）を表すことができる。
【０００９】
上述の三つ組（ｘ、ｙ、ｚ）のうちの二つ組（ｘ、ｙ）は、特徴データのデータ項目位置と呼ばれることがあり、これは高さと幅の二次元での二次元位置である。データ項目位置（ｘ、ｙ）を有するデータ項目は、行番号ｘおよび列番号ｙを有する特徴データ中の任意のチャネルのデータ項目に対応することができる。したがって、特徴データ中のどのデータ項目も、対応するデータ項目位置、およびそれが置かれているチャネルのチャネル番号によって見つけることができる。データ項目位置を表す二つ組（ｘ、ｙ）は、データ項目位置を表すのに用いられる一次元の値にマッピングすることができる。
【００１０】
畳み込みニューラルネットワークにおける各層の重みパラメータは四次元データとすることができ、重みパラメータの各カーネルは三次元データとすることができる。特徴データの表現方法と同様に、重みパラメータの各カーネルもまた、特定の高さ、幅および深さを有するデータキューブとして表すことができ、データキューブ中の任意の点が、重みパラメータの要素、または重みパラメータのカーネルの要素と呼ばれることがある。特徴データと同様に、三つ組（ｘ、ｙ、ｚ）を用いて重みパラメータのカーネル中の要素を見つけることができる。さらに、四つ組（ｋ、ｘ、ｙ、ｚ）もまた用いて、重みパラメータ中の要素を見つけることができる。ここで、ｋは、その要素が重みパラメータのどのカーネルにあるか（すなわち、量の次元における位置）を表すことができ、ｘは、そのデータ項目が上から下への順序でカーネルｋのどの行にあるか（すなわち、高さの次元における位置）を表すことができ、ｙは、そのデータ項目が左から右への順序でカーネルｋのどの列にあるか（すなわち、幅の次元における位置）を表すことができ、ｚは、そのデータ項目が前から後への順序でカーネルｋのどのチャネルにあるか（すなわち、深さの次元における位置）を表すことができる。
【００１１】
重みパラメータ中のある要素を表す四つ組（ｋ、ｘ、ｙ、ｚ）、またはカーネルｋ中の三つ組（ｘ、ｙ、ｚ）内のある要素を表す二つ組（ｘ、ｙ）は、重みパラメータのカーネルｋ内の要素位置と呼ばれることがあり、これは、高さと幅の二次元における二次元位置になる。カーネルｋにおいて、要素位置が（ｘ、ｙ）である要素は、カーネルｋの任意のチャネルの、行番号がｘおよび列番号がｙである要素に対応しうる。したがって、カーネルｋ内のどの要素も、対応する要素位置、およびそれが置かれているチャネルのチャネル番号によって見つけることができる。要素位置を表す二つ組（ｘ、ｙ）は、要素位置を表すために用いられる一次元の値にマッピングすることができる。
【００１２】
便宜上、本明細書では、１つまたは複数のカーネルの１つの要素位置にある１つの要素に言及するとき、この要素は、その要素位置において、１つまたは複数のカーネル中の各カーネルのすべてのチャネル内のすべての要素を含みうる。１つまたは複数のカーネルの１つのチャネル内の１つの要素に言及するとき、この要素は、１つまたは複数のカーネル中の各カーネルのそのチャネル内のすべての要素を含みうる。
【００１３】
畳み込みニューラルネットワークは演算集約型である。畳み込みニューラルネットワークにおける演算量を減らすために、畳み込みニューラルネットワークの重みパラメータは希薄化することができる。すなわち、重みパラメータ中の１つまたはいくつかの要素の値が、それがゼロ値要素になるようにするために、強制的にゼロに設定される。したがって、畳み込み中、これらのゼロ値要素に関連する演算はスキップすることができ、演算は、非ゼロ要素（すなわち、ゼロではない値を有する要素）、および特徴データ中の対応するデータ項目について実行するだけでよい。それにより、実効演算速度が向上し、演算量が低減し、演算実行効率が向上する。
【００１４】
加えて、希薄化重みパラメータはコンパクトに記憶することができる。すなわち、希薄化重みパラメータ中の非ゼロ要素だけを記憶すればよく、それにより記憶空間を節減することができる。
【００１５】
本開示は、重みパラメータの希薄化方法に限定されない。たとえば、一実施形態では、重みパラメータの複数のカーネルをいくつかのグループに分割することができ、１つのグループ内の各カーネルが同様に希薄化される。たとえば、カーネルのグループのそれぞれにおける非ゼロ要素の分布が同じになるように、異なるグループを別々に希薄化することができる。言い換えると、異なるグループからの任意の２つのカーネルにおける非ゼロ要素の分布は、必ずしも同じでないことがある（当然、同じであることもある）。
【００１６】
別の実施形態では、あるカーネルの１つまたは複数のチャネル内の１つまたは複数の要素位置における要素は、非ゼロ要素に設定することができ、そのカーネルの別の１つまたは複数のチャネル内の別の１つまたは複数の要素位置における要素は、非ゼロ要素に設定することができる。
【００１７】
別の実施形態では、あるカーネルの１つまたは複数のチャネルを選択することができ、１つまたは複数の要素が、選択された１つまたは複数のチャネル内でランダムに選択され、その選択された１つまたは複数の要素が非ゼロ要素に設定され、選択された１つまたは複数のチャネル内の他のすべての非選択要素がゼロ値要素になる。さらに、そのカーネルの別の１つまたは複数のチャネルを選択することができ、１つまたは複数の要素が、選択された別の１つまたは複数のチャネル内でランダムに選択され、その選択された１つまたは複数の要素が非ゼロ要素に設定され、選択された別の１つまたは複数のチャネル内の他のすべての非選択要素がゼロ値要素になる。
【００１８】
ある要素位置の１つのカーネルの要素が少なくとも１つの非ゼロ要素を含む場合、この要素位置は非ゼロ要素位置と呼ばれることがある。あるカーネルの１つのチャネル内の要素が少なくとも１つの非ゼロ要素を含む場合、このチャネルは非ゼロチャネルと呼ばれることがある。
【００１９】
図１は、畳み込みニューラルネットワーク内の１つの層の希薄化重みパラメータの一例を示す。この例では、重みパラメータは４つのカーネルＫ１〜Ｋ４（重みカーネルまたは畳み込みカーネルとも呼ばれる）を含み、Ｋ１〜Ｋ４のそれぞれのカーネルは、それぞれ高さが３、幅が３、および深さ（すなわちチャネル数）が５のデータキューブである。
【００２０】
図１に示されるように、重みパラメータが希薄化された後、Ｋ１では、要素位置２すなわち（１，２）の要素、および要素位置９すなわち（３，３）の要素だけが非ゼロ要素であり、Ｋ２では、チャネル１および４の要素だけが非ゼロ要素であり、Ｋ３では、非ゼロ要素位置が２および３であり、非ゼロチャネルが１〜５であり、Ｋ４では、非ゼロ要素位置が１、２、３、および９であり、非ゼロチャネルが１、２、４および５である。図１では、各カーネルの非ゼロ要素が影付きの正方形で表されている。
【００２１】
非ゼロ要素位置リストおよび／または非ゼロチャネルリストは、希薄化中に希薄化重みパラメータに対して設定することができる。一実施形態では、非ゼロ要素位置リストおよび／または非ゼロチャネルリストは、重みパラメータのカーネルごとに設定することができる。別の実施形態では、カーネルの１つのグループのうちの各カーネルの非ゼロ要素の分布が同一である場合、非ゼロ要素位置リストおよび／または非ゼロチャネルリストは、カーネルのそのグループに対して設定することができる。
【００２２】
図１の例では、カーネルＫ１の要素位置２および９が非ゼロ要素位置であり、各非ゼロ要素位置では５つすべてのチャネルのすべての要素が非ゼロ要素である。それに応じて、非ゼロ要素位置リストＬ１をカーネルＫ１に対して設定することができる。この非ゼロ要素位置リストＬ１は、要素位置２および９と、それぞれに対応する指標値とを記録する２つの項目を含む。
【００２３】
カーネルＫ２のチャネル１および４は非ゼロチャネルであり、各非ゼロチャネルのすべての要素が非ゼロ要素である。それに応じて、非ゼロチャネルリストＬ２をカーネルＫ２に対して設定することができる。この非ゼロチャネルリストＬ２は、非ゼロチャネル１および４と、それぞれに対応する指標値とを記録する２つの項目を含む。
【００２４】
カーネルＫ３の要素位置２および３は非ゼロ要素位置であり、チャネル１〜５がそれぞれ非ゼロチャネルである。それに応じて、非ゼロ要素位置リストＬ３および非ゼロチャネルリストＬ４をカーネルＫ３に対して設定することができ、非ゼロ要素位置リストＬ３と非ゼロチャネルリストＬ４は互いに関連付けることができる。ここで、非ゼロ要素位置リストＬ３は、非ゼロ要素位置２および３をそれぞれ記録する２つの項目を含む。また、非ゼロ要素位置リストＬ３中の要素位置２がある項目は、指標値がそれぞれ０および１である非ゼロチャネルリストＬ４中の２つの項目と関連付けられる。また、非ゼロ要素位置リストＬ３中の要素位置３がある項目は、指標値がそれぞれ２〜４である非ゼロチャネルリストＬ４中の３つの項目と関連付けられる。Ｌ４中の指標値を非ゼロ要素位置リストＬ３中の記録された要素位置と関連付けることによって、カーネルＫ３の各非ゼロ要素の位置は、非ゼロチャネルリストＬ４および非ゼロ要素位置リストＬ３に基づいて決定することができる。
【００２５】
カーネルＫ４の要素位置１、２、３、および９が非ゼロ要素位置であり、それぞれチャネル１、２、４、および５が非ゼロチャネルである。それに応じて、非ゼロ要素位置リストＬ５および非ゼロチャネルリストＬ６をカーネルＫ４に対して設定することができ、これらの非ゼロ要素位置リストＬ５と非ゼロチャネルリストＬ６は互いに関連付けることができる。ここで、非ゼロ要素位置リストＬ５は、１、２、３、および９の４つの非ゼロ要素位置をそれぞれ記録する４つの項目を含む。また、非ゼロチャネルリストＬ６は、１、２、４、および５の４つの非ゼロチャネルをそれぞれ記録する４つの項目を含む。たとえば、指標値が０である非ゼロ要素位置リストＬ５の項目は、それぞれ指標値が０および３である非ゼロチャネルリストＬ６の２つの項目と関連付けることができ、指標値が３である非ゼロ要素位置リストＬ５の項目は、指標値が０である非ゼロチャネルリストＬ６の項目と関連付けることができる。非ゼロチャネルリストＬ６の指標値を非ゼロ要素位置リストＬ５に記録された要素位置と関連付けることによって、カーネルＫ４の各非ゼロ要素の位置は、非ゼロチャネルリストＬ６および非ゼロ要素位置リストＬ５に基づいて決定することができる。
【００２６】
別の例で、希薄化重みパラメータがさらにカーネルＫ５（図示せず）を４つのカーネルＫ１〜Ｋ４に加えて含み、カーネルＫ５での非ゼロ要素の分布がカーネルＫ１での非ゼロ要素の分布と厳密に同じである場合には、同一の非ゼロ要素位置リストＬ１をカーネルＫ１およびＫ５に対して用いることができる。別の例で、希薄化重みパラメータがさらにカーネルＫ６（図示せず）を４つのカーネルＫ１〜Ｋ４に加えて含み、カーネルＫ６での非ゼロ要素の分布がカーネルＫ４での非ゼロ要素の分布と厳密に同じである場合には、同一の非ゼロ要素位置リストＬ５と同一の非ゼロチャネルリストＬ６をカーネルＫ６およびＫ４に対して用いることができる。
【００２７】
非ゼロ要素位置リストの形式および非ゼロチャネルリストの形式は、図１に示された例に限定されないことを理解されたい。別の実施形態では、非ゼロチャネルリストに記録された情報は、１つまたは複数のカーネルでの非ゼロ要素の要素位置と相関させることができる。たとえば、図１に示されるように、非ゼロチャネルリストＬ６の形式は、Ｌ７の形式のように設定することができ、Ｌ７に記録された情報は非ゼロ要素位置とも関連付けられている。たとえば、非ゼロ要素位置リストおよび／または非ゼロチャネルリストはまた、他の情報を含むこともできる。
【００２８】
さらに、非ゼロ要素位置リストおよび非ゼロチャネルリストはまた、１つのリストに組み合わせることもでき、その各項目には、カーネル数、非ゼロ要素位置および非ゼロチャネルなどの３つの値を指標として用いることができる。
【００２９】
非ゼロ要素位置リストおよび非ゼロチャネルリストが重みパラメータ中の非ゼロ要素を見つけるために使用される場合、必要な指標値の総数（または非ゼロ要素位置リストおよび非ゼロチャネルリストの規模）は、カーネル数（たとえば、各グループのカーネル数）、非ゼロ要素位置の数（たとえば、カーネルの各グループの非ゼロ要素位置の数）、および非ゼロチャネルの数（たとえば、カーネルの各グループの非ゼロチャネルの数）によって決まりうる。加えて、図１に示されるように、非ゼロ要素位置リストおよび非ゼロチャネルリストの一方だけを、重みパラメータに対して採用された希薄化方法に応じて設定することができる。このような場合には、必要な指標値の総数（または非ゼロ要素位置リストおよび非ゼロチャネルリストの規模）は、たとえば、カーネル数および非ゼロ要素位置の数に応じて、またはカーネル数および非ゼロチャネルの数に応じて、減らすことができる。
【００３０】
別の実施形態では、非ゼロ要素の指標には、次の方法、すなわち、サイズが各カーネルと同じである三次元データキューブがカーネルごとに構築される方法、を採用することができる。ここで、三次元データキューブの要素の値は０または１とすることができ、０は、カーネルの対応する位置の要素がゼロ値要素であることを表し、１は、カーネルの対応する位置の要素が非ゼロ要素であることを表す。
【００３１】
図２は、本開示の一実施形態による、希薄化畳み込みニューラルネットワークにおいて畳み込み演算を効率的に実現するのに使用可能な装置のブロック図を示す。
【００３２】
図２に示されるように、本開示の一実施形態による装置は、セレクタ２００、セレクタ３００、および計算機４００を含む。
【００３３】
セレクタ２００は、重みパラメータを記憶するメモリ１１０に結合することができ、重みパラメータの１つまたは複数のカーネルの１つまたは複数のチャネル内の１つまたは複数の非ゼロ要素を、メモリ１１０に記憶されたデータから選択することができる。選択された１つまたは複数の非ゼロ要素は、計算機４００に提供される。重みパラメータは、重みパラメータの非ゼロ要素だけがメモリ１１０に記憶されるように希薄化されていることを理解されたい。
【００３４】
セレクタ３００は、特徴データを記憶するメモリ１２０に結合することができ、セレクタ２００で選択された１つまたは複数のチャネルに対応する特徴データの１つまたは複数のチャネル内の１つまたは複数のデータ項目を、メモリ１２０に記憶されたデータから選択することができる。その各選択されたデータ項目のデータ項目位置は、セレクタ２００で選択された１つまたは複数の非ゼロ要素中の対応する非ゼロ要素の要素位置によって決まる。次に、セレクタ３００は、選択された１つまたは複数のデータ項目位置を計算機４００に提供することができる。
【００３５】
計算機４００は、セレクタ３００から受け取った各データ項目の値と、セレクタ２００からの対応する非ゼロ要素の値とを乗算し、乗算によって得られた結果を累積する。
【００３６】
メモリ１１０およびメモリ１２０の一方または両方は、本開示の一実施形態による装置に含めること、または本開示の一実施形態による装置から独立したものにすること、または本開示の一実施形態による装置の外部に配置することができ、ディスク、オフチップＤＤＲ、オンチップＳＲＡＭ、オンチップレジスタなどの、任意の形の揮発性または不揮発性記憶デバイスとすることができる。さらに、メモリ１１０およびメモリ１２０はまた、それぞれ重みパラメータおよび特徴データに割り当てられた、同一メモリ内の記憶空間とすることもできる。このようなメモリは、ディスク、オフチップＤＤＲ、オンチップＳＲＡＭ、オンチップレジスタなどの、任意の形の揮発性または不揮発性記憶デバイスとすることができる。さらに、メモリ１１０では、重みパラメータをコンパクトに記憶することができる。すなわち、重みパラメータ（たとえば、元の重みパラメータまたは希薄化重みパラメータ）のうちの非ゼロ要素だけをメモリ１１０に記憶できる。
【００３７】
図３は、本開示の一実施形態による装置の構成の一例を示す。図３に示されるように、セレクタ２００は、マルチプレクサ２１５，２２５と、バッファメモリ２２０とを含むことができる。セレクタ３００は、マルチプレクサ３１５，３２５，３３０，３３５と、バッファメモリ３２０とを含むことができる。計算機４００は、乗算アキュムレータアレイ４０５および他の構成要素４１０を含むことができる。さらに、本開示の一実施形態による装置はまた、カウンタ５０５，５１０，５１５，５２０，５２５を含むこともできる。
【００３８】
マルチプレクサ２１５は、メモリ１１０に結合された入力端子と、バッファメモリ２２０に結合された出力端子と、カウンタ５０５，５１０，５１５の出力端子に結合された制御端子とを含み、それにより、カウンタ５０５，５１０，５１５から出力されるカウント値の制御のもとで、メモリ１１０からデータの一部分を選択し、バッファメモリ２２０の中にバッファリングすることができる。一実施形態では、複数のこのようなマルチプレクサ２１５を並列に配置することができる。
【００３９】
マルチプレクサ２２５の入力端子は、バッファメモリ２２０に結合することができる。マルチプレクサ２２５の出力端子は、計算機４００の乗算アキュムレータアレイ４０５に結合することができる。たとえば、マルチプレクサ２２５の各出力端子は、それぞれ乗算アキュムレータアレイ４０５中の１つまたは複数の乗算アキュムレータの入力端子に結合することができる。マルチプレクサ２２５の制御端子は、カウンタ５２５の出力端子に結合することができ、それにより、カウンタ５２５から出力されるカウント値の制御のもとで、バッファメモリ２２０からデータの一部分を選択し、乗算アキュムレータアレイ４０５へ出力することができる。一実施形態では、複数のこのようなマルチプレクサ２２５を並列に配置することができる。
【００４０】
マルチプレクサ２２５の数、および各マルチプレクサ２２５の出力端子の数は、乗算アキュムレータアレイ４０５の演算能力によって決まりうる。たとえば、バッファメモリ２２０と１つまたは複数のマルチプレクサ２２５とは、マルチプレクサ２１５によってメモリ１１０から選択されるデータ量が乗算アキュムレータアレイ４０５の実際の処理能力よりも大きくなるたびごとに設けることができる。たとえば、マルチプレクサ２１５によってメモリ１１０から毎回選択されるデータの一部分は、バッファメモリ２２０の中にバッファリングすることができ、次に、バッファメモリ２２０中のデータの一部分が乗算アキュムレータアレイ４０５にマルチプレクサ２２５から一括で提供され、それにより、乗算アキュムレータアレイ４０５で毎回受け取られるデータの量は、処理できるデータ量の範囲内になる。たとえば、乗算アキュムレータアレイ４０５がＭ個の乗算アキュムレータ（ＭＡＣ）を含むと仮定すると、Ｋ個のカーネル、Ｃ個のチャネル、およびＰ個のデータ点の乗加算演算を毎回実行することができ、ここでＫ×Ｃ×Ｐ＝Ｍであり、そのため、乗算アキュムレータアレイ４０５の実際の処理能力は、これらの指標によって決定することができる。
【００４１】
さらに、データ読み込み遅延がメモリ１１０よりも小さい、または非常に小さい１つまたは複数のバッファメモリを、あるいはデータ読み込み遅延がたとえば乗算アキュムレータアレイ４０５の処理速度に適合する１つまたは複数のバッファメモリを、バッファメモリ２２０として選択することができる。それにより、乗算アキュムレータアレイ４０５はデータを待つために停止しなくてもよくなり、したがって、畳み込み演算の実行効率に及ぼすデータ読み込み遅延の影響が低減されることになる。
【００４２】
別の実施形態では、セレクタ２００は、１つまたは複数のマルチプレクサ２１５を含むだけでよく、バッファメモリ２２０および／またはマルチプレクサ２２５を用意しなくてもよい。このような場合には、マルチプレクサ２１５の出力端子は乗算アキュムレータアレイ４０５に直接結合することができ、またカウンタ５２５の出力端子はマルチプレクサ２１５の制御端子に結合することができる。
【００４３】
マルチプレクサ３１５の入力端子はメモリ１２０に結合することができ、マルチプレクサ３１５の出力端子はバッファメモリ３２０に結合することができ、マルチプレクサ３１５の制御端子は、カウンタ５１０，５２０の出力端子と、マルチプレクサ３３０の出力端子とに結合することができる。マルチプレクサ３３０の入力端子は、非ゼロ要素位置リスト６１０を記憶するメモリに結合され、マルチプレクサ３３０の制御端子は、カウンタ５０５の出力端子に結合することができる。したがって、マルチプレクサ３１５，３３０の組合せでデータの一部分をメモリ１２０から選択し、これをバッファメモリ３２０の中に、非ゼロ要素位置リスト６１０中の情報に基づいて、カウンタ５０５，５１０，５２０から出力されるカウント値の制御のもとで、バッファリングすることができる。一実施形態では、複数のマルチプレクサ３１５を並列に配置することができ、またマルチプレクサ３３０は、Ｎ入力１出力（1-out-of-N）マルチプレクサのタイプとすることができる。
【００４４】
マルチプレクサ３２５の入力端子は、バッファメモリ３２０に結合することができる。マルチプレクサ３２５の出力端子は、計算機４００の乗算アキュムレータアレイ４０５に結合することができる。たとえば、マルチプレクサ３２５の各出力端子は、それぞれ乗算アキュムレータアレイ４０５の１つの乗算アキュムレータの別々の入力端子に結合することができる。マルチプレクサ３２５の制御端子は、マルチプレクサ３３５の出力端子に結合することができる。マルチプレクサ３３５の入力端子は、非ゼロチャネルリスト６２０を記憶するメモリに結合することができ、マルチプレクサ３３５の制御端子は、カウンタ５２５の出力端子に結合することができる。したがって、マルチプレクサ３２５，３３５は、データの一部分をバッファメモリ３２０から選択し、これを乗算アキュムレータアレイ４０５へ、非ゼロチャネルリスト６２０中の情報に基づいて、カウンタ５２５から出力されるカウント値の制御のもとで出力することができる。一実施形態では、複数のこのようなマルチプレクサ３２５を並列に設けることができ、またマルチプレクサ３３５は、Ｎ入力１出力マルチプレクサのタイプとすることができる。
【００４５】
マルチプレクサ３２５の数、および各マルチプレクサ３２５の出力端子の数は、乗算アキュムレータアレイ４０５の演算能力によって決まりうる。たとえば、バッファメモリ３２０と１つまたは複数のマルチプレクサ３２５とは、マルチプレクサ３１５によってメモリ１２０から選択されるデータ量が乗算アキュムレータアレイ４０５の実際の処理能力よりも大きくなるたびごとに、設けることができる。たとえば、マルチプレクサ３１５によってメモリ１２０から毎回選択されるデータの一部分は、バッファメモリ３２０の中にバッファリングすることができ、次に、バッファメモリ３２０中のデータの一部分が乗算アキュムレータアレイ４０５にマルチプレクサ３２５から一括で提供され、それにより、乗算アキュムレータアレイ４０５で毎回受け取られるデータの量は、処理できるデータ量の範囲内になる。
【００４６】
マルチプレクサ２１５，２２５，３１５，３２５，３３０，３３５のいずれか１つの制御端子は、１つまたは複数のプログラマブルＳＲＡＭユニット（たとえば、１つまたは複数のレジスタ）を含みうる。一実施形態では、マルチプレクサは、１つまたは複数のプログラマブルＳＲＡＭユニットに記憶されたコンテンツに基づいて、１つまたは複数の入力端子をアクティブ入力端子として選択し、そのアクティブ入力端子から受け取ったデータを出力端子から出力することができる。別の実施形態では、マルチプレクサは、１つまたは複数のプログラマブルＳＲＡＭユニットに記憶されたコンテンツに基づいて、読み込まれるべきデータのアドレスを決定し、決定されたアドレスのデータをメモリ１１０もしくは１２０、またはバッファメモリ２２０もしくは３２０から読み込み、そのデータを出力端子から出力することができる。さらに、マルチプレクサ２１５，２２５，３１５，３２５，３３０，３３５のいずれかは、１つまたは複数のプログラマブルＳＲＡＭユニットに記憶されたコンテンツに基づいて、データの読み込みアドレスを決定するための、および／またはどの入力端子がアクティブ入力端子になるかを制御するための、論理制御回路を含みうる。
【００４７】
さらに、データ読み込み遅延がメモリ１２０よりも小さい、または非常に小さい１つまたは複数のバッファメモリを、あるいはデータ読み込み遅延が乗算アキュムレータアレイ４０５の処理速度に適合する１つまたは複数のバッファメモリを、バッファメモリ３２０として選択することができる。それにより、乗算アキュムレータアレイ４０５はデータ入力を待つために停止しなくてもよくなり、したがって、畳み込み演算の実行効率に及ぼすデータ読み込み遅延の影響が低減されることになる。
【００４８】
別の実施形態では、セレクタ３００は、マルチプレクサ３１５，３３０，３３５を含むことができ、バッファメモリ３２０および／またはマルチプレクサ３２５を用意しなくてもよい。このような場合には、マルチプレクサ３１５の出力端子は乗算アキュムレータアレイ４０５に直接結合することができ、マルチプレクサ３３５の出力端子はマルチプレクサ３１５の制御端子に結合することもできる。
【００４９】
別の実施形態では、別の形のデータセレクタまたはコントローラもまた、マルチプレクサ３３０，３３５を置き換えるために使用することができ、あるいは、構造がより複雑であるが処理能力がより高い１つのマルチプレクサを、マルチプレクサ３１５，３３０，３３５および／または３２５を置き換えるために、またマルチプレクサ３１５，３３０，３３５および／または３２５のすべての機能を実現するために使用することができ、それによりセレクタ３００は、ただ１つのマルチプレクサを含めばよいことになる。
【００５０】
非ゼロ要素位置リスト６１０を記憶するためのメモリ、および非ゼロチャネルリスト６２０を記憶するためのメモリは、メモリ１１０または１２０と同じメモリとすることも、メモリ１１０または１２０とは異なる記憶デバイスとすることもできる。
【００５１】
計算機４００は、たとえば、活動化、量子化などの畳み込み演算に関連する他の演算を実行するために使用できる別の構成要素４１０を含むこともできる。
【００５２】
カウンタ５０５は、非ゼロ要素位置カウンタとして使用することができる。一実施形態では、カーネルの１つのグループのうちの各カーネルが同じ非ゼロ要素の分布を有し、またカーネルのそのグループのどのカーネルもｎ個の非ゼロ要素位置を有する場合、カウンタ５０５のカウント値の上限はｎ−１として設定することができ、カウンタ５０５は、０からｎ−１までを周期的にカウントすることになる。別の実施形態では、カーネルの１つのグループのうちの各カーネル中のすべての要素位置を非ゼロ要素位置と見なすことができ、このような場合には、カウンタ５０５のカウント値の上限は８（３×３−１＝８）として設定することができ、カウンタ５０５は、０から８までを周期的にカウントすることになる。
【００５３】
マルチプレクサ２１５の１つの制御端子は、現在のカウント値をカウンタ５０５から受け取り、カウンタ５０５のその現在のカウント値に基づいて、カウンタ５０５の現在のカウント値に対応する１つまたは複数の非ゼロ要素をメモリ１１０から選択する。
【００５４】
たとえば、重みパラメータのカーネルの１つのグループが、図１に示された例のカーネルＫ１と、図１には示されていないが非ゼロ要素の分布がカーネルＫ１と厳密に同じであるカーネルＫ５とを含むと仮定すると、２つのカーネルＫ１およびＫ５を含むグループでは、カウンタ５０５は、０から１までを周期的にカウントすることができる（Ｋ１，Ｋ５は、２つの非ゼロ要素位置２および９を有する）。カウンタ５０５からの現在のカウント値０に応じて、マルチプレクサ２１５はメモリ１１０から、要素位置が２であるカーネルＫ１の５つすべてのチャネルの５つの非ゼロ要素と、要素位置が２であるカーネルＫ５の５つすべてのチャネルの５つの非ゼロ要素とを選択することができ（たとえば、図１のＬ１を参照）、選択された１０個の非ゼロ要素はバッファメモリ２２０の中にバッファリングすることができる。カウンタ５０５からの現在のカウント値が１である場合、マルチプレクサ２１５はメモリ１１０から、要素位置が９であるＫ１の５つすべてのチャネルの５つの非ゼロ要素と、要素位置が９であるＫ５の５つすべてのチャネルの５つの非ゼロ要素とを選択することができ（たとえば、図１のＬ１を参照）、選択された１０個の非ゼロ要素はバッファメモリ２２０の中にバッファリングすることができる。
【００５５】
たとえば、重みパラメータのカーネルの別のグループが、図１に示された例のカーネルＫ２と、図１には示されていないが非ゼロ要素の分布がＫ２と厳密に同じであるカーネルＫ６とを含むと仮定すると、２つのカーネルＫ２およびＫ６を含むグループでは、カウンタ５０５は、０から８までを周期的にカウントすることができる（Ｋ２，Ｋ６は、９つの非ゼロ要素位置１〜９を有する）。カウンタ５０５の現在のカウント値５に応じて、マルチプレクサ２１５はメモリ１１０から、要素位置が５であるカーネルＫ２の２つの非ゼロチャネルの２つの非ゼロ要素と、要素位置が５であるカーネルＫ６の２つの非ゼロチャネルの２つの非ゼロ要素とを選択することができ、選択された４つの非ゼロ要素はバッファメモリ２２０の中にバッファリングすることができる。カウンタ５０５からの現在のカウント値が７である場合、マルチプレクサ２１５はメモリ１１０から、要素位置が７であるカーネルＫ２の２つの非ゼロチャネルの２つの非ゼロ要素と、要素位置が７であるカーネルＫ６の２つの非ゼロチャネルの２つの非ゼロ要素とを選択することができ、選択された４つの非ゼロ要素はバッファメモリ２２０の中にバッファリングすることができる。
【００５６】
図３に示されるように、カウンタ５０５からの現在のカウント値はまた、マルチプレクサ３３０の制御端子にも提供される。マルチプレクサ３３０は、カウンタ５０５からの現在のカウント値に基づいて、カウンタ５０５からの現在のカウント値に対応する非ゼロ要素位置リスト６１０からの非ゼロ要素位置を探索し、探索結果をマルチプレクサ３１５の制御端子に提供することができる。マルチプレクサ３１５は、制御端子で受け取られた非ゼロ要素位置に関する情報に基づいて、１つまたは複数のデータ項目位置を決定することができ、その決定された１つまたは複数のデータ項目位置における特徴データの１つまたは複数のチャネルのデータ項目をメモリ１２０から選択する。
【００５７】
たとえば、図１のカーネルＫ３では、カウンタ５０５は、０から１まで周期的にカウントすることができる（Ｋ３には２つの非ゼロ要素、すなわち２および３がある）。カウンタ５０５からの現在のカウント値が１であるとき、マルチプレクサ２１５は、要素位置が３であるカーネルＫ３の３つの非ゼロチャネルの３つの非ゼロ要素（チャネル３〜５）をメモリ１１０から選択する。同時に、マルチプレクサ３３０は、カウンタ５０５からの現在のカウント値を指標値として用いて、非ゼロ要素位置リストＬ３から指標値が１である項目、すなわち非ゼロ要素位置が３である項目（図１のＬ３を参照）を取得または選択する。次に、その項目すなわち取得された要素位置３は、マルチプレクサ３１５の制御端子に提供される。カーネルＫ３が幅方向に２であるストライドを有し、かつ、畳み込み演算が実行されるときに特徴データに対してパディングが何も実行されないと仮定すると、マルチプレクサ３１５（たとえば、マルチプレクサ３１５の論理制御回路）は、畳み込み演算の際の情報に基づいて、要素位置３に対応する（１，３）、（１，５）、（１，７）などの１つまたは複数のデータ項目位置を決定することができる。次に、マルチプレクサ３１５は、データ項目位置が（１，３）である５つすべてのチャネルの５つのデータ項目と、データ項目位置が（１，５）である５つすべてのチャネルの５つのデータ項目と、データ項目位置が（１，７）である５つすべてのチャネルの５つのデータ項目とをメモリ１２０から選択することができ、選択された１５個のデータ項目はバッファメモリ３２０の中にバッファリングすることができる。
【００５８】
カウンタ５１０は、チャネルグループカウンタとして使用することができる。各カーネルの特徴データおよび全チャネルは１つまたは複数のグループに分割することができ、そのそれぞれが１つまたは複数のチャネルを含む。一実施形態では、チャネルは、マルチプレクサ２１５および／または３１５の選択能力（たとえば、入力端子数）に応じて分割することができる。グループの数がＣである場合、カウンタ５１０のカウント値の上限はＣ−１に設定することができ、カウンタ５１０は、０からＣ−１まで周期的にカウントすることになりうる。
【００５９】
マルチプレクサ２１５の制御端子は、現在のカウント値をカウンタ５１０から受け取り、カウンタ５１０のその現在のカウント値に基づいて、カウンタ５１０からの現在のカウント値に対応する１つまたは複数のチャネルの１つまたは複数の非ゼロ要素をメモリ１１０から選択する。同時に、マルチプレクサ３１５の制御端子は、現在のカウント値をカウンタ５１０から受け取り、カウンタ５１０からのその現在のカウント値に基づいて、カウンタ５１０からの現在のカウント値に対応する１つまたは複数のチャネルの１つまたは複数のデータ項目をメモリ１２０から選択する。
【００６０】
たとえば、図１の例で、５つのチャネルが２つのグループに分割され、そのうちの一方の、カウンタ５１０からのカウント値０に対応する方がチャネル１〜３を含み、もう一方の、カウンタ５１０からのカウント値１に対応する方がチャネル４および５を含むと仮定すると、カウンタ５１０は、０から１まで周期的にカウントすることになりうる。
【００６１】
この例で、図１に示されたカーネルＫ３およびＫ４では、カウンタ５１０からの現在のカウント値が０であるとき、マルチプレクサ２１５は、カーネルＫ３のチャネル１〜３のすべての非ゼロ要素、すなわち（ｋ３，１，２，１）、（ｋ３，１，２，２）および（ｋ３，１，３，３）を選択すること、およびカーネルＫ４のチャネル１〜３のすべての非ゼロ要素、すなわち（ｋ４，１，１，１）、（ｋ４，１，３，２）および（ｋ４，３，３，１）を選択することができる。次に、選択された６つの非ゼロ要素はバッファメモリ２２０の中にバッファリングすることができる。同時に、マルチプレクサ３１５は、チャネル１〜３のすべてのデータ項目を選択し、選択されたすべてのデータ項目をバッファメモリ３２０の中にバッファリングすることができる。
【００６２】
カウンタ５１５は、カーネルグループカウンタとして使用することができる。一実施形態では、計算機４００（たとえば、乗算アキュムレータアレイ４０５）が各演算でＫ個のカーネルの畳み込み演算を処理できると仮定すると、各層の重みパラメータのすべてのカーネルは１つまたは複数のグループに分割することができ、そのそれぞれが最大でＫ個のカーネルを含み、グループの数はＧ’になる。このため、カウンタ５１５からのカウント値の上限はＧ’−１に設定することができ、カウンタ５１５は、０からＧ’−１まで周期的にカウントすることになりうる。別の実施形態では、カーネルは、希薄化方法または設計要件に応じてグループ化することができる。
【００６３】
カウンタ５１５からの現在のカウント値は、マルチプレクサ２１５の制御端子に提供することができる。マルチプレクサ２１５は、カウンタ５１５からの現在のカウント値に応じて、カウンタ５１５からの現在のカウント値に対応するカーネルグループ内の全カーネルの全非ゼロ要素をメモリ１１０から選択することができる。
【００６４】
たとえば、図１の例で、カーネルＫ１〜Ｋ４が２つのグループに分割され、そのうちの一方の、カウンタ５１５からのカウント値０に対応する方がカーネルＫ１およびＫ２を含み、もう一方の、カウンタ５１５からのカウント値１に対応する方がカーネルＫ３およびＫ４を含むと仮定すると、カウンタ５１５からの現在のカウント値が１であるとき、マルチプレクサ２１５は、カーネルＫ３の５つの非ゼロ要素（図１に示されたＫ３の影付きブロック）と、カーネルＫ４の５つの非ゼロ要素（図１に示されたＫ４の影付きブロック）とをメモリ１１０から選択することができ、選択された１０個の非ゼロ要素はバッファメモリ２２０の中にバッファリングすることができる。
【００６５】
カウンタ５２０は、出力点グループカウンタとして使用することができる。ある設計された畳み込みニューラルネットワークでは、１つの入力特徴データを考えると、各層の出力特徴データ中のデータ項目の数をあらかじめ知ること、または計算することができる。たとえば、図１の例では、出力特徴データのデータ項目のうちの１つは、入力特徴データ中の４５個のデータ項目（３×３×５＝４５）すべてについて畳み込み演算を実行した後に得ることができる。言い換えると、出力特徴データ中のどのデータ項目も、入力特徴データ中のＨ×Ｗ×Ｄ個のデータ項目、および１つのカーネルのＨ×Ｗ×Ｄ個のデータ項目について乗加算演算を実行することによって得られる。ここで、Ｈは各カーネルの高さ（すなわち行数）を表し、Ｗは各カーネルの幅（すなわち列数）を表し、Ｄは各カーネルの深さ（すなわちチャネル数）を表す。計算機４００（たとえば、乗算アキュムレータアレイ４０５）が出力特徴データ中のｐ個のデータ項目の計算を毎回サポートできると仮定すると、この処理能力により、出力特徴データ中のデータ項目は１つまたは複数のグループに分割することができ、そのそれぞれが最大でｐ個のデータ項目を含むことができ、その数はＧになる。したがって、カウンタ５２０のカウント値の上限はＧ−１に設定することができ、カウンタ５２０は、０からＧ−１まで周期的にカウントすることになりうる。別の実施形態では、入力特徴データ中のデータ項目のグループ化方法は、たとえば並行処理要件（parallelism requirement）などによって決定することができる。
【００６６】
カウンタ５２０からの現在のカウント値は、マルチプレクサ３１５の制御端子のうちの１つに提供することができる。マルチプレクサ３１５は、カウンタ５２０からの現在のカウント値に応じて、メモリ１２０から１つまたは複数のデータ項目を選択することができ、カウンタ５２０からの現在のカウント値に対応する出力特徴データのデータ項目グループ内のデータ項目は、選択された１つまたは複数のデータ項目に応じて計算することができる。
【００６７】
たとえば、図１の例において、各カーネルがストライド２を幅方向にスライドさせ、メモリ１２０内の入力特徴データが畳み込み演算中にパッドされず、カウンタ５２０からのカウント値０が、出力特徴データ中のデータ項目（１，１，１）、（１，１，２）、（１，１，３）、（１，１，４）、（１，２，１）、（１，２，２）、（１，２，３）および（１，２，４）に対応すると仮定すると、カウンタ５２０からのカウント値１は、出力特徴データ中のデータ項目（１，３，１）、（１，３，２）、（１，３，３）、（１，３，４）、（１，４，１）、（１，４，２）、（１，４，３）および（１，４，４）に対応し、カウンタ５２０からの現在のカウント値が１であるとき、マルチプレクサ３１５は、データ項目位置（１，５）、（２，５）、（３，５）、（１，６）、（２，６），（３，６）、（１，７）、（２，７）、（３，７）、（１，８）、（２，８）、（３，８）、（１，９）、（２，９）および（３，９）それぞれにおける入力特徴データのすべてのデータ項目をメモリ１２０から選択することができ、選択された７５個（１５×５＝７５）のデータ項目はバッファメモリ３２０の中にバッファリングされる。
【００６８】
カウンタ５２５は、非ゼロチャネルグループカウンタとして使用することができる。一実施形態では、重みパラメータのすべての非ゼロチャネルを１つまたは複数のグループに分割することができ、そのそれぞれが１つまたは複数の非ゼロチャネルを含みうる。別の実施形態では、１つの層の重みパラメータのすべての非ゼロチャネルを、たとえば乗算アキュムレータアレイ４０５の処理能力に応じてグループ化することができる。別の実施形態では、カウンタ５２５はカウンタ５１０と協働することができる。たとえば、カウンタ５１０からの各カウント値に対応するチャネルグループ内の非ゼロチャネルは、１つまたは複数の非ゼロチャネルグループに分割することができる。すなわち、バッファメモリ２２０中の非ゼロ要素に対応するすべての非ゼロチャネルは、１つまたは複数の非ゼロチャネルグループに分割することができる。この実施形態では、マルチプレクサ３３５の制御端子もまた、現在のカウント値をカウンタ５１０から受け取ることができる。非ゼロチャネルグループの数がＣ’である場合、カウンタ５２５のカウント値の上限はＣ’−１に設定することができ、カウンタ５２５は、０からＣ’−１まで周期的にカウントされうる。
【００６９】
マルチプレクサ２２５は、その制御端子を通して現在のカウント値をカウンタ５２５から受け取り、カウンタ５２５からの現在のカウント値に応じて、カウンタ５２５からの現在のカウント値に対応する１つまたは複数の非ゼロチャネル内の１つまたは複数の非ゼロ要素をバッファメモリ２２０から選択することができる。次に、選択された１つまたは複数の非ゼロ要素は乗算アキュムレータアレイへ出力される。
【００７０】
マルチプレクサ３３５は、その制御端子を通して現在のカウント値をカウンタ５２５から受け取り、カウンタ５２５からの現在のカウント値に応じて、カウンタ５２５からの現在のカウント値に対応する１つまたは複数の非ゼロチャネルを非ゼロチャネルリスト６２０から選択することができ、選択された１つまたは複数の非ゼロチャネルはマルチプレクサ３２５の制御端子に提供される。次に、マルチプレクサ３２５は、その制御端子で受け取られた１つまたは複数の非ゼロチャネルについての制御情報に応じて、選択された１つまたは複数の非ゼロチャネル内の１つまたは複数のデータ項目をバッファ３２０から選択することができる。このため、マルチプレクサ２２５で選択された１つまたは複数の非ゼロ要素に対応する１つまたは複数のデータ項目をバッファメモリ３２０から選択することが可能である。次に、マルチプレクサ３２５は、選択された１つまたは複数のデータ項目を乗算アキュムレータアレイ４０５へ出力することができ、それにより、乗算アキュムレータアレイ４０５の各乗算アキュムレータは、非ゼロ要素とデータ項目の各対を入力として用い、乗算演算を実行することができる。次に、非ゼロ要素とデータ項目の各対の加算結果が累積される。
【００７１】
一実施形態では、マルチプレクサ３３５による非ゼロチャネルリスト６２０の検索／選択に、カウンタ５２５またはマルチプレクサ３３０からの現在のカウント値の出力を取り入れることができる。たとえば、マルチプレクサ３３０の出力端子をマルチプレクサ３３５の制御端子に結合することができ、あるいはカウンタ５２５の出力部をマルチプレクサ３３５の制御端子に結合することができる。
【００７２】
カウンタ５２５および非ゼロチャネルリスト６２０によって、セレクタ３００は、セレクタ２００で選択された１つまたは複数の非ゼロ要素に対応する最後の１つまたは複数のデータ項目を選択することができる。一方、セレクタ２００およびセレクタ３００から乗算アキュムレータアレイ４０５に毎回提供されるデータ量は、乗算アキュムレータアレイ４０５の処理能力の範囲内に抑制することができる。
【００７３】
本開示の一実施形態による装置は、カウンタ５０５，５１０，５１５，５２０，５２５のうちの１つを含みうる。たとえば、ポイントごとの希薄化によって処理されるニューラルネットワークだけが処理される場合では、カウンタ５０５が含まれるだけでよく、マルチプレクサ３３５および非ゼロチャネルリスト６２０は配置されなくてもよい。別の実施形態では、本開示の一実施形態による装置は、複数のカウンタ５０５，５１０，５１５，５２０，５２５を含みうる。すべてのカウンタ５０５，５１０，５１５，５２０，５２５が含まれる場合には、本開示の一実施形態による装置は、任意の方法で希薄化された畳み込みニューラルネットワークの演算を処理することができる。
【００７４】
複数のカウンタ５０５，５１０，５１５，５２０，５２５が（たとえば、すべて）含まれる場合、各カウンタが実際に機能するかどうかを、各カウンタのカウント値の上限を設定することによって制御することができる。たとえば、図１の例のカーネルでは、カウンタ５０５のカウント値の上限が８に設定されている場合、マルチプレクサ２１５および／またはマルチプレクサ３３０は、非ゼロ要素位置だけでなく、各カーネルのすべての要素位置を実際に選択することができる。
【００７５】
複数のカウンタ５０５，５１０，５１５，５２０，５２５が使用される場合、セレクタ２００およびセレクタ３００の選択結果は、これらのカウンタのうちの１つが単独で使用される場合の選択結果の共通部分に相当する。たとえば、カウンタ５０５が単独で使用される場合に、セレクタ２００の選択結果がＡであり、カウンタ５１０が単独で使用される場合に、セレクタ２００の選択結果がＢであると、カウンタ５０５とカウンタ５１０が同時に使用される場合には、セレクタ２００の選択結果はＡとＢの共通部分になる。
【００７６】
たとえば、図１の例で、５つすべてのチャネルが２つのグループに分割され、層の４つのカーネルＫ１〜Ｋ４が４つのグループに分割される、すなわち各カーネルが１つのグループとして使用されると仮定すると、チャネル１〜３が１つのチャネルグループに割り当てられ、チャネル４および５が別のチャネルグループに割り当てられ、各チャネルグループの各非ゼロチャネルが１つの非ゼロチャネルグループとしてあり、各カーネルのストライドは幅方向に２になり、パディングがメモリ１１０内の入力特徴データに対して畳み込み演算中に実行されず、メモリ１１０内の入力特徴データは畳み込み演算中にパッドされず、２つの連続するデータ項目位置のそれぞれにおける出力特徴データのすべてのチャネル内のデータ項目が、１つのグループに割り当てられる。
【００７７】
カウンタ５０５，５１０，５１５，５２０からの現在のカウント値がそれぞれ１，０，２，１であるとき、マルチプレクサ２１５は、カーネルＫ３（カウンタ５１５の現在のカウント値２に対応）において要素位置が３である（カウンタ５０５の現在のカウント値１に対応、図１のＬ３を参照）チャネル１〜３の非ゼロ要素（Ｋ３，１，３，３）をメモリ１１０から選択し、これらをバッファメモリ２２０の中にバッファリングすることができる。
【００７８】
マルチプレクサ３３０は、カウンタ５０５の現在のカウント値１に応じて、図１などのＬ３で指標値が１である項目を非ゼロ要素位置リスト６１０から選択し、それにより、非ゼロ要素位置が３であることが決定され、その情報はマルチプレクサ３１５の制御端子に提供される。
【００７９】
さらに、マルチプレクサ３１５は、データ項目位置がそれぞれチャネル１〜３（カウンタ５１０の現在のカウント値０に対応する）の（１，７）、（２，７）、（３，７）、（１，９）、（２，９）および（３，９）（これらのデータ項目位置は非ゼロ要素位置３に対応する）であるすべてのデータ項目（１，７，１）、（１，７，２）、（１，７，３）、（２，７，１）、（２，７，２）、（２，７，３）、（３，７，１）、（３，７，２）、（３，７，３）、（１，９，１）、（１，９、２）、（１，９，３）、（２，９，１）、（２，９，２）、（２，９，３）、（３，９，１）、（３，９，２）および（３，９，３）を、データ項目位置がそれぞれ（１，５）、（２，５）、（３，５）、（１，６）、（２，６）、（３，６）、（１，７）、（２，７）、（３，７）、（１，８）、（２，８）、（３，８）、（１，９）、（２，９）および（３，９）であるメモリ１２０内のすべてのデータ項目から選択する（出力特徴データ中の対応するデータ項目は、カウンタ５２０の現在のカウント値１に対応する）。
【００８０】
バッファメモリ２２０内の非ゼロ要素（Ｋ３，１，３，３）に対応して、カウンタ５２５からの現在のカウント値は０である。それに応じて、マルチプレクサ２２５は非ゼロ要素（Ｋ３，１，３，３）をバッファメモリ２２０内のデータから選択することができる。マルチプレクサ３３５は、指標値（たとえば、上述のように、カウンタ５１０からの現在のカウント値を組み合わせることができる）をカウンタ５２５からの現在のカウント値に基づいて決定し、図１の非ゼロ要素位置リストＬ３と関連付けられた非ゼロチャネルリストＬ４などの非ゼロチャネルリスト６２０を検索する。また、マルチプレクサ３２５は、（１，７，３）、（２，７，３）、（３，７，３）、（１，９，３）、（２，９，３）および（３，９，３）を、バッファメモリ３２０にバッファリングされたデータ項目（１，７，１）、（１，７，２）、（１，７，３）、（２，７，１）、（２，７，２）、（２，７，３）、（３，７，１）、（３，７、２）、（３，７，３）、（１，９，１）、（１，９，２）、（１，９，３）、（２，９，１）、（２，９，２）、（２，９，３）、（３，９，１）、（３，９，２）および（３，９，３）から選択する。
【００８１】
乗算アキュムレータアレイ４０５の各乗算アキュムレータは、各データ項目をマルチプレクサ３２５から受け取り、対応する非ゼロ要素をマルチプレクサ２２５から受け取って、演算を実行する。たとえば、乗算アキュムレータアレイ４０５の乗算アキュムレータの１つのグループのうちの１つの乗算アキュムレータが、非ゼロ要素（Ｋ３，１，３，３）をマルチプレクサ２２５から、またデータ項目（１，７，３）をマルチプレクサ３２５から入力として受け取り、乗算演算を実行することができる。乗算アキュムレータのそのグループ内の別の乗算アキュムレータが、非ゼロ要素（Ｋ３，１，３，３）をマルチプレクサ２２５から、またデータ項目（２，７，３）をマルチプレクサ３２５から入力として受け取り、乗算演算を実行し、以前の乗算アキュムレータの演算結果に累積することができる。また、乗算アキュムレータのそのグループ内の別の乗算アキュムレータが、非ゼロ要素（Ｋ３，１，３，３）をマルチプレクサ２２５から、またデータ項目（３，７，３）をマルチプレクサ３２５から入力として受け取り、乗算演算を実行し、以前の乗算アキュムレータの演算結果に累積することができる。
【００８２】
一実施形態では、カウンタ５０５，５１０，５１５，５２０，５２５それぞれは、カウント値が記憶されるレジスタとすることができる。さらに、この実施形態による装置は、各カウンタのカウントのタイミングをとるためのタイミングコントローラ（図示せず）をさらに含みうる。たとえば、カウンタ５０５は、カウンタ５１５のそれぞれの現在のカウント値の間中、周期的にカウントすることになりうる、あるいはカウンタ５１５は、カウンタ５０５のそれぞれの現在のカウント値の間中、周期的にカウントすることになりうる。たとえば、カウンタ５１０は、カウンタ５０５のそれぞれの現在のカウント値の間中、周期的にカウントすることになりうる、あるいはカウンタ５２５は、カウンタ５０５のそれぞれの現在のカウント値の間中、周期的にカウントすることになりうる。各カウンタのタイミングをカウントする異なる方法に応じて、乗算アキュムレータアレイ４０５に毎回提供される入力データは異なりうるが、最終的に得られる畳み込み演算の結果は同じである。
【００８３】
本開示の一実施形態による装置について上で説明してきた。しかし、上記の実施形態は例示にすぎず、限定するものではないことを理解されたい。本開示の実施形態による装置は、他の構成要素および／または構造も有しうる。
【００８４】
文脈において明らかに求められない限り、説明および請求項全体を通じて、「〜を備えている」および「〜を含む」などの語は、記載されていない要素は含まない、またはすべての要素を網羅している意味ではなく、記載されていない要素も含みうるように（すなわち「〜を含み、ただしそれらに限定されない」という意味として）解釈されるものとする。さらには、語「ここで」、「上に」、「下に」、および類似する語は、本開示の中で使用されているとき、本開示のいずれかの特定の部分ではなく、本開示を全体として指すものとする。上の説明において使用されている単数形の語または複数形の語は、文脈において許容されるとき、それぞれ複数の要素または単数の要素を含みうる。２つ以上の項目のリスト（羅列）に関連する語「または」は、この語の次の解釈、すなわち、リストの中の項目のいずれか、リストの中の項目すべて、リストの中の項目の任意の組合せ、のすべてをカバーする。
【００８５】
本発明のいくつかの実施形態を説明してきたが、これらの実施形態は一例として提示されているにすぎず、本開示の範囲を制限するようには意図されていない。本明細書に記載されている新規の方法およびシステムは、実際にはさまざまな別の形態に具体化することができる。さらには、本明細書に記載されている方法およびシステムの形態において、本開示の趣旨から逸脱することなく、さまざまな省略、置き換え、および変更を行うことができる。
【図１】
2019106186.tif 000003
【図２】
2019106186.tif 000004
【図３】
2019106186.tif 000005
【外国語明細書】
2019106186000001.pdf