(57)【要約】【課題】折り畳まれた特徴データに対して畳み込み演算を実行する方法を提供する。【解決手段】ＤＲＡＭから畳み込み層に提供される折り畳まれた特徴データ及びオリジナル畳み込みカーネルを読み出し、折り畳まれた特徴データ及びオリジナル畳み込みカーネルの前処理を実行し、前処理された折り畳まれた特徴データをＳＲＡＭに格納し、折り畳まれた特徴データの折り畳み方法に基づいて、幅又は高さの少なくとも一つの次元で前処理されたオリジナル畳み込みカーネルを折り畳み、オリジナル畳み込みカーネルに対応する折り畳まれた畳み込みカーネルを生成し、一又は複数の折り畳まれた畳み込みカーネルを前記ＳＲＡＭに格納し、前処理された折り畳まれた特徴データ及び一つ又は複数の折り畳まれた畳み込みカーネルを、前記ＳＲＡＭから計算手段に読み出し、一又は複数の折り畳まれた畳み込みカーネルを用いて、前処理された折り畳まれた特徴データに対して畳み込み演算を実行することを含む。【選択図】図３
2019102082.tif 000002
【特許請求の範囲】
【請求項１】
折り畳まれた特徴データに対して畳み込み演算を実行する方法であって、
ダイナミックランダムアクセスメモリ（ＤＲＡＭ）から畳み込み層に提供される折り畳まれた特徴データ及びオリジナル畳み込みカーネルを読み出すステップと、
前記折り畳まれた特徴データ及び前記オリジナル畳み込みカーネルに対して前処理を実行するステップと、
前処理された折り畳まれた特徴データをスタティックランダムアクセスメモリ（ＳＲＡＭ）に格納するステップと、
前記折り畳まれた特徴データの折り畳み方法に基づいて、幅又は高さの少なくとも一つの次元で前処理されたオリジナル畳み込みカーネルを折り畳み、前記オリジナル畳み込みカーネルに対応する一又は複数の折り畳まれた畳み込みカーネルを生成するステップと、
前記一又は複数の折り畳まれた畳み込みカーネルを前記ＳＲＡＭに格納するステップと、
前記前処理された折り畳まれた特徴データ及び前記一つ又は複数の折り畳まれた畳み込みカーネルを、前記ＳＲＡＭから計算手段に読み出し、前記一又は複数の折り畳まれた畳み込みカーネルを用いて、前記前処理された折り畳まれた特徴データに対して前記畳み込み演算を実行するステップと
を含む折り畳まれた特徴データに対して畳み込み演算を実行する方法。
【請求項２】
前記ＳＲＡＭは複数のメモリ手段を含み、メモリ手段ごとにメモリアドレスを有し、前記前処理された折り畳まれた特徴データにおいて少なくとも２画素ごとに同一のメモリ手段に格納され、各折り畳まれた畳み込みカーネルにおいて、少なくとも２画素ごとに同一のメモリ手段に格納される請求項１に記載の方法。
【請求項３】
前記折り畳まれた特徴データは、第１の次元における折り畳まれていない第１特徴データに対応し、前記第１特徴データにおける第１の次元での第ifx×Nx+jfx番目のスライスのすべてのCx個のチャネルのデータは、前記折り畳まれた特徴データの前記第１の次元における第ifx番目のスライスのjfx×Cx番目のチャネルから開始する連続のCx個のチャネルのデータに対応し、前記第１の次元は幅及び高さのいずれかであり、ifxは０以上の整数で、Nxは１より大きい整数で、jfxは０以上Nx未満の整数で、Cxは０より大きい整数である請求項１に記載の方法。
【請求項４】
前記前処理は、
前記畳み込み層によって指定されたパディング方法に基づいて、前記パディング方法が求める前記第１特徴データの前記第１の次元における開始境界でのパディング量を示す第１パディング量P1を決定するステップと、
前記第１パディング量P1は０以上であり、
【数１】
2019102082.tif 000019
を含む請求項３に記載の方法。
【請求項５】
前記オリジナル畳み込みカーネルの前記第１の次元における第１ストライドがNxに等しくない場合、前記畳み込み演算を行うことは、
前記オリジナル畳み込みカーネルに対応するすべての折り畳まれた畳み込みカーネルを用いて、前記前処理された折り畳まれた特徴データの同一部分に対して畳み込みを行った後に、前記オリジナル畳み込みカーネルに対応するすべての折り畳まれた畳み込みカーネルを、第１の次元で前記第１ストライドに従って同時に移動させ、又は
前記オリジナル畳み込みカーネルに対応する各折り畳まれた畳み込みカーネルをそれぞれ用いて、前記前処理された折り畳まれた特徴データ全体に対して畳み込みを行うステップを含み、
前記折り畳まれた畳み込みカーネルごとの前記第１の次元におけるストライドは前記第１ストライドに等しく、
前記オリジナル畳み込みカーネルの第１の次元における第１ストライドがNxに等しい場合、前記折り畳まれた畳み込みカーネルごとの第１の次元におけるストライドは１である請求項３に記載の方法。
【請求項６】
前記オリジナル畳み込みカーネルに対応するすべての折り畳まれた畳み込みカーネルを用いて、前記前処理された折り畳まれた特徴データの同一部分に対して畳み込みを行うことは、
前記計算手段における複数の乗算器によって、前記前処理された折り畳まれた特徴データにおける複数の画素のうちのそれぞれが、複数の折り畳まれた畳み込みカーネルの一の対応する画素との積を同時に計算するステップを含む請求項５に記載の方法。
【請求項７】
前記少なくとも一つの次元で前処理されたオリジナル畳み込みカーネルの折り畳みを行うことは、
前処理されたオリジナル畳み込みカーネルの前記第１の次元における開始境界で、kx×Sx個のゼロスライスをそれぞれパディングし、Eｘ個の第１変換された畳み込みカーネルを生成するステップと、
Sxは前記オリジナル畳み込みカーネルの前記第１の次元における第１のストライドであり、Eｘは１以上であってNx及びSxによって決まる値であり、ｋxは０以上Ex未満の整数であり、
前記第１の次元におけるNx個ごとの連続スライスを、深さの次元でつなぎ合わせるように、前記第１の次元で第１変換された畳み込みカーネルのそれぞれに対して第１折り畳みを行い、第１変換された畳み込みカーネルのそれぞれに対して、対応する第１折り畳まれた畳み込みカーネルを生成するステップと
を含む請求項３に記載の方法。
【請求項８】
前記第１変換された畳み込みカーネルごとの前記第１の次元における第ikx×Nx+jkx番目のスライスのすべてのCx個のチャネルのデータは、対応する第１折り畳まれた畳み込みカーネルの前記第１の次元における第ikx番目のスライスのjkx×Cx番目から開始する連続のCx個のチャネルのデータにそれぞれ対応し、ikxは０以上の整数で、jkxは０以上Nx未満の整数である請求項７に記載の方法。
【請求項９】
前記第１特徴データは、第２の次元における折り畳まれていない第２特徴データに対応し、前記第２特徴データの第２の次元における第ify×Ny+jfy番目のスライスのすべてのCy個のチャネルのデータは、前記第１特徴データの第２の次元におけるify番目のスライスの第jfy×Cy番目のチャネルから開始する連続のCy個のチャネルのデータに対応し、第２の次元は幅又は高さのうちの他方であり、ifyは０以上の整数で、Nyは１より大きい整数で、jfyは０以上Ny未満の整数で、Cyは０より大きい整数である請求項７に記載の方法。
【請求項１０】
前記前処理は、
前記畳み込み層によって指定された前記パディング方法に基づいて、前記パディング方法が求める前記第２特徴データの前記第２の次元における開始境界でのパディング量を示す前記第２のパディング量P2を決定するステップと、
前記第２のパディング量P2は０以上であり、
【数２】
2019102082.tif 000020
をさらに含む請求項９に記載の方法。
【請求項１１】
前記少なくとも一つの次元で前処理されたオリジナル畳み込みカーネルの折り畳みを行うことは、
第１折り畳まれた畳み込みカーネルごとの前記第２の次元における開始境界で、ky×Sy個のゼロスライスをそれぞれパディングし、前記第１折り畳まれた畳み込みカーネルのそれぞれに対して、Ey個の第２変換された畳み込みカーネルをそれぞれ生成するステップと、
Syは前記オリジナル畳み込みカーネルの前記第２の次元における第２のストライドで、Eyは１以上であってNy及びSyによって決まる値であり、kｙは０以上Eｙ未満の整数であり、
前記第２の次元におけるNy個ごとの連続のスライスを深さの次元でつなぎ合わせるように、前記第２の次元で第２変換された畳み込みカーネルのそれぞれに対して第２折り畳みを行い、第２変換された畳み込みカーネルのそれぞれに対して、対応する第２折り畳まれた畳み込みカーネルを生成するステップと
をさらに含む請求項９に記載の方法。
【請求項１２】
前記第２変換された畳み込みカーネルごとの前記第２の次元における第iky×Ny+jky番目のスライスのすべてのCy個のチャネルのデータは、対応する第２折り畳まれた畳み込みカーネルの前記第２の次元における第iky番目のスライスのjky×Cy番目から開始する連続のCy個のチャネルのデータにそれぞれ対応し、ikyは０以上の整数で、jkyは０以上Ny未満の整数である請求項１１に記載の方法。
【請求項１３】
前記オリジナル畳み込みカーネルの前記第２の次元における第２ストライドがNyに等しくない場合、前記畳み込み演算を行うことは、
前記オリジナル畳み込みカーネルに対応するすべての折り畳まれた畳み込みカーネルを用いて、前記前処理された折り畳まれた特徴データの同一部分に対して畳み込みを行った後に、前記オリジナル畳み込みカーネルに対応するすべての折り畳まれた畳み込みカーネルを、第２の次元で前記第２ストライドに従って同時に移動させ、又は
前記オリジナル畳み込みカーネルに対応する各折り畳まれた畳み込みカーネルをそれぞれ用いて、前記前処理された折り畳まれた特徴データ全体に対して畳み込みを行うステップを含み、
前記折り畳まれた畳み込みカーネルごとの前記第２の次元におけるストライドは前記第２ストライドに等しく、
前記オリジナル畳み込みカーネルの第２の次元における第２ストライドがNyに等しい場合、前記折り畳まれた畳み込みカーネルごとの第２の次元におけるストライドは１である請求項１１に記載の方法。
【請求項１４】
折り畳まれた特徴データに対して畳み込み演算を実行するための装置であって、
前記装置は、前記一又は複数のプロセッサに以下のステップを実行させるための指令を実行するように構成された一又は複数のプロセッサを具備し、
前記ステップは、
ダイナミックランダムアクセスメモリ（ＤＲＡＭ）から畳み込み層に提供された折り畳まれた特徴データ及びオリジナル畳み込みカーネルを読み出すステップと、
前記折り畳まれた特徴データ及びオリジナル畳み込みカーネルを前処理するステップと、
前処理された折り畳まれた特徴データをスタティックランダムアクセスメモリ（ＳＲＡＭ）に格納するステップと、
前記折り畳まれた特徴データの折り畳み方法に基づいて、幅又は高さの少なくとも一つの次元で前処理されたオリジナル畳み込みカーネルの折り畳みを行い、前記オリジナル畳み込みカーネルに対応する一又は複数の折り畳まれた畳み込みカーネルを生成するステップと、
前記一又は複数の折り畳まれた畳み込みカーネルを前記ＳＲＡＭに格納するステップと、
前記前処理された折り畳まれた特徴データ及び前記一又は複数の折り畳まれた畳み込みカーネルを、前記ＳＲＡＭから計算手段に読み出し、前記一又は複数の折り畳まれた畳み込みカーネルを用いて、前記前処理された折り畳まれた特徴データに対して前記畳み込み演算を実行するステップと
を含む前記装置。
【請求項１５】
折り畳まれた特徴データに対して畳み込み演算を実行する方法であって、
畳み込み層に提供された前記折り畳まれた特徴データ及びオリジナル畳み込みカーネルに対して前処理を実行するステップと、
前記折り畳まれた特徴データの折り畳み方法に基づいて、前処理されたオリジナル畳み込みカーネルを、幅又は高さの少なくとも一つの次元で折り畳み、前記オリジナル畳み込みカーネルに対応する一又は複数の折り畳まれた畳み込みカーネルを生成するステップと、
前記一又は複数の折り畳まれた畳み込みカーネルを用いて、前記前処理された折り畳まれた特徴データに対して前記畳み込み演算を実行するステップとを含む前記方法。
【請求項１６】
コンピュータプログラムであって、
前記コンピュータプログラムは、一以上のメモリと、一以上のプロセッサと、計算手段とを具備する装置によって実行されると、請求項１乃至請求項１３のいずれか１項に記載の方法が実現されるコンピュータプログラム。
【請求項１７】
請求項１乃至請求項１３のいずれか１項に記載の方法を実行することにより得られたデータ構造を有するデータブロックが格納されているメモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に畳み込みニューラルネットワークの技術分野に関し、特に、折り畳まれた特徴データに対して畳み込み演算を実行するための方法および装置に関する。
【背景技術】
【０００２】
畳み込みニューラルネットワークに基づくディープラーニングは、画像認識、ビデオ分析、自然言語の処理、およびドライビング・アシストなどのさまざまな分野で広く使用されている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
畳み込みニューラルネットワークにおける演算量は通常大きい。汎用中央処理装置（ＣＰＵ）、グラフィック処理装置（ＧＰＵ）、または専用アクセラレータなどのようなハードウェアを使用して畳み込みニューラルネットワークにおける演算を効率的に実行できることが望まれている。
【課題を解決するための手段】
【０００４】
本開示は、折り畳まれた特徴データに対して畳み込み演算を実行するための方法および装置を提供する。該方法は、ダイナミックランダムアクセスメモリ（DRAM）から畳み込み層に提供される折り畳まれた特徴データ及びオリジナル畳み込みカーネルを読み出すステップと、前記折り畳まれた特徴データ及びオリジナル畳み込みカーネルに対して前処理を実行するステップと、前処理された折り畳まれた特徴データをスタティックランダムアクセスメモリ（ＳＲＡＭ）に格納するステップと、折り畳まれた特徴データの折り畳み方法に基づいて、幅又は高さの少なくとも一つの次元で前処理されたオリジナル畳み込みカーネルを折り畳み、オリジナル畳み込みカーネルに対応する一又は複数の折り畳まれた畳み込みカーネルを生成するステップと、前記一又は複数の折り畳まれた畳み込みカーネルを前記ＳＲＡＭに格納するステップと、前処理された折り畳まれた特徴データ及び一つ又は複数の折り畳まれた畳み込みカーネルを、前記ＳＲＡＭから計算手段に読み出し、前記一又は複数の折り畳まれた畳み込みカーネルを用いて、前処理された折り畳まれた特徴データに対して畳み込み演算を実行するステップとを含む。
【０００５】
本開示は、特徴データに対して畳み込み演算を実行する方法をさらに提供する。該方法は、畳み込み層に提供された折り畳まれた特徴データ及びオリジナル畳み込みカーネルに対して前処理を実行するステップと、前処理されたオリジナル畳み込みカーネルを、折り畳まれた特徴データの折り畳み方法に基づいて、幅又は高さの少なくとも一つの次元で折り畳み、前記オリジナル畳み込みカーネルに対応する一又は複数の折り畳まれた畳み込みカーネルを生成するステップと、生成された前記一又は複数の折り畳まれた畳み込みカーネルを用いて、前処理された折り畳まれた特徴データに対して前記畳み込み演算を実行するステップとを含む。
【０００６】
本開示は、特徴データに対して畳み込み演算を実行するための装置をさらに提供する。該装置は、指令を実行するように構成された一又は複数のプロセッサを具備し、前記指令の実行により、前記一つ又は複数のプロセッサが上記の方法のいずれかが実行される。
【０００７】
本開示は、コンピュータ装置によって実行されたときに上記の方法のいずれかを実行させるためのプログラム指令を記憶した非一時記憶媒体（non-temporary storage medium）をさらに提供する。
本開示は、コンピュータプログラムをさらに提供し、該コンピュータプログラムが、一以上のメモリと、一以上のプロセッサと、計算手段とを具備する装置によって実行されると、上記の方法のいずれかが実現される。
本開示は、さらにメモリを提供し、該メモリには、上記の方法のいずれかを実行することにより得られたデータ構造を有するデータブロックが格納されている。
【発明の効果】
【０００８】
本開示の実施例における方法及び／又は装置によれば、折り畳まれた特徴データを従来の折り畳まれていない特徴データに展開する必要がなく、折り畳まれた特徴データに対して直接畳み込み演算を実行することができ、演算効率の向上に有利である。
【図面の簡単な説明】
【０００９】
【図１】図１は、本開示の実施形態に係る折り畳まれた特徴データの例示を示す。
【図２】図２は、本開示の実施形態に係る折り畳まれた特徴データの例示を示す。
【図３】図３は、本開示の実施形態に係る折り畳まれた特徴データに対して畳み込み演算を実行する方法のフロー図を示す。
【図４】図４は、本開示の実施形態に係る折り畳まれた特徴データ及びオリジナル畳み込みカーネルに対して前処理を実行する例を示す。
【図５】図５は、本開示の実施形態に係る一次元において前処理されたオリジナル畳み込みカーネルを折り畳む例を示す。
【図６】図６は、本開示の実施形態に係る二次元において前処理されたオリジナル畳み込みカーネルを折り畳む例を示す。
【図７】図７は、本開示の実施形態に係る畳み込み演算を実行する例を示す。
【図８】図８は、本開示の実施形態に係る畳み込み演算を実行する例を示す。
【図９】図９は、本開示の実施形態に係る折り畳まれた特徴データに対して畳み込み演算を実行する装置の例を示す。
【図１０】図１０は、本開示の実施形態に係る折り畳まれた特徴データに対して畳み込み演算を実行する装置の例を示す。
【図１１】図１１は、本開示の実施形態に係る折り畳まれた特徴データに対して畳み込み演算を実行するための設備の例を示す。
【図１２Ａ】図１２Ａは、本開示の実施形態に係る特徴データがスタティックランダムアクセスメモリに如何に格納されているかを示す例示である。
【図１２Ｂ】図１２Ｂは、本開示の実施形態に係る特徴データがスタティックランダムアクセスメモリに如何に格納されているかを示す例示である。
【発明を実施するための形態】
【００１０】
以下の記載において、添付図面を参照しつつ、本開示に係る例示的な実施形態を述べる。
【００１１】
本開示において、畳み込みニューラルネットワークに提供される特徴データはデータキューブとみなすことができ、幅、高さ、及び深さ（すなわち、異なるチャネル）などの複数の次元を有してもよく、該特徴データにおけるデータごとに、データキューブ内の一つの点にそれぞれ対応させることができる。対応して、畳み込みニューラルネットワークにおける畳み込み演算のための重みパラメータも畳み込みカーネルごとに一つのデータキューブとみなすことができる。
【００１２】
通常、データキューブを述べるときに、「スライス」という用語を使用することができる。データキューブの三次元を、三次元デカルト座標系におけるＸ軸、Ｙ軸、およびＺ軸によって表される次元に対応するとみなす場合、該データキューブの、Ｘ軸によって表される次元に対応する第１の次元におけるスライスは、Ｘ軸に直交する平面を使用して該データキューブにおけるデータをサンプリングして得られた結果を示す。該結果は、Ｙ軸とＺ軸で表される二次元平面上の矩形データである。
【００１３】
また、データキューブを点の集合とみなし、
【数１】
2019102082.tif 000003
Ｗ、Ｈ及びＤは、いずれも０より大きい整数である場合、該データキューブのＸ軸において表された次元に対応する第１の次元におけるスライスは
【数２】
2019102082.tif 000004
である。含まれているすべてのデータはいずれもゼロ（又はゼロに相当する）の値のスライスはゼロスライスと称することができる。
【００１４】
さらに、「画素」という用語も、データキューブを表すのによく使用される。データキューブの画素には、データキューブにおいて同じ幅（Ｘ軸）と高さ（Ｙ軸）の座標を有する点が含まれている。
【数３】
2019102082.tif 000005
と表示することができる。なお、一のスライスは複数の画素を含み得ることは理解され得る。
【００１５】
本明細書において、説明の便宜上、特徴データ又は畳み込みカーネルがある次元におけるデータを述べる際に、「スライス」という用語をも使用する。例えば、幅の次元におけるスライス（本開示において「幅スライス」という）、高さの次元におけるスライス（本開示において「高さスライス」という）などである。
【００１６】
本明細書において、データキューブＡの第１の次元（例えば、幅のような次元）でパディング又は一或いは複数のゼロスライスを附加することに言及するときに、Ａの第１の次元における境界に（例えば、幅における左側又は右側）一又は複数のゼロスライスを増加させることで、Ａの第１の次元の次元値（例えば、幅）を増加させ、増加したゼロスライスのそれぞれが別の二つの次元（例えば、高さと深さの二つの次元）において、オリジナルＡと同じ次元値（例えば、高さ値と深さ値）を有することを意味するものとすることができる。
【００１７】
本明細書において、データキューブＡの第１の次元及び第２の次元（例えば、幅と高さの二つの次元）でパディング又は一或いは複数のゼロスライスを附加することに言及するとき、Ａの第１の次元における境界に（例えば、幅における左側又は右側）一又は複数のゼロスライスを増加させることで、Ａの第１の次元の次元値（例えば、幅）を増加させ、増加したゼロスライスのそれぞれが別の二つの次元（例えば、高さと深さの二つの次元）において、オリジナルＡと同じ次元値（例えば、高さ値と深さ値）を有することを意味するものとすることができる。そして、幅が増加した後に得られたキューブＡ’の第２の次元の境界で（例えば、高さにおける上側又は下側）一又は複数のゼロスライスを増加させて、Ａ’の第２の次元の次元値（例えば、高さ）を増加させ、増加したゼロスライスのそれぞれが別の二つの次元（例えば、幅値と深さ値の二つの次元）で、Ａ’と同じ次元値（例えば、幅値及び深さ値）を有することを意味するものとすることができる。
【００１８】
本明細書において、データキューブＡに係る各スライスが深さの次元で揃える（align）ことを言及するとき、Ａに対して所望の深さ値を有しないスライス（幅スライスであってもよく、高さスライスであってもよい）が、深さにゼロ（又はゼロに相当する値）を追加し、追加後のＡの各スライスが所望の深さ値を有するようにすることを意味するものとすることができる。
【００１９】
本明細書において、データキューブＡの第１の次元および／または第２の次元のパディングについて言及するとき、特に明記されない限り、パディングされたゼロスライスの数はゼロ又は一つ又は複数であってもよい。
【００２０】
畳み込み型ニューラルネットワークにおける計算量は、通常大きく、汎用の中央処理装置、グラフィックプロセッサ、または専用アクセラレータなどのハードウェアを使用して、畳み込み型ニューラルネットワークにおける演算を効率的に実行できることが望まれている。計算効率の改善および／またはハードウェア設計の簡略化のために、例えば、畳み込み演算を実行する加算器および／または乗算器にデータを提供するように、マルチチャネルをサポートするメモリを設計することができ、又は演算手段（例えば、畳み込み演算を実行するための乗算回路など）が、マルチチャネル（例えば、３２チャネル）の演算をサポートするように設計することができる。
【００２１】
一方、通常、畳み込みニューラルネットワークの入力層に提供される特徴データのチャネル数は少ない（通常３チャネルまたは１チャネル）可能性があり、畳み込みニューラルネットワークのフィードフォワード推論方向に、前寄りの畳み込み層の入力特徴データのチャネル数も少ない可能性があるため、少なくとも畳み込みニューラルネットワーク全体のフィードフォワード推論プロセス（feedforward reasoning process）のある特定の段階において、マルチチャネルをサポートすることができるメモリおよび／または演算装置のリソースの利用率が低くなってしまう。そのため、従来の特徴データを、幅および／または高さにおいて折り畳むことができることで、例えばマルチチャネルをサポートすることができるメモリのリソース利用率を改善する。
【００２２】
しかしながら、既に設計された畳み込みニューラルネットワークのアーキテクチャの下では、折り畳まれた特徴データに対して、対応する畳み込み層における重みパラメータを直接使用して畳み込み演算を実行することができない。したがって、折り畳まれた特徴データを、まず従来の折り畳まれていない特徴データに展開し、それから、展開により得られた折り畳まれていない特徴データを対応する畳み込み層に提供し、該畳み込み層の重みパラメータを使用して折り畳まれていない特徴データに対して、畳み込みを実行する必要がある。これは、折り畳まれた特徴データを使用することによる利点が相殺され、例えば、再度キャッシュメモリおよび／または乗算器などのハードウェアリソースの浪費をもたらし、多くの無駄な演算を導入するおそれがあることを意味する。
【００２３】
そのため、既に設計された畳み込みニューラルネットワークのアーキテクチャの下で、直接折り畳まれた特徴データに対して畳み込み演算を実行できることが望まれる。
【００２４】
折り畳まれた特徴データは、幅及び高さにおける一の次元Ｄ１において、オリジナル特徴データＦＤのＤ１におけるNx（Nxは１より大きい整数で）個ごとのスライスを深さで折り畳んで得られた結果ＦＤ’であってもよい。ここで、ＦＤのうちのＤ１おける第ifx×Nx+jfx番目のスライスのすべてのＣｘ個のチャネルのデータは、ＦＤ’のうちのＤ１におけるifx番目のスライスのjfx×Ｃｘ個のチャネルから開始する連続のCx個チャネルのデータに対応し、ここで、ifxは０以上の整数であり、jfxは０以上かつNx未満の整数であり、Cxは０より大きい整数である。
【００２５】
また、折り畳まれた特徴データは、幅及び高さの二つの次元において、オリジナル特徴データＦＤを折り畳んで得られた結果ＦＤ’’であってもよい。例えば、ＦＤ’’は、引き続き幅及び高さにおける別の次元Ｄ２で、前記ＦＤ’のＤ２におけるNy（Nyは１より大きい整数で）個ごとのスライスを、深さで折り畳むことで得られた結果であってもよく、ここで、ＦＤ’のうちのＤ２における第ify×Ny+jfy番目のスライスのすべてのCy個のチャネルのデータは、ＦＤ’’のうちのＤ２におけるify番目のスライスのjfy×Cy個のチャネルから開始する連続のCy個チャネルのデータに対応し、ここで、ifyは０以上の整数であり、jfyは０以上かつNy未満の整数であり、Cyは０より大きい整数である。
【００２６】
図１に幅、高さ及び深さがそれぞれ６、５及び３である折り畳まれていない特徴データＦＤに対応する幅折り畳み特徴データの例示ＦＤ’を示し、ここで、ＦＤ’の幅、高さ及び深さがそれぞれ３、５及び６で、幅におけるつなぎ合わせ数Nx＝２である。
【００２７】
図２に図１におけるＦＤに対応する幅及び高さにおける折り畳む折り畳まれたデータの例示ＦＤ’’を示し、ここで、ＦＤ’’はＦＤがＦＤ’をベースに引き続き高さで折り畳んで得られた結果であり、ＦＤ’’の幅、高さ及び深さはそれぞれ３、３及び１２で、高さにおけるつなぎ合わせ数はNy＝２である。
【００２８】
図１及び図２において、各小キューブは特徴データにおける一のデータ値（例えば、ＲＧＢ画像における一の色の画素値）を示す。各小キューブの正面に“ｘ、ｙ”の形式で幅及び高さの二つの次元における座標値が標記され、側面に該小キューブが代表するデータ値が対応する特徴データにおけるチャネル番号が標記されている。
【００２９】
例えば、図１におけるＦＤにおける正面に「１，１」と標記された小キューブが、ＦＤの中の幅及び高さの二つの次元で見た場合の第１行第１列に位置することを示す。また、該小キューブの側面に「１」と標記されている。これは、該小キューブが深さ（またはチャネル）の次元から見た第１行に位置することを示す。これらのすべての小キューブが折り畳まれていない特徴データＦＤを構成し、ＦＤは６つの幅スライスを有し、すなわち、ＦＤにおける第１列のすべての小キューブ（ｙ＝１）、ＦＤにおける第２列のすべての小キューブ（ｙ＝２）、ＦＤにおける第３列のすべての小キューブ（ｙ＝３）、ＦＤにおける第４列のすべての小キューブ（ｙ＝４）、ＦＤにおける第５列のすべての小キューブ（ｙ＝５）及びＦＤにおける第６列のすべての小キューブ（ｙ＝６）である。
【００３０】
また、折り畳まれた特徴データにおける各データと折り畳まれていない特徴データにおける各データとの対応関係を示すために、図１および図２では、ＦＤ’及びＦＤ’’における各小キューブのチャネルの番号は付け直していない。
【００３１】
図２に示すように、ＦＤ’の高さスライスの総数はNyの整数倍ではないため、ＦＤ’’における第３行の高さスライスには、ＦＤ’’における各スライスが深さにおいて揃えるゼロ値データが、さらに含まれている（図２において破線の枠のAで表示する）。
【００３２】
図１及び図２は単なる例示であることは理解されるべきである。別の例示において、折り畳まれた特徴データは、一つの従来の特徴データに対して高さで折り畳んだ結果であってもよく、又はまず高さで折り畳み、次いで幅で折り畳んだ結果であってもよく、折り畳んだ結果の各スライスが深さで揃えるためのゼロ値データを含むこともできる。
【００３３】
折り畳まれた特徴データについて、少なくとも該折り畳まれた特徴データを生成するために使用される折り畳み方法（Ｄ１における折り畳みに関連付けられるNx値及び／又はＤ１における折り畳みに関連付けられるNy値を含む）は予め知っているものであってもよい。また、折り畳んだ結果の各スライスが深さ方向で揃えるためのゼロ値データの数も予め知っているものであってもよい。
【００３４】
なお、前後文の文脈が明確な場合、以後の記載では、特徴データ（及び後述の畳み込みカーネル）における各小キューブを示さないで、平面を使って各スライスを示す可能性がある。例えば、幅、高さ及び深さの三つの次元がそれぞれ三次元デカルト座標系のＸ軸、Ｙ軸、Ｚ軸にそれぞれ対応させた場合、Ｘ軸に垂直な（又はＹ−Ｚ平面に平行な）平面を用いて特徴データ（又は後述する畳み込みカーネル）の幅スライスを表示することができる。
【００３５】
図３は、本開示の一実施形態に係る折り畳まれた特徴データに対して畳み込み演算を実行する例示の方法３００のフロー図を示す。
【００３６】
図３に示すように、例示方法３００は以下のステップを含むことができる。
ステップＳ３０５：折り畳まれた特徴データ及び畳み込み層のオリジナル畳み込みカーネルに対して前処理を実行し、
ステップＳ３１０：前処理されたオリジナル畳み込みカーネルを折り畳み、オリジナル畳み込みカーネルに対応する一又は複数の折り畳まれた畳み込みカーネルを生成し、及び
ステップＳ３１５、生成された一又は複数の折り畳まれた畳み込みカーネルを用いて、前処理された折り畳まれた特徴データに対して畳み込み演算を実行する。
【００３７】
従来の畳み込み演算において、すなわち、オリジナル畳み込みカーネルを用いて、畳み込み層に提供されたオリジナル折り畳まれていない特徴データに対して畳み込みを実行する場合、オリジナル畳み込みカーネルが、幅におけるストライドSx（１以上）で、高さにおけるストライドSy（１以上）で、オリジナル畳まれていない特徴データ上スライドさせ、オリジナル畳まれていない特徴データにおけるスライディングウィンドウ（sliding window）が対応する部分のデータに対して畳み込みを行う。
【００３８】
所望の出力特徴データを得ることができるようにするために、畳み込みを実行する前に、予め指定されたパディング方法に従い、オリジナル畳まれていない特徴データの幅及び高さの二つの次元における周辺（幅での開始境界及び終了境界（starting and ending boundaries）及び高さにおける開始境界及び終了境界を含む）でゼロスライスをパディングし、パディングしたゼロスライスの数は指定されたパディング方法によって決まり、０個、１個、又は複数個であってもよい。
【００３９】
すでに設計された畳み込みニューラルネットワークに対して、各畳み込み層において使用される重みパラメータ（畳み込みカーネルの数と畳み込みカーネルごとの幅、高さ、深さ、及び含まれる値を含む）、及び該畳み込み層に提供されるオリジナル畳み込まれていない特徴データのパディング方法は常に既知である。これらの設定は、該畳み込みニューラルネットワークの設計に際して、畳み込みニューラルネットワークの設計者によって事前に指定することができ、又は学習によって設計され又は調整されてもよい。
【００４０】
折り畳まれた特徴データを畳み込みニューラルネットワークの畳み込み層に提供されるとき、本開示の実施形態による方法を使用して正しい所望の結果が依然として得られることを確実にするために、ステップＳ３０５において、折り畳まれた特徴データ及びオリジナル畳み込みカーネルに対して前処理を、先に実行することができる。
【００４１】
一実施形態において、該畳み込み層が受信した折り畳まれた特徴データが、オリジナル折り畳まれていない特徴データＦＤに対して、幅及び高さの一つの次元Ｄ１において、スプライシング数（splicing number）Nxに従って折り畳んだ結果ＦＤ’である場合、畳み込み層によって指定されたＦＤのパディング方法に基づいて、ＦＤのＤ１の開始境界でパディングしようとする
【数４】
2019102082.tif 000006
【００４２】
ＦＤ’のＤ１の終了境界について、ＦＤ’のＤ１における次元値FVx’（例えば、Ｄ１が幅である場合の幅値）、該畳み込み層の重みパラメータのオリジナル畳み込みカーネルKのＤ１における次元値FVx及びＤ１におけるストライドSxを、先に決定することができる。
【数５】
2019102082.tif 000007
を計算して得られた結果がSxの整数倍になるように、ＦＤ’のＤ１の終了境界で、P2’個のゼロスライスをパディングすることができる。
【００４３】
ＦＤ’のＤ１の終了境界について、予期の折り畳まれた畳み込みカーネルがＤ１における次元値
【数６】
2019102082.tif 000008
の結果値がSxの整数倍になるように、ＦＤ’のＤ１における終了境界のパディング量P2’を決定することができ、でなければ、P2’<KVx’になるように、ＦＤ’のＤ１における終了境界のパディング量P2’を決定することができる。
【００４４】
また、該畳み込み層によって指定された幅及び高さにおける別の次元Ｄ２においてＦＤに対してパディングするというパディング方法に従い、ＦＤ’のＤ２における開始境界及び／又は終了境界でパディングすることができる。
【００４５】
オリジナル畳み込みカーネルのＤ１における開始境界で
【数７】
2019102082.tif 000009
個のゼロスライスをパディングすることができる。
【００４６】
別の実施形態において、畳み込み層が受信した折り畳まれた特徴データは、オリジナル折り畳まれていない特徴データＦＤに対して、幅及び高さの二つの次元で折り畳んだ結果ＦＤ’’である場合、例えば、ＦＤ’’は、まず幅と高さにおける一の次元Ｄ１において、スプライシング数Nxに従って折り畳みを行ってＦＤ’を得、そして引き続きＦＤ’の幅及び高さにおける別の次元Ｄ２において、スプライシング数Nyに従って折り畳みを行って、得られた結果である場合、ＦＤ’’に対して、Ｄ１において前の実施形態において述べたＦＤ’に対するＤ１における開始境界及び終了境界でパディングするような方法でパディングすることができる。
【００４７】
そして、該畳み込み層によって指定されたＦＤに対するパディング方法に従い、ＦＤがＤ２の開始境界でパディングしようとする
【数８】
2019102082.tif 000010
のゼロスライスをパディングする。
【００４８】
ＦＤ’’のＤ２における終了境界について、ＦＤ’’のＤ２における次元値FVy’（例えば、Ｄ２が高さである場合の高さ値）、該畳み込み層の重みパラメータのオリジナル畳み込みカーネルKのＤ２における次元値FVy及びＤ２におけるストライドSyを先に決定することができる。
【００４９】
【数９】
2019102082.tif 000011
を計算して得られた結果がSyの整数倍になるように、ＦＤ’’のＤ２の終了境界で、P3’個のゼロスライスをパディングすることができる。
【００５０】
ＦＤ’’のＤ２の終了境界に対して、予期の折り畳まれた畳み込みカーネルがＤ２における次元値
【数１０】
2019102082.tif 000012
の結果値がSyの整数倍になるように、ＦＤ’’のＤ２における終了境界のパディング量P3’を決定することができ、でなければ、P3’<KVy’になるように、ＦＤ’’のＤ２における終了境界のパディング量P3’を決定することができる。
【００５１】
また、オリジナル畳み込みカーネルKのＤ１における開始境界で
【数１１】
2019102082.tif 000013
個のスライスをパディングすることができる。
【００５２】
例えば、図２の例示におけるＦＤに対して設定された重みパラメータの畳み込みカーネルＫの幅、高さ及び深さはそれぞれ３、３及び３であり、幅及び高さにおける畳み込みのストライドがいずれも１であり、ＦＤによって指定されたパディング方法が左側及び右側にそれぞれ１列をパディングし（すなわち、それぞれ１つのゼロスライスをパディングし）、上側及び下側にはパディングする必要がないとする場合、ステップ３０５において、図４に示すように、図２におけるＦＤ’’に対して、
【数１２】
2019102082.tif 000014
個のゼロスライスＫＰをパディングすることで、幅が４の前処理された畳み込みカーネルＫ’を生成することができる。
【００５３】
図４の例示において、一つのオリジナル畳み込みカーネルしか示されていないが、一つの畳み込み層の重みパラメータも複数個の畳み込みカーネルを有してもよく、このような場合、本開示の実施形態に係る方法により、該重みパラメータの畳み込みカーネルごとに処理を行うことができる。
【００５４】
折り畳まれた特徴データ及びオリジナル畳み込みカーネルに対して前処理を実行した後、例示方法３００はステップＳ３１０に進み、前処理されたオリジナル畳み込みカーネルを折り畳むことができる。
【００５５】
ステップＳ３１０において、前処理された畳み込みカーネルＫ’のＤ１における開始境界でkx×Sx個のゼロスライスをそれぞれパディングして、オリジナル畳み込みカーネルK又は前処理された畳み込みカーネルK’に対応する一又は複数の変換された畳み込みカーネルK’[kx]を生成する。ここで、SxはD１におけるオリジナル畳み込みカーネルKのＤ１におけるストライドであり、kxはゼロ以上の整数である。例えば、０個のゼロスライス、Sx個のゼロスライス、及び２×Sx個のゼロスライスのそれぞれによってオリジナル畳み込みカーネルKとの３つの変換された畳み込みカーネルK’を生成することができる。
【００５６】
変換された畳み込みカーネルの数を制御するように、kxの最大値を設定することができる。例えば、kx<Exにすることができ、Exを、SxとNxの最小公倍数をSxで除算して得られた結果値、又はNxをNxとSxの最大公約数で除算して得られた結果値と決定することができ、又はSx＝１又はSxとNxとが互い素である場合、ExをNxに等しいと決定することができる。これにより、K又はK’に対応するEx個の変換された畳み込みカーネルK’を生成することができる。
【００５７】
そして、各変換された畳み込みカーネルK’[kx]のそれぞれに対して、Ｄ１におけるNx個ごとの連続スライスを、深さの次元でつぎあわせるように、Ｄ１でK’[kx]のそれぞれに対して折り畳み、各変換された畳み込みカーネルK’[kx]のそれぞれに対して、対応する折り畳まれた畳み込みカーネルK’’[kx]を生成し、各K’’[kx]のＤ１における第ikx×Nx+jkx番目のスライスのすべてのCx個のチャネルのデータが、それぞれK’[kx]のＤ１における第ikx個のスライスの第jkx×Cx個チャネルから開始する連続のCx個チャネルのデータに対応するようにする。ここで、ikxは０以上の整数で、jkxは０以上Nx未満の整数である。
【００５８】
生成された変換された畳み込みカーネルK’[kx]は、Ｄ１において異なる次元値（例えば、Ｄ１が幅である場合の幅値）を有する可能性があり、又は一或いは複数の変換された畳み込みカーネルK’[kx]が存在する可能性があり、Ｄ１における次元値はNxの整数倍ではなく、対応するK’’[kx]のスライスが深さにおいて揃っていない（not aligned）。
【００５９】
このような場合は、Ex、Sx、Nx及び前処理された畳み込みカーネルＫ’のＤ１における次元値に基づいて、変換された畳み込みカーネルK’[kx]ごとのＤ１における期待次元値EVxを決定することができる。例えば、式
【数１３】
2019102082.tif 000015
に基づいて、変換された畳み込みカーネルK’[kx]ごとのＤ１における期待次元値EVxを決定することができる。
【００６０】
変換された畳み込みカーネルK’[kx]のＤ１における次元値がEVx未満の場合、変換された畳み込みカーネルK’[kx]のＤ１における終了境界でゼロスライスを附加することで調整したK’[kx]により、調整後の変換された畳み込みカーネルK’[kx]のＤ１における次元値がEVxに等しくなるようにすることができる。そして、Ｄ１において調整後の変換された畳み込みカーネルK’[kx]を折り畳み、対応の折り畳まれた畳み込みカーネルK’’[kx]を生成することができる。
【００６１】
ハードウェアの特性又は処理能力（例えば、マルチチャネルをサポートするオペレータまたはメモリ）を直接利用することもできる。例えば、ハードウェアがチャネル揃える（aligning the channels）機能を持つことができる場合、実際のデータによって占められていないチャネルは、ハードウェアによって自動的にゼロ値を有するとみなすことができる。このような場合、各折り畳まれた畳み込みカーネルにおけるスライスごとのチャネルは、ハードウェアによって自動的に揃える。例えば、ハードウェアが同時に３２チャネルをサポートしている場合、各折り畳まれた畳み込みカーネルのチャネル数は、ハードウェアによって自動的に３２チャネルに揃える（align）ことができる。
【００６２】
一実施形態において、畳み込み層が受信した折り畳まれた特徴データが、オリジナル折り畳まれていない特徴データＦＤのＤ１において折り畳んだ結果のみである場合、ステップＳ３１０において、得られた折り畳まれた畳み込みカーネルK’’[kx]を最終の折り畳まれた畳み込みカーネルとすることができる。
【００６３】
別の実施形態において、該畳み込み層が受信した折り畳まれた特徴データが、オリジナル折り畳まれていない特徴データＦＤのＤ１において、スプライシング数Nxに従って折り畳んでＦＤ’を得、続いてＦＤ’に対して、引き続きＦＤ’’においてスプライシング数Nyに従って折り畳んで得られた結果ＦＤ’’である場合、ステップＳ３１０において、Ｄ２においてスプライシング数Nyに従って、引き続き折り畳まれた畳み込みカーネルK’’[kx]ごとに折り畳むことができる。Ｄ２においてNyに従ってK’’[kx]を折り畳む手順は、Ｄ１においてNxに従って前処理された畳み込みカーネルK’の手順と同様である。
【００６４】
例えば、K’’[kx]のＤ２における開始境界にky×Sy個のゼロスライスをそれぞれパディングして、K’’[kx]対応する一又は複数の変換された畳み込みカーネルK’’[kx,ky]を生成することができる。ここで、Syはオリジナル畳み込みカーネルKのＤ２におけるストライドであり、kyは０以上の整数である。同様に、変換された畳み込みカーネルの数を制御するために、kyの最大値を設定することができる。
【００６５】
例えば、ky<Eyにすることができる。ここで、Eyを、SyとNyの最小公倍数をSyで除算して得られた結果値、又はNyを、NyとSyの最大公約数を除算して得られた結果値と決定することができ、又はSy=１又はSyとNyが互い素である場合、EyをNyに等しいと決定することができる。これにより、K’’[kx]に対応するEy個の変換された畳み込みカーネルK’’[kx,ky]、又はK或いはK’に対応するEx×Ey個の変換された畳み込みカーネルK’’[kx,ky]を生成することができる。
【００６６】
そして、変換された畳み込みカーネルK’’[kx,ky]のそれぞれに対して、Ｄ２におけるNy個ごとの連続スライスを、深さの次元でつぎあわせるように、Ｄ２でK’’[kx]のそれぞれに対して折り畳み、変換された畳み込みカーネルK’’[kx,ky]のそれぞれに対して、対応の折り畳まれた畳み込みカーネルK’’’[kx,ky]を生成し、各K’’’[kx,ky]のＤ２における第iky×Ny+jky番目のスライスのすべてのCy個のチャネルのデータが、K’’[kx,ky]のＤ２における第iky個のスライスの第jky×Cy個チャネルから開始する連続のCy個チャネルのデータにそれぞれ対応するようにする。ここで、ikyは０以上の整数で、jkyは０以上Ny未満の整数である。
【００６７】
同様に、Ey、Sy、Ny及びＫ’のＤ２における次元値Vyに基づいて、変換された畳み込みカーネルK’’[kx,ky]ごとのＤ２における期待次元値EVyを決定することができる。例えば、下式
【数１４】
2019102082.tif 000016
に基づいて、変換された畳み込みカーネルK’’[kx,ky]ごとのＤ２における期待次元値EVyを決定することができる。
【００６８】
変換された畳み込みカーネルK’’[kx,ky]のＤ２における次元値がEVy未満の場合、変換された畳み込みカーネルK’’[kx,ky]のＤ２における終了境界でゼロスライスを附加することにより調整したK’’[kx,ky]によって、調整後の変換された畳み込みカーネルK’’[kx,ky]のＤ２における次元値がEVyに等しくなるようにすることができる。そして、Ｄ２において調整後の変換された畳み込みカーネルK’’[kx,ky]を折り畳み、対応の折り畳まれた畳み込みカーネルK’’’[kx,ky]を生成するすることができる。
【００６９】
得られたEx×Ey個の折り畳まれた畳み込みカーネルK’’’[kx,ky]を最終の折り畳まれた畳み込みカーネルとすることができる。
【００７０】
図５に、図２におけるＦＤ’’に対して、図４に含まれている４つの幅スライスの畳み込みカーネルK’が幅において折り畳んだ例示を示す。図５に示すように、Nx=２かつSx=１のため、K’に対応する変換された畳み込みカーネルの数が２であると決定することができる。
【００７１】
K’の左側及び右側に０個及び２個のゼロスライスＫＡ（変換１）を、それぞれパディングして、調整後の変換された畳み込みカーネルＫ’[0]を得る。K’の左側及び右側に１個のゼロスライスＫＡ（変換２）を、それぞれパディングして、調整後の変換された畳み込みカーネルＫ’[1]を得る。ここで、調整後の変換された畳み込みカーネルＫ’[0]及びＫ’[1]の幅はいずれも６
【数１５】
2019102082.tif 000017
である。
【００７２】
Ｋ’[0]について、ＫＳ１をＫＰの後につなぎ合わせ、ＫＳ３をＫＳ２の後につなぎ合わせ、ＫＡをＫＡの後につなぎ合わせて、折り畳まれた畳み込みカーネルＫ’’[0]を生成することができる。Ｋ’[1]について、ＫＰはＫＡの後につなぎ合わせ、ＫＳ２はＫＳ１の後につなぎ合わせ、そしてＫＡはＫＳ３の後につなぎ合わせて、折り畳まれた畳み込みカーネルＫ’’[1]を生成することができる。Ｋ’’[0]及びＫ’’[1]ごとの幅、高さ、及び深さは、それぞれ３、３、及び６である。
【００７３】
続いて、Ｋ’’[0]及びＫ’’[1]ごとに高さにおいて折り畳むことができる。図６に示すように、Ｋ’’[0]に対して、Ny＝２、Sy＝１であるため、Ｋ’’[0]に対応する変換された畳み込みカーネルの数は２であると決定することができる。
【００７４】
Ｋ’’[0]の上側及び下側にそれぞれ０個及び１個のゼロスライスＫＡ’をパディングすることにより、調整後の変換された畳み込みカーネルＫ’’[0,0]を得ることができ、Ｋ’’[0]の上側に１個のゼロスライスＫＡ’をパディングすることにより、調整後の変換された畳み込みカーネルＫ’’[0,1]を得ることができる。同様に、Ｋ’’[1]に対して、変換された畳み込みカーネルＫ’’[1,0]及びＫ’’[1,1]を得ることができる。Ｋ’’[0,0]、Ｋ’’[0,1]、Ｋ’’[1,0]及びＫ’’[1,1]のそれぞれの高さは４
【数１６】
2019102082.tif 000018
である。
【００７５】
変換された畳み込みカーネルＫ’’[0,0]に対して、Ｋ’’[0,0]のＫＳ２’をＫＳ１’の後につなぎ合わせ、ＫＡ’をＫＳ３’の後につなぎ合わせることによって、対応の折り畳まれた畳み込みカーネルＫ’’’[0,0]を生成することができる。同様に、変換された畳み込みカーネルＫ’’[0,1]、Ｋ’’[1,0]及びＫ’’[1,1]のそれぞれに対して、対応の折り畳まれた畳み込みカーネルＫ’’’[0,1]、Ｋ’’’[1,0]及びＫ’’’[1,1]を生成することができる。折り畳まれた畳み込みカーネルＫ’’’[0,1]、Ｋ’’’[1,0]及びＫ’’’[1,1]のそれぞれの幅、高さ及び深さはそれぞれ３、２及び１２である。
【００７６】
例示方法３００は、ステップＳ３１５へ進み、ステップＳ３１０で得られた一又は複数の折り畳まれた畳み込みカーネルを用いて、ステップＳ３０５で得られた前処理された折り畳まれた特徴データに対して畳み込み演算を実行する。
【００７７】
該畳み込み層が受信した折り畳まれた特徴データが、オリジナル折り畳まれていない特徴データＦＤのＤ１において折り畳んで得られた結果ＦＤ’のみの場合、ステップＳ３１５において、ステップＳ３１０で得られたEx個の折り畳まれた畳み込みカーネルＫ’’[kx]を用いて、ステップＳ３０５で得られた前処理された折り畳まれた特徴データに対して畳み込み演算を実行することができる。
【００７８】
このような場合、オリジナル畳み込みカーネルＫのＤ１におけるストライドSxの値がNxに等しいとすると、折り畳まれた畳み込みカーネルＫ’’[kx]ごとのＤ１におけるストライドは１である。でなければ、折り畳まれた畳み込みカーネルＫ’’[kx]ごとのＤ１におけるストライドはSxである。また、折り畳まれた畳み込みカーネルＫ’’[kx]ごとの幅及び高さの別の次元Ｄ２におけるストライドは、オリジナル畳み込みカーネルＫのＤ２におけるストライドSyである。
【００７９】
該畳み込み層が受信した折り畳まれた特徴データは、オリジナル折り畳まれていない特徴データＦＤがＤ１において、スプライシング数Nxに従って折り畳んでＦＤ’を得、そして、ＦＤ’に対して、引き続きＦＤ’’においてスプライシング数Nyに従って得られた折り畳んたＦＤ’’である場合、ステップＳ３１５において、ステップＳ３１０で得られたEx×Ey個の折り畳まれた畳み込みカーネルK’’’[kx,ky]を用いて、ステップＳ３０５で得られた前処理された折り畳まれた特徴データに対して畳み込み演算を実行することができる。
【００８０】
このような場合、オリジナル畳み込みカーネルKのＤ１におけるストライドSxの値がNxに等しいとすると、折り畳まれた畳み込みカーネルK’’’[kx,ky]ごとのＤ１におけるストライドは１で、でなければ、折り畳まれた畳み込みカーネルK’’’[kx,ky]ごとのＤ１におけるストライドはSxである。また、オリジナル畳み込みカーネルKのＤ２におけるストライドSyの値がNyに等しいとすると、折り畳まれた畳み込みカーネルK’’’[kx,ky]ごとのＤ２におけるストライドは１で、でなければ、折り畳まれた畳み込みカーネルK’’’[kx,ky]ごとのＤ２におけるストライドはSyである。
【００８１】
一実施形態では、ステップＳ３１５において、すべての折り畳まれた畳み込みカーネルを使用して折り畳まれた特徴データの同一部分に対して畳み込みをした後、Ｄ１又はＤ２において、折り畳まれた畳み込みカーネルのＤ１におけるストライド又はＤ２におけるストライドに従い、すべての折り畳まれた畳み込みカーネルを移動させ、折り畳まれた特徴データの他の部分に対して畳み込みを実行する。折り畳まれた特徴データのすべての部分に対して畳み込みを実行した後、最終の出力特徴データを得ることができる。
【００８２】
図７にこのような畳み込みの方法の例示を示す。図７の例示では、図６における折り畳まれた畳み込みカーネルK’’’[0,0]、K’’’[0,1]、K’’’[1,0]、及びK’’’[1,1]を用いて、図４における折り畳まれた特徴データＦＤ’’’に対して畳み込み演算を実行する。
【００８３】
図７に示すように、まず、ＦＤ’’’の第１行と第２行において（１，１）、（１，２）、（１，３）、（２，１）、（２，２）及び（２，３）を含む部分に対して、４つの折り畳まれた畳み込みカーネルK’’’[0,0]、K’’’[0,1]、K’’’[1,0]、及びK’’’[1,1]をそれぞれ用いて畳み込みを実行することによって、出力特徴データＦＤＯにおける（１，１）、（２，１）、（１，２）及び（２，２）を含む部分のデータをそれぞれ得る。
【００８４】
幅において、ストライド（すなわち、オリジナル畳み込みカーネルＫの幅におけるストライド）１に従い、４つの折り畳まれた畳み込みカーネルK’’’[0,0]、K’’’[0,1]、K’’’[1,0]、及びK’’’[1,1]を移動させ、ＦＤ’’’の第１行と第２行において（１，２）、（１，３）、（１，４）、（２，２）、（２，３）及び（２，４）を含む部分に対して畳み込みを実行することによって、出力特徴データＦＤＯにおける（１，３）、（２，３）、（１，４）及び（２，４）を含む部分のデータをそれぞれ得る。
【００８５】
続いで、幅においてストライド（すなわち、オリジナル畳み込みカーネルＫの幅におけるストライド）１に従い、４つの折り畳まれた畳み込みカーネルK’’’[0,0]、K’’’[0,1]、K’’’[1,0]、及びK’’’[1,1]を移動させ、ＦＤ’’’の第１行と第２行において（１，３）、（１，４）、（１，５）、（２，３）、（２，４）及び（２，５）を含む部分に対して畳み込みを実行することによって、出力特徴データＦＤＯにおける（１，５）、（２，５）、（１，６）及び（２，６）を含む部分のデータをそれぞれ得る。
【００８６】
ＦＤ’’’の第１行と第２行に対する畳み込みを完了した後、高さにおいてストライド（すなわち、オリジナル畳み込みカーネルＫの高さにおけるストライド）１に従い、ＦＤ’’’の第２行と第３行に対して畳み込みを実行するために、４つの折り畳まれた畳み込みカーネルK’’’[0,0]、K’’’[0,1]、K’’’[1,0]、及びK’’’[1,1]を移動させる。ＦＤ’’’の第２行と第３行に対して畳み込みを実行する手順は、４つの折り畳まれた畳み込みカーネルK’’’[0,0]、K’’’[0,1]、K’’’[1,0]、及びK’’’[1,1]を用いて、ＦＤ’’’の第１行と第２行に対して畳み込みを実行する手順と同様であるため、ここで省略する。
【００８７】
４つの折り畳まれた畳み込みカーネルK’’’[0,0]、K’’’[0,1]、K’’’[1,0]、及びK’’’[1,1]を用いて、ＦＤ’’’に対して畳み込みの実行を完了した後、最終の出力特徴データＦＤＯを得る。出力特徴データＦＤＯについての最終行のデータ（４，１）、（４，２）、（４，３）、（４，４）、（４，５）及び（４，６）について、状況に応じて保留し又は捨てることができる。
【００８８】
例えば、図２に示すオリジナル折り畳まれていない特徴データＦＤに対して、図４に示すオリジナル畳み込みカーネルＫを使用して畳み込みを実行した後、３行の出力特徴データ（対応して、高さにおいてＦＤに対してパディングしない）を得ることを期待する場合、出力特徴データＦＤＯの最終行のデータ（４，１）、（４，２）、（４，３）、（４，４）、（４，５）及び（４，６）を捨てることができる。
【００８９】
畳み込み層の重みパラメータが複数の畳み込みカーネルを有する場合、図７の例示における出力特徴データＦＤＯは、最終の出力特徴データの一つのチャネル上のデータに対応してもよい。
【００９０】
他の実施形態では、折り畳まれた畳み込みカーネルごとに、折り畳まれた特徴データの全体に対してそれぞれ畳み込みを実行することもできる。このような場合、ハードウェア用の畳み込み指令を修正する必要はない。しかし、一つのオリジナル畳み込みカーネルが複数の折り畳まれた畳み込みカーネルに対応する場合、折り畳まれた畳み込みカーネルごとに使用して得られた部分結果は、異なるチャネルにわたって分散されることになる。出力特徴データを畳み込みニューラルネットワークの次の層に提供される前に、又は畳み込みニューラルネットワーク全体の最終出力として提供される前に、一つのチャネルにおける完全な出力結果を得るように、異なるチャネルに分散された部分結果を再度編成又は展開させることができる。
【００９１】
図８にこのような方法で畳み込みを実行した一例を示す。図７の例示とは異なり、図８の例示では、４つの折り畳まれた畳み込みカーネルK’’’[0,0]、K’’’[0,1]、K’’’[1,0]、及びK’’’[1,1]のそれぞれを用いて、ＦＤ’’’全体に対して畳み込みを実行する。図８に示すように、折り畳まれた畳み込みカーネルごとの使用は、出力特徴データＦＤＯの部分データしか得ることができない。
【００９２】
例えば、K’’’[0,0]を用いてＦＤ’’’に対して畳み込みを実行した後、（１，１）、（１，３）、（１，５）、（３，１）、（３，３）及び（３，５）を含む一部のデータしか得ることができない。完全な出力特徴データＦＤＯを得るように、それぞれの折り畳まれた畳み込みカーネルを使用して得られた部分データをまとめる（organized together）ことができる。同様に、畳み込み層の重みパラメータが複数の畳み込みカーネルを有する場合、図８の例示における出力特徴データＦＤＯは、最終の出力特徴データの一つのチャネルにおけるデータに対応することができる。
【００９３】
例示の方法３００は、折り畳まれた特徴データを、まず従来の折り畳まれていない特徴データに展開する必要がなく、畳み込み層に提供される折り畳まれた特徴データに対して、畳み込み演算を直接実行することができるようにすることで、チャネル利用率の向上、キャッシュの占有率の低減、演算効率の向上に有利である。
【００９４】
例えば、処理手段（例えば、畳み込み演算のための乗算器アレイ）が、一度に３２チャネルのデータを処理することができ、重みパラメータの畳み込みカーネルの幅及び高さがそれぞれ５及び５であると仮定すると、７２０×１２８０で、チャネル数が３であるＲＧＢ画像に対応するNx＝２の幅の折り畳まれた画像に対して、折り畳まれた画像を展開するのにもたらす余計な演算を考慮せずに、本開示に係る方法を用いて、幅の折り畳まれた画像に対して直接畳み込み演算を実行する場合の演算量は、展開された画像に対して従来の方法を用いて畳み込み演算を実行する場合の演算量の約６０％に過すぎず、有効演算の割合が展開された画像に対して従来の方法を用いて畳み込み演算を実行した場合の約２倍である。
【００９５】
７２０×１２８０で、及びチャネル数が３であるＲＧＢ画像に対応するNx＝２かつNy＝２の幅プラス高さの折り畳み画像に対して、折り畳まれた画像を展開するのにもたらす余計な演算を考慮せずに、本開示に係る方法を用いて、折り畳まれた画像に対して直接畳み込み演算を実行する場合の演算量は、展開された画像に対して従来の方法を用いて畳み込み演算を実行する場合の演算量の約３６％に過すぎず、有効演算の割合が展開された画像に対して従来の方法を用いて畳み込み演算を実行した場合の約４倍である。
【００９６】
図９及び図１０は、本開示の一実施形態による折り畳まれた特徴データに対して畳み込み演算を実行する例示的な装置のブロック図を示す。
【００９７】
図９に示すように、例示装置９００は、一又は複数のプロセッサ９１０を含むことができる。プロセッサ９１０は、例えば、汎用ＣＰＵ、ＧＰＵ、専用ニューラルネットワークプロセッサまたはアクセラレータなどのようなデータ処理能力及び／又は指令実行能力を有する任意の形態の処理手段であってもよい。例えば、プロセッサ９１０は、本願の実施形態による折り畳まれた特徴データに対して畳み込み演算を実行する方法を実行することができる。さらに、プロセッサ９１０は、所望の機能を実行するために装置９００うちの他の構成要素を制御することができる。
【００９８】
プロセッサ９１０は、バスシステムおよび／または他の形態の接続機構（図示せず）を介して、メモリ９２０およびＩ／Ｏインターフェイス９３０に接続することができる。
【００９９】
メモリ９２０は、例えば、揮発性メモリおよび／または不揮発性メモリなどの様々なコンピュータ読み書き可能な記憶媒体を含むことができる。揮発性メモリは、ランダムアクセスメモリ（ＲＡＭ）及び／又はキャッシュメモリ（キャッシュ）などを含むことができる。不揮発性メモリは、例えば、読み取り専用メモリ（ＲＯＭ）、ハードディスク、フラッシュメモリ等を含むことができる。
【０１００】
読み書き可能な記憶媒体は、例えば、電気、磁気、光、電磁気、赤外線、または半導体のシステム、装置、またはデバイス、またはそれらの任意の組み合わせを含むことができる。例えば、ニューラルネットワーク専用プロセッサに合わせて使用する場合、メモリ９２０は、専用プロセッサが搭載されるチップ上のＲＡＭであってもよい。メモリ９２０は、本開示に係る実施形態による折り畳まれた特徴データに対して畳み込み演算を実行する方法の実行を装置９００に指示するためのプログラム指令を含むことができる。
【０１０１】
Ｉ／Ｏインターフェイス９３０は、プロセッサ９１０にパラメータまたはデータを提供し、かつプロセッサ９１０によって処理された結果データの出力のために用いることができる。
【０１０２】
図１０に示すように、例示装置１０００は、プリプロセッサ１０１０、フォールディング手段１０２０及び演算手段１０３０を含むことができる。
プリプロセッサ１０１０は、畳み込み層に提供される折り畳まれた特徴データ及びオリジナル畳み込みカーネルに対して前処理を実行するように構成することができる。一実施形態では、プリプロセッサ１０１０は、図３に示す例示方法３００のステップＳ３０５を実行するように構成することができる。
【０１０３】
フォールディング手段１０２０は、オリジナル畳み込みカーネルに対応する一または複数の折り畳まれた畳み込みカーネルを生成するために、折り畳まれた特徴データの折り畳み方法に従って、幅及び高さの少なくとも一の次元で前処理されたオリジナル畳み込みカーネルを折り畳むように構成されてもよい。一実施形態では、第２のフォールディング手段１０２０は、例えば、図３に示す例示方法３００のステップＳ３１０を実行するように構成することができる。
【０１０４】
演算手段１０３０は、生成された一又は複数の折り畳まれた畳み込みカーネルを用いて、前処理された折り畳まれた特徴データに対して畳み込み演算を実行するように構成することができる。一実施形態では、演算手段１０３０は、図３に示す例示方法３００のステップＳ３１５を実行するように構成することができる。
【０１０５】
図９及び図１０に示された装置９００及び１０００は単なる例示であって限定的なものではない。必要に応じて、本開示に係る実施形態に係る装置は、その他の部品および／または構造を具備することができることは理解されるべきである。
【０１０６】
図１１は、本開示の実施形態に係る折り畳まれた特徴データに対して畳み込み演算を実行するための装置の一例を示す。図１１を参照すると、装置１１００は、メインプロセッサ１１１０、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）１１２０、及び畳み込みエンジン１１３０を含むことができる。それらはバスシステム１１０１によって相互接続されている。
【０１０７】
メインプロセッサ１１１０は、ＡＲＭプロセッサ、汎用中央処理装置（ＣＰＵ）、又は任意のほかのタイプのプロセッサ又は制御手段であってもよく、装置１１００における他の部品を制御し、例えば、後述するＤＲＡＭ１１２０及び畳み込みエンジン１１３０の動作を制御するためのプログラム指令を実行させることができる。
【０１０８】
ＤＲＡＭ１１２０は、例えば、ＤＤＲ ＲＡＭ、又は他の任意のタイプのＤＲＡＭとすることができ、磁気ハードディスクなどの不揮発性メモリから読み出されたデータを一時的に記憶することができる。例えば、畳み込みニューラルネットワークにおける畳み込み層のための上述の折り畳まれた特徴データ及びオリジナル畳み込みカーネル、又はメインプロセッサ１１１０などによって実行されるプログラム指令等は、ＤＲＡＭ１１２０に一時的に記憶されてもよい。
【０１０９】
畳み込みエンジン１１３０は、折り畳まれた特徴データ及びオリジナル畳み込みカーネルをＤＲＡＭ１１２０から読みだし、上述の方法のいずれかに従って折り畳まれた特徴データに対して直接畳み込み演算を実行することができる。畳み込みエンジン１１３０は、チップに形成されてもよく、その構成要素及び動作は以下に詳細に説明する。
【０１１０】
図１１を参照すると、畳み込みエンジン１１３０は入力バッファ１１３１を含み、入力バッファ１１３１はスタティックランダムアクセスメモリ（ＳＲＡＭ）であってもよい。ＤＲＡＭ１１２０から、折り畳まれた特徴データ及びオリジナル畳み込みカーネルを読み出し、ＳＲＡＭ１１３１に格納することができる。図１１に示す例示では、折り畳まれた特徴データとオリジナル畳み込みカーネルは、同一のＳＲＡＭ１１３１に格納することができる。
【０１１１】
ほかの実施形態では、それらは異なるＳＲＡＭに格納することができる。折り畳まれた特徴データ及びオリジナル畳み込みカーネルがＳＲＡＭ１１３１に格納される前に、またはそれと同時に、折り畳まれた特徴データ及びオリジナル畳み込みカーネルに対して、上述した図４を参照して述べた前処理を実行することができる。なお、前処理の詳細はここでは繰り返さない。
【０１１２】
一実施形態では、折り畳まれた特徴データに対する前処理及び折り畳まれた特徴データのＳＲＡＭ１１３１への格納は、同一のステップで実行してもよい。例えば、ＤＲＡＭ１１２０から読み出された折り畳まれた特徴データをＳＲＡＭ１１３１に格納するとき、ＳＲＡＭ１１３１に格納された折り畳まれた特徴データが前処理される（上述のように、ゼロでパディングする）ものになるように、追加されるゼロ値を折り畳まれた特徴データのデータストリームに挿入することができる。図１２Ａ及びＢは、特徴データが如何にＳＲＡＭ１１３１に存在するのかを示す例示であり、そのうち、図１２Ａは図１のオリジナル特徴データＦＤを示し、図１２Ｂは図１の折り畳まれた特徴データＦＤ’を示す。
【０１１３】
まず図１２Ａを参照すると、ＳＲＡＭ１１３１は、複数の列１１４０に配置された複数のメモリ手段１１４１を含んでもよく、各列１１４０は「スライス」とも呼ばれる。各メモリ手段１１４１は、それぞれ複数のビットを格納するための複数のメモリユニット（図示せず）を含んでもよい。
【０１１４】
例えば、各メモリ手段１１４１は、８ビット、１６ビット又はそれ以上のビットを格納することができる。各メモリ手段１１４１に格納されているビット数はデータ幅とも称する。メモリ手段１１４１ごとにアドレスを有し、ＳＲＡＭスライス１１４０は列方向に連続的にアドレス指定（addressing）される。メモリ手段１１４１ごとの複数のメモリ手段は同期で読み書きをすることができ、複数のＳＲＡＭスライス１１４０は同期して読み書きすることができるため、ＳＲＡＭ１１３１のデータ幅はＢ×Ｎに等しく、ＢはＳＲＡＭチップ（又はメモリ手段１１４１）のデータ幅であり、ＮはＳＲＡＭ１１３１に含まれるスライス１１４０の数である。
【０１１５】
メモリ手段１１４１ごとのデータ幅を６４とすると、８個のデータを格納することができる。オリジナル特徴データＦＤは折り畳まれていないため、各メモリ手段１１４１には１画素（３チャネル、３データ）しか格納されておらず、メモリ手段１１４１における残りの４０（６４−３×８）ビットは、図１２Ａに示すように、５つのゼロ値がパディングされてもよい。
【０１１６】
折り畳まれる特徴データＦＤ’については、図１２Ｂに示すように、メモリ手段１１４１ごとに２つの画素を格納することができ、各画素の末尾には一つのゼロ値のみパディングする。ほかの実施形態では、代わりに、第２番目の画素の末尾にだけ２つのゼロ値をパディングすることができる。メモリ手段１１４１がより大きいデータ幅を有する場合、メモリ手段１１４１ごとに２画素又はより多くの画素を格納することができることは理解される。メモリ手段１１４１ごとに２画素又はより多くの画素を格納することにより、一つのメモリ手段１１４１において１画素しか格納しない場合に比較して、一サイクルで、後述の計算手段１１３３に、畳み込み演算の実行のためのより多くのデータを提供することができる。それにより、装置１１００の計算効率を高めることができる。
【０１１７】
さらに、前処理されたオリジナル畳み込みカーネルがＳＲＡＭ１１３１に格納される前に又は同時に折り畳みを行ってもよい。上記の図５〜図６を参照して述べたように、オリジナル畳み込みカーネルに対応する一又は複数の折り畳まれた畳み込みカーネルを生成するように、折り畳まれた特徴データの折り畳み方法に従って、幅及び高さの少なくとも一つの次元で、前処理されたオリジナル畳み込みカーネルに対して折り畳んでもよい。ここで折り畳み処理の詳細は繰り返さない。
【０１１８】
一又は複数の折り畳まれた畳み込みカーネルは、ＳＲＡＭ１１３１に格納されてもよい。同様に、オリジナル畳み込みカーネルに対する前処理、折り畳み、及び格納ステップは同一のステップで実行することができる。例えば、ＤＲＡＭ１１２０から読み出されたオリジナル畳み込みカーネルのデータは、所定のフォーマットに従ってＳＲＡＭ１１３１に書き込むことができ、オリジナル畳み込みカーネルのデータストリームに追加のゼロ値を挿入することができ、それによって、ＳＲＡＭ１１３１に格納された畳み込みカーネルが上述のように前処理されかつ折り畳まれたものにする。
【０１１９】
一又は複数の折り畳まれた畳み込みカーネルのＳＲＡＭ１１３１への格納は、異なるＳＲＡＭスライス１１４０に格納される場合を除いて、上述の図１２Ａおよび１２Ｂを参照して述べた折り畳まれた特徴データの格納と同様であってもよい。ここで、折り畳まれた畳み込みカーネルのＳＲＡＭ１１３１への格納の詳細は省略する。ＳＲＡＭ１１３１はＤＲＡＭ１１２０よりも容量が小さいため、毎回一部の特徴データ及び一部の畳み込みカーネルだけ読み出すようにしてもよいことは理解されるべきである。
【０１２０】
図１１を参照すると、折り畳まれた特徴データ及び一又は複数の折り畳まれた畳み込みカーネルを、ＳＲＡＭ１１３１から計算手段１１３３に読み出し、一又は複数の折り畳まれた畳み込みカーネルを用いて折り畳まれた特徴データに対して直接畳み込み演算を実行することができる。計算手段１１３３は、畳み込み演算を実行するために、複数の乗算器及び複数の加算器を含んでもよい。
【０１２１】
一の例示では、計算手段１１３３は、折り畳まれた特徴データにおける複数の画素のそれぞれを、複数の折り畳まれた畳み込みカーネルの対応する画素との積を同時に計算することができる。該演算を繰り返すことにより、すべての折り畳まれた畳み込みカーネルを用いて、折り畳まれた特徴データの同一の部分に対して畳み込みをすることができる。
【０１２２】
例えば、計算手段１１３３は２５６個の乗算器を含むと仮定すると、折り畳まれた特徴データの８個の画素（画素ごとに４つのチャネルを有し、合計３２個のデータがある）のそれぞれと８個の畳み込みカーネルの対応する画素（同様に４つのチャネルを有する）との積を同時に計算でき、６４個のデータ（８画素×８画素）を生成することができる。特徴データが折り畳まれていない従来の場合と比較して、計算効率が大幅に改善された。
【０１２３】
計算手段１１３３の計算結果は、出力バッファ（ＳＲＡＭ）１１３５に格納することができる。入力バッファ１１３１及び出力バッファ１１３５には、それぞれバッファ付きクロスバー・スイッチ１１３２及び１１３４を設けることができ、計算手段１１３３に提供されるデータ及び計算手段１１３３から受信したデータを制御するようにする。必要に応じて、計算結果を出力バッファ１１３５からＤＲＡＭ１１２０に移動させてもよい。
【０１２４】
前後文から明確に別途の要求がある場合を除き、明細書及び特許請求の範囲の全体にわたって、用語「comprise」（有する）、「include」（含む）などは、排他性又は限界性（exhaustive）の意味と逆である包括的な意味として解釈すべきであり、つまり、「を含むが、これに限定されない」の意味として解釈すべきである。また、用語「本明細書」、「以上の記載」、「以下の記載」及び似たような意味の用語が本開示において使用される場合、本開示のある具体的な部分を指すものではなく、本開示の全体を指すとすべきである。
【０１２５】
前後文が許される場合、単数形または複数形を使用する以上の記載における用語も、それぞれ複数又は単数を含むことができる。二つ又は複数の項目のリストを言及する場合の用語「又は」について、該用語は該用語の以下の解釈における全部をカバーする。すなわち、リストにおける任意の項目、リストにおけるすべての項目、及びリストにおける項目の任意の組み合わせの全部をカバーする。
【０１２６】
本開示に係る実施形態の上述の詳細な説明は、制限的又は本発明を以上の記載によって開示された範囲内に限定することを意図するものではない。説明のために、本開示に係る具体的な実施形態及び例示を述べたが、当該分野における技術者が認識しているように、本発明の技術的範囲内である限り、各種の均等の範囲における変更は可能である。
【０１２７】
例えば、処理またはブロックは所定の順序で示されているが、代替の実施形態は、異なる順序でこれらのステップの処理を実行してもよく、又は異なる順序でこれらのブロックを有するシステムを採用してもよく、一部の処理又はブロックは、削除され、移動され、追加され、細分され、組み合わせられ及び／又は修正されてもよい。これらの一部の処理又はブロックは直列的な実行で示されるが、代わりにこれらの一部の処理又はブロックは並列的に実行されてもよく、又は異なる時間に実行されてもよい。
【０１２８】
本明細書で提供される本発明の教示は、必ずしも上述のシステムである必要はなく、他のシステムにも適用することができる。上述のそれぞれの実施形態に係る部品及び動作を組み合わせることで、別の実施形態を提供することができる。
【０１２９】
本開示に係るいくつかの実施形態について説明したが、これらの実施形態は、例示として示すものであり、本開示の範囲を限定することを意図していない。実際、本明細書に記載された新規の方法及びシステムは、様々なその他の形態で実施することができる。また、本願の範囲から逸脱しなければ、本明細書に記載された方法及びシステムの形式上の種々の省略、置換及び変更をすることが可能である。
【符号の説明】
【０１３０】
３００  例示方法
９００  例示装置
９１０  プロセッサ
９２０  メモリ
９３０  Ｉ／Ｏインターフェイス
１０００  例示装置
１０１０  プリプロセッサ
１０２０  フォールディング手段
１０３０  演算手段
１１００  メインプロセッサ
１１２０  ＤＲＡＭ
１１３０  畳み込みエンジン
１１３１  入力バッファ（ＳＲＡＭ）
１１３２、１１３４  バッファ付きクロスバー・スイッチ
１１３３  計算手段
１１３５  出力バッファ（ＳＲＡＭ）
【図１】
2019102082.tif 000021
【図２】
2019102082.tif 000022
【図３】
2019102082.tif 000023
【図４】
2019102082.tif 000024
【図５】
2019102082.tif 000025
【図６】
2019102082.tif 000026
【図７】
2019102082.tif 000027
【図８】
2019102082.tif 000028
【図９】
2019102082.tif 000029
【図１０】
2019102082.tif 000030
【図１１】
2019102082.tif 000031
【図１２Ａ】
2019102082.tif 000032
【図１２Ｂ】
2019102082.tif 000033
【外国語明細書】
2019102082000001.pdf