(57)【要約】      （修正有）【課題】ニューラルネットワークを用いた計算機システムの計算量を削減する。【解決手段】演算デバイス１１０は、画像データの５×５のサイズのデータｄ１に対して行列Ｍａｔ１を用いた処理を実行し、データｄ２を生成する回路１１１と、３×３のサイズのデータｆ１に対して行列Ｍａｔ２を用いた処理を実行し、データｄ２を生成する回路１１２と、データｄ２とデータｆ２との積和演算処理を実行する回路１１３と、積和演算処理の結果Ｃ１に対して第３の行列Ｍａｔ３を用いた処理を実行し、データｄ１とデータｄ１との積和演算処理の結果に対応する値を得る処理回路１１４と、を含む。【選択図】図３
2019200675.tif 000002
【特許請求の範囲】
【請求項１】
入力データ内の５×５のサイズの第１のデータに対して第１の行列を用いた第１の処理を実行し、第２のデータを生成する第１の回路と、
３×３のサイズの第３のデータに対して第２の行列を用いた第２の処理を実行し、第４のデータを生成する第２の回路と、
前記第２のデータと前記第４のデータとの積和演算処理を実行する第３の回路と、
前記第２のデータと前記第４のデータとの前記積和演算処理の結果に対して第３の行列を用いた第３の処理を実行し、前記第１のデータと前記第３のデータとの積和演算処理の結果に対応する第１の値を得る第４の回路と、
を具備し、
前記第１の行列は、以下の式（Ｐ１）に示され、
【数１】
2019200675.tif 000013
前記第２の行列は、以下の式（Ｐ２）に示される、
【数２】
2019200675.tif 000014
演算デバイス。
【請求項２】
前記第３の行列は、以下の式（Ｐ３）に示される、
【数３】
2019200675.tif 000015
請求項１に記載の演算デバイス。
【請求項３】
前記第１の値は、前記第１のデータに対する前記第３のデータのストライド値が２に設定された条件における前記第１のデータと前記第３のデータとの前記積和演算処理の結果に対応する、
請求項１又は２に記載の演算デバイス。
【請求項４】
前記第１の値に基づいて、前記入力データに関する推論、学習及び分類のうち少なくとも１つを実行する、
請求項１乃至３のうちいずれか１項に記載の演算デバイス。
【請求項５】
前記第１のデータが“ｄ”、前記第１の行列が“ＢＴ”、前記第１の行列に対して転置の関係を有する行列がＢで示される場合、前記第１の処理の結果は、“ＢＴｄＢ”で示される、
請求項１乃至４のうちいずれか１項に記載の演算デバイス。
【請求項６】
前記第３のデータが“ｆ”、前記第２の行列が“Ｇ”、前記第２の行列に対して転置の関係を有する行列が“ＧＴ”で示される場合、前記第２の処理の結果は“ＧｆＧＴ”で示される、
請求項１乃至５のうちいずれか１項に記載の演算デバイス。
【請求項７】
前記第２のデータと前記第４のデータとの前記積和演算処理の結果が“Ｚ”、前記第３の行列が“ＡＴ”、前記第３の行列に対して転置の関係を有する行列が“Ａ”で示される場合、前記第１の値は、“ＡＴＺＡ”で示される、
請求項１乃至６のうちいずれか１項に記載の演算デバイス。
【請求項８】
前記第２のデータ及び前記第４のデータは、５×５のサイズを有する、
請求項１乃至７のうちいずれか１項に記載の演算デバイス。
【請求項９】
前記第１の値は、２×２のサイズのデータである、
請求項１乃至８のうちいずれか１項に記載の演算デバイス。
【請求項１０】
前記第１の回路は、前記第１の行列内の複数の列又は複数の行を入れ替えて、前記第１の処理を実行し、
前記第２の回路は、前記第２の行列内の複数の列又は複数の行を入れ替えて、前記第２の処理を実行する、
請求項１乃至９のうちいずれか１項に記載の演算デバイス。
【請求項１１】
以下の式（Ｑ１）に示される第１の行列を用いた第１の処理が、入力データから抽出された５×５のサイズの第１のデータに対して、プロセッサによって実行され、第２のデータが生成されることと、
【数４】
2019200675.tif 000016
以下の式（Ｑ２）に示される第２の行列を用いた第２の処理が、３×３のサイズの第３のデータに対して、前記プロセッサによって実行され、第４のデータが生成されることと、
【数５】
2019200675.tif 000017
前記第２のデータと前記第４のデータとの積和演算処理が、前記プロセッサによって実行されることと、
第３の行列を用いた第３の処理が、前記第２のデータと前記第４のデータとの前記積和演算処理の結果に対して、前記プロセッサによって実行され、前記第１のデータと前記第３のデータとの積和演算処理の結果に対応する第１の値が得られることと、
を具備するデータの処理方法。
【請求項１２】
前記第３の行列は、以下の式（Ｑ３）に示される、
【数６】
2019200675.tif 000018
請求項１１に記載のデータの処理方法。
【請求項１３】
前記第１の値は、前記第１のデータに対する前記第３のデータのストライド値が２に設定された場合における前記第１のデータと前記第３のデータとの前記積和演算処理の結果に対応する、
請求項１１又は１２に記載のデータの処理方法。
【請求項１４】
前記第１の値に基づいて、前記入力データに関する推論、学習及び分類のうち少なくとも１つを実行することと、
請求項１１乃至１３のうちいずれか１項に記載のデータの処理方法。
【請求項１５】
前記第１のデータが“ｄ”、前記第１の行列が“ＢＴ”、前記第１の行列に対して転置の関係を有する行列がＢで示される場合、前記第１の処理の結果は、“ＢＴｄＢ”で示される、
請求項１１乃至１４のうちいずれか１項に記載のデータの処理方法。
【請求項１６】
前記第３のデータが“ｆ”、前記第２の行列が“Ｇ”、前記第２の行列に対して転置の関係を有する行列が“ＧＴ”で示される場合、前記第２の処理の結果は“ＧｆＧＴ”で示される、
請求項１１乃至１５のうちいずれか１項に記載のデータの処理方法。
【請求項１７】
前記第２のデータと前記第４のデータとの前記積和演算処理の結果が“Ｚ”、前記第３の行列が“ＡＴ”、前記第３の行列に対して転置の関係を有する行列が“Ａ”で示される場合、前記第１の値は、“ＡＴＺＡ”で示される、
請求項１１乃至１６のうちいずれか１項に記載のデータの処理方法。
【請求項１８】
前記第２のデータ及び前記第４のデータは、５×５のサイズを有する、
請求項１１乃至１７のうちいずれか１項に記載のデータの処理方法。
【請求項１９】
前記第１の値は、２×２のサイズのデータである、
請求項１１乃至１８のうちいずれか１項に記載のデータの処理方法。
【請求項２０】
前記第１の行列内の複数の列又は複数の行を入れ替えて、前記第１の処理が実行され、
前記第２の行列内の複数の列又は複数の行を入れ替えて、前記第２の処理が実行される、
請求項１１乃至１９のうちいずれか１項に記載のデータの処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、演算デバイス及びデータの処理方法に関する。
【背景技術】
【０００２】
ニューラルネットワークを用いた計算機システムは、供給されたデータに関する推論及び学習のために、供給されたデータに対して様々な計算処理を実行する。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Lavin, A., and Gray, S., “Fast Algorithms for Convolution Neural Networks.”, ArXiv E-Prints, September, 2015
【発明の概要】
【発明が解決しようとする課題】
【０００４】
計算処理の計算量を、低減する。
【課題を解決するための手段】
【０００５】
実施形態の演算デバイスは入力データ内の５×５のサイズの第１のデータに対して第１の行列を用いた第１の処理を実行し、第２のデータを生成する第１の回路と、３×３のサイズの第３のデータに対して第２の行列を用いた第２の処理を実行し、第４のデータを生成する第２の回路と、前記第２のデータと前記第４のデータとの積和演算処理を実行する第３の回路と、前記第２のデータと前記第４のデータとの前記積和演算処理の結果に対して第３の行列を用いた第３の処理を実行し、前記第１のデータと前記第３のデータとの積和演算処理の結果に対応する第１の値を得る第４の回路と、を含む。  
前記第１の行列は、以下の式（Ｐ１）に示される。  
【０００６】
【数１】
2019200675.tif 000003
前記第２の行列は、以下の式（Ｐ２）に示される。  
【０００７】
【数２】
2019200675.tif 000004
【図面の簡単な説明】
【０００８】
【図１】実施形態の演算デバイスを含むシステムの一例を説明するための図。
【図２】実施形態の演算デバイスを説明するための図。
【図３】実施形態の演算デバイスを説明するための図。
【図４】実施形態の演算デバイスの計算処理のコンセプトを説明するための図。
【図５】実施形態の演算デバイスの計算処理のコンセプトを説明するための図。
【図６】実施形態の演算デバイスの計算処理のコンセプトを説明するための図。
【図７】実施形態の演算デバイスの動作例を説明するための図。
【図８】実施形態の演算デバイスの動作例を説明するための図。
【図９】実施形態の演算デバイスの動作例を説明するためのフローチャート。
【発明を実施するための形態】
【０００９】
以下において、図面を参照しながら、実施形態の演算デバイス、データの処理方法、及びシステムについて、説明する。  
以下の説明において、同一の機能及び構成を有する要素については、同一符号を付す。また、以下の実施形態において、区別化のために数字／英字がその末尾に付された参照符号を有する構成要素が相互に区別されない場合、末尾の数字／英字が参照符号から省略された表記が用いられる。
【００１０】
［実施形態］  
図１乃至図９を参照して、本実施形態の演算デバイス、データの処理方法、及びシステムについて、説明する。
【００１１】
（１）  構成  
図１乃至図３を参照して、本実施形態の演算デバイスの構成について、説明する。
【００１２】
図１は、本実施形態の演算デバイスを含むシステム説明するためのブロック図である。
【００１３】
以下のように、本実施形態の演算デバイス（演算回路、計算デバイス、又は、プロセッサともよばれる）１１０は、計算機システム１内に設けられる。例えば、計算機システム１は、画像認識システムである。
【００１４】
図１に示されるように、計算機システム１は、ケーブル及び／又は無線通信を介して、イメージセンサ９０に電気的に結合される。計算機システム１は、イメージセンサ９０によって撮影（取得）されたある被写体（物体）ＯＢＪの画像データを、受信する。計算機システム１は、画像データＩＭＧに対して各種の処理を実行する。画像データＩＭＧは、静止画データでもよいし、動画データでもよい。
【００１５】
例えば、計算機システム１は、画像データＩＭＧに対する処理の結果を、表示デバイス８０に表示できる。表示デバイス８０は、液晶ディスプレイ、又は、有機ＥＬディスプレイなどである。表示デバイス８０は、ケーブル及び／又は無線通信を介して、計算機システム１に電気的に接続される。
【００１６】
尚、イメージセンサ９０及び表示デバイス８０のうち少なくとも一方が、計算機システム１の構成要素としてみなされてもよい。
【００１７】
計算機システム１は、プロセッサ１０，２０、及び、メモリ７０を少なくとも含む。
【００１８】
本実施形態において、プロセッサ１０は、例えば、ＧＰＵ（Graphic processing unit）である。ＧＰＵ１０は、イメージセンサ９０及び／又はメモリ７０からの画像データＩＭＧに対する各種の画像処理を実行する。本実施形態において、ＧＰＵ１０は、後述のニューラルネットワーク１００を有する。
【００１９】
プロセッサ２０は、例えば、ＣＰＵ（Central processing unit）である。ＣＰＵ２０は、計算機システム１の全体の動作を、制御できる。ＣＰＵ２０は、ＧＰＵ１０及びメモリ７０の制御のための各種の計算処理を実行できる。
【００２０】
メモリ７０は、イメージセンサ９０からの画像データＩＭＧ、ＧＰＵ１０によって生成されたデータ、及び、ＣＰＵ２０によって生成されたデータを、記憶できる。尚、ＧＰＵ１０及びＣＰＵ２０によって生成されるデータは、各種の計算の中間結果及び最終結果、画像処理の中間結果及び最終結果を含み得る。例えば、メモリ７０は、ＤＲＡＭ、ＳＲＡＭ、ＭＲＡＭ、ＮＡＮＤ型フラッシュメモリ、抵抗変化型メモリ（例えば、ＲｅＲＡＭ、ＰＣＭ（Phase change memory））などの中から選択される少なくとも１以上を含む。ＧＰＵ１０専用のメモリ（図示せず）が、ＧＰＵ１０に直接接続されてもよい。
【００２１】
画像データＩＭＧは、記憶媒体９９から提供されてもよい。記憶媒体９９は、ケーブル及び／又は無線通信によって、計算機システム１に電気的に結合される。記憶媒体９９は、メモリカード、ＵＳＢメモリ、ＳＳＤ、ＨＤＤ、及び、光記憶媒体などのいずれでもよい。
【００２２】
図２は、本実施形態における、ＧＰＵ内のニューラルネットワークの構成例を説明するための模式図である。
【００２３】
ＧＰＵ１０において、図２のニューラルネットワーク１００は、機械学習デバイスとして用いられる。例えば、ニューラルネットワーク１００は、畳み込みニューラルネットワーク（ＣＮＮ）である。
【００２４】
ニューラルネットワーク１００は、入力層１０１、隠れ層（中間層ともよばれる）１０２、及び出力層（全結合層ともよばれる）１０３を有する。
【００２５】
入力層１０１は、画像データＩＭＧ（又はその一部分）を受信する。  
入力層１０１は、複数の演算デバイス（ニューロン又はニューロン回路ともよばれる）１１８を有する。入力層１０１において、各演算デバイス１１８は、画像データＩＭＧから所定のサイズの２次元配列データを抽出（サンプル）できる。各演算デバイス１１８は、抽出したデータを、隠れ層１０２に送信する。送信されるデータは、入力層１０１によって抽出されたままのデータでもよいし、入力層１０１によって任意の処理（例えば、２値化処理）が施されたデータでもよい。
【００２６】
尚、複数の演算デバイス１１８の各々は、画像データＩＭＧ内の異なる座標（領域）のデータを抽出（及び受信）してもよい。複数の演算デバイス１１８のうち２以上のデバイスが、画像データＩＭＧの同じ座標のデータを抽出してもよい。入力層１０１は、隠れ層１０２に対して２次元データを出力するためのバッファ及びインターフェイスとしても機能する。
【００２７】
隠れ層１０２（１０２Ａ，１０２Ｂ）は、入力層１０１からのデータに対して、各種の計算処理を実行する。  
隠れ層１０２は、複数の演算デバイス１１０（１１０Ａ，１１０Ｂ）を有する。隠れ層１０２において、各演算デバイス１１０は、供給されたデータ（以下では、区別化のため、入力データともよばれる）に対して、所定のパラメータ（例えば、重み係数）を用いた畳み込み処理（積和演算処理）を実行する。例えば、各演算デバイス１１０は、供給されたデータに対して、互いに異なるパラメータを用いて積和演算処理を実行する。
【００２８】
隠れ層１０２は、階層化されてもよい。この場合において、隠れ層１０２は、複数の（図２の例では、２つ）の層１０２Ａ，１０２Ｂを含む。
【００２９】
第１の隠れ層１０２Ａの各演算デバイス１１０Ａは、入力層１０１からのデータに対して、計算処理を実行する。各演算デバイス１１０Ａは、計算結果を、第２の隠れ層の各演算デバイス１１０Ｂに送信する。第２の隠れ層１０２Ｂの各演算デバイス１１０Ｂは、各演算デバイス１１０Ａの計算結果を入力データとして、所定の計算処理を実行する。各演算デバイス１１０Ｂは、計算結果を、出力層１０３に送信する。
【００３０】
このように、隠れ層１０２が階層構造を有する場合、ニューラルネットワーク１００による推論（inference）、学習（learning/training）、及び分類の能力が、向上され得る。尚、隠れ層１０２の層の数は、３層以上でもよいし、１層でもよい。１つの隠れ層は、畳み込み層とプーリング層とを含むように構成されてもよい。
【００３１】
出力層１０３は、隠れ層１０２の各演算デバイス１１０によって実行された各種の計算処理の結果を受信し、各種の処理を実行する。  
出力層１０３は、複数の演算デバイス１１９を有する。各演算デバイス１１９は、複数の演算デバイス１１０Ｂからの計算結果に対して、所定の処理を実行する。これによって、隠れ層１０２による計算結果に基づいて、ニューラルネットワーク１００に供給されたデータに関する推論、学習、及び分類を、実行できる。各演算デバイス１１９は、得られた処理結果（分類結果）を保持及び出力できる。出力層１０３は、隠れ層１０２の計算結果をニューラルネットワーク１００の外部へ出力するためのバッファ及びインターフェイスとしても機能する。
【００３２】
尚、ニューラルネットワーク１００は、ＧＰＵ１０の外部に設けられてもよい。
【００３３】
本実施形態の計算機システム１において、畳み込みニューラルネットワーク１００によって、画像認識／推定のための各種の計算処理、及び、画像認識／推定の機械学習（例えば、ディープラーニング）のための各種の計算処理が、実行される。
【００３４】
例えば、画像認識システム１において、画像データＩＭＧに対する畳み込みニューラルネットワーク１００による各種の計算処理に基づいて、画像データＩＭＧ内の複数の領域（１以上のピクセル）の各々の特徴量が、計算される。畳み込みニューラルネットワーク１００の計算結果に基づいて、被写体ＯＢＪが何であるかを画像認識システム１によって高い精度で推論（認識）及び分類されたり、画像データＩＭＧ内の被写体（例えば、自動車、道路、人、動物、顔及び建物など）が画像認識システム１によって高い精度で認識／分類されるように学習されたりすることが可能となる。
【００３５】
本実施形態において、以下のように、畳み込みニューラルネットワーク１００内の演算デバイス１１０（１１０Ａ，１１０Ｂ）は、１以上の処理回路を含む。
【００３６】
図３は、本実施形態の演算デバイスの基本構成を説明するための模式図である。
【００３７】
図３に示されるように、本実施形態の演算デバイス１１０は、第１、第２、第３及び第４の処理回路１１１，１１２，１１３，１１４を含む。
【００３８】
第１の処理回路（以下では、第１の前処理回路とよばれる）１１１は、供給されたデータｄ１に対して第１の行列（第１の変換行列）Ｍａｔ１を用いた計算処理（以下では、第１の前処理とよばれる）を実行する。これによって、データｄ２が、生成される。
【００３９】
上述のように、データｄ１は、画像データＩＭＧから抽出されたデータである。データ２は、第１のデータｄ１にする計算処理によって、データｄ１内の各値が変換されたデータである。
【００４０】
第２の処理回路（以下では、第２の前処理回路とよばれる）１１２は、供給されたフィルタｆ１に対して第２の行列（第２の変換行列）Ｍａｔ２を用いた計算処理（以下では、第２の前処理とよばれる）を実行する。これによって、フィルタｆ２が生成される。
【００４１】
フィルタｆ１は、例えば、ＧＰＵ１０のメモリ領域、ＣＰＵ２０のメモリ領域又はメモリ７０などから提供される。フィルタｆ１は、空間フィルタ（２次元配列デジタルデータ）である。フィルタｆ１は、画像データに対して実行すべき各種の処理に応じた係数を有する。フィルタｆ２は、前処理によってフィルタｆ１の係数、行数、及び列数などが変換されたフィルタである。フィルタｆ２は、空間フィルタ（２次元配列デジタルデータ）である。
【００４２】
第３の処理回路（以下では、積和演算回路とよばれる）１１３は、前処理されたデータｄ２と前処理されたフィルタｆ２との積和演算処理を実行する。積和演算回路１１３は、積和演算処理の結果Ｃ１を、得る。
【００４３】
第４の処理回路（以下では、後処理回路とよばれる）１１４は、積和演算の結果Ｃ１に対して、第３の行列（第３の変換行列）Ｍａｔ３を用いた変換処理（以下では、後処理とよばれる）を実行する。これによって、データｄ１とフィルタｆ１との積和演算処理（畳み込み処理）の結果に等価な計算値が、生成される。
【００４４】
得られた計算値（データｄ１とフィルタｆ１との積和演算処理の計算結果）が、後処理回路１１４から後段の回路（例えば、他の演算デバイス１１０）へ、送信される。
【００４５】
例えば、行列Ｍａｔ１，Ｍａｔ２は、ＧＰＵ１０内のメモリ領域、ＣＰＵ２０内のメモリ領域、又は、メモリ７０から提供される。行列Ｍａｔ１，Ｍａｔ２は、計算機システム１に接続された他のデバイス（図示せず）から提供されてもよい。
【００４６】
尚、ニューラルネットワーク１００の構成に応じて、隠れ層１０２内の演算デバイス１１０Ｂの内部構成は、演算デバイス１１０Ａの内部構成と同じでもよいし、異なってもよい。例えば、演算デバイス１１０Ｂは、入力データｄ１とフィルタｆ１との積和演算を直接実行するように構成されてもよい。演算デバイス１１０Ｂは、演算デバイス１１０Ａによる前処理及び後処理とは異なる処理（計算処理及び変換処理）によって、データｄ１とフィルタｆ１との積和演算処理と実質的に等価な計算処理を実行してもよい。また、隠れ層１０２Ａ内において、複数の演算デバイス１１０Ａの内部構成が、全て同じでなくともよい。隠れ層１０２Ｂ内において、複数の演算デバイス１１０Ｂの内部構成が、全て同じでなくともよい。
【００４７】
（２）  基本コンセプト  
図４乃至図６を参照して、本実施形態の演算デバイス（及び画像データの処理方法）の基本コンセプトについて、説明する。
【００４８】
図４は、本実施形態の演算デバイスに供給されるデータについて説明するための模式図である。
【００４９】
図４に示されるように、１つの画像データＩＭＧは、イメージセンサ９０の複数の画素から取得された信号（画素値）ＰＸから形成される２次元データである。複数の画素は、イメージセンサ９０の画素アレイのＸ方向及びＹ方向において、画素アレイ内に配列されている。画像データＩＭＧ内の各画素値ＰＸは、対応する座標の画素が検出した光に応じた値を有する。画素値ＰＸは、１ビット以上の値で示される。尚、画像データＩＭＧは、画素アレイの有効画素領域の信号のみから形成されるデータに限定されず、画素アレイ内の有効画素領域の信号と無効画素領域の信号とから形成されるデータでもよい。
【００５０】
画像データＩＭＧは、複数のデータ（データ領域）ｄ１に分割されて、演算デバイス１１０に供給される。入力データ（サンプルデータ、又は、局所パッチデータともよばれる）ｄ１は、ｍ×ｍ個の画素に対応するｍ×ｍの画素値ＰＸが２次元に配列されたデータである。ｍ×ｍのデータサイズの単位で、データｄ１が、入力層１０１から演算デバイス１１０に供給される。尚、各データｄ１は、複数のデータｄ１間において互いに異なる画素数の画素値から形成されてもよいし、複数のデータｄ１間で部分的に重複する画素数の画素値から形成されてもよい。
【００５１】
データｄ１は、１以上のチャネルを含む。１つのデータｄ１が、ＲＧＢモードのカラー画像データのように、赤（Ｒ）、緑（Ｇ）及び青（Ｂ）に関して独立な情報（信号値）を有する場合、データｄ１は、Ｒ値に関するデータユニット、Ｇ値に関するデータユニット及びＢ値に関するデータユニットを含む。複数のデータユニットを含むデータｄ１が、演算デバイス１１０に供給される。データｄ１のチャネルは、データｄ１が含む情報に応じたデータユニットに対応する。以下において、データｄ１のチャネルの数は、チャネル数とよばれ、“Ｋ”と表記される。例えば、ＲＧＢモードの画像データＩＭＧのチャネル数は、３である。
【００５２】
図５は、本実施形態の演算デバイスの計算処理に用いられるフィルタを説明するための模式図である。
【００５３】
図５に示されるように、本実施形態の演算デバイス１１０において、ｎ×ｎのサイズのフィルタｆ１が、入力データｄ１に対する計算処理のために用いられる。
【００５４】
フィルタｆ１は、ｎ×ｎ個の要素（係数）を有する２次元空間フィルタである。例えば、“ｎ”と“ｍ”とは、“ｎ＝ｍ−２”の関係を有する。ｎは、３以上であり、ｍより小さい整数である。
【００５５】
フィルタｆ１の１つのセル（四角で示されたマス）ＣＬが、１つの画素（画素値）に関連付けられている。各セルＣＬに、所定の画像処理のための要素（係数）ｇが、設定されている。ノイズ除去処理、平滑化処理、鮮鋭化処理、特徴抽出処理、及びエッジ検出処理等の各種の画像処理に関して、画像処理の種類ごとに異なる値の係数（重み係数）ｇが、フィルタｆ１の各セルＣＬに設定される。
【００５６】
例えば、フィルタｆ１は、１以上のフィルタユニットを有する。１つのフィルタｆ１内のフィルタユニットの個数は、１つの演算デバイス１１０が実行する画像処理の種類数（及びチャネル数）に応じて、適宜設定され得る。以下において、１つのフィルタｆ１が有するフィルタユニットの数（以下では、フィルタ数ともよばれる）は、“Ｊ”と表記される。
【００５７】
尚、同じ画像処理であっても、フィルタ（フィルタユニット）の重み係数の値が、隠れ層１０２内の演算デバイス１１０毎に変更されてもよい。ニューラルネットワーク１００において、複数の演算デバイス１１０のそれぞれに、異なる重み係数（行列値）を有するフィルタｆ１が、供給され得る。各演算デバイス１１０は、異なる重み係数を有するフィルタを用いて、データに対する計算処理を実行できる。データｄ１のチャネル数が２以上であっても、同じ重み係数のフィルタ（フィルタユニット）が、各チャネルのデータユニットに対して用いられてもよい。
【００５８】
図６は、本実施形態の演算デバイス１１０における、データに対するフィルタを用いた計算処理を説明するための模式図である。
【００５９】
図６の（ａ）に示されるように、演算デバイス１１０における、データｄ１とフィルタｆ１との積和演算処理（畳み込み処理）のために、ｎ×ｎのサイズのフィルタｆ１が、ｍ×ｍのサイズのデータｄ１のある領域（ｎ×ｎ領域）に、重畳（オーバーラップ）される。
【００６０】
図６の（ｂ）に示されるように、ｍ×ｍのデータのＸ方向において、フィルタｆ１が、２画素分ずつシフトされて、畳み込みのための積和演算処理が実行される。以下において、データｄ１に対するフィルタの位置を平行移動させる際のフィルタｆ１のシフト量は、ストライド値（又は、単に、ストライド）とよばれる。
【００６１】
図６の（ｃ）に示されるように、ｍ×ｍのデータのＹ方向において、フィルタｆ１のストライド値が、２画素分ずつシフトされて、畳み込みのための積和演算処理が実行される。
【００６２】
このように、本実施形態において、ニューラルネットワーク内の演算デバイス１１０は、ストライド値が２に設定された条件において、ｍ×ｍのサイズのデータｄ１とｎ×ｎのサイズのフィルタｆ１との積和演算処理の結果を、得る。
【００６３】
本実施形態において、演算デバイス１１０は、第１の行列Ｍａｔ１を用いたデータｄ１に対する前処理、第２の行列Ｍａｔ２を用いたフィルタｆ１に対する前処理、及び、前処理されたデータｄ２と前処理されたフィルタｆ２との積和演算の結果に対する第３の行列Ｍａｔ３を用いた後処理を実行する。
【００６４】
これによって、本実施形態の演算デバイス１１０において、ストライド値が２に設定された条件におけるｍ×ｍのサイズのデータｄ１とｎ×ｎのサイズのフィルタｆ１との積和演算処理と等価な計算処理が、実行され得る。
【００６５】
このようなデータ及びフィルタの変換処理を含む計算処理によって、本実施形態の演算デバイス（及び画像データの処理方法）は、比較的少ない計算量で、一般的なデータとフィルタとの積和演算処理と同じ結果を得ることができる。
【００６６】
これによって、本実施形態の演算デバイスは、畳み込みニューラルネットワークにおける計算量を、削減できる。
【００６７】
以下において、本実施形態の演算デバイスの動作、及び、本実施形態の演算デバイスによる各種の計算処理（画像データの処理方法、又は、画像認識方法）について、より詳細に説明する。
【００６８】
（３）  動作例  
図７乃至図９を参照して、本実施形態の演算デバイスの動作例（データ処理方法）について、より具体的な例を示して、説明する。
【００６９】
図７は、本例の畳み込みニューラルネットワーク１００内において、計算処理に用いられるデータｄ１及びフィルタｆ１の一例を示す模式図である。
【００７０】
本例において、図７の（ａ）に示されるように、データｄ１は、２５個のピクセルに対応する５×５の２次元領域内に配列されたパターンに対応するデータである。データｄ１は、５×５のデータサイズを有する。データｄ１内の各セルの値は、イメージセンサ９０の画素の検出結果に応じた画素値（信号）ＰＸに対応する。
【００７１】
データｄ１が、入力層１０１から本実施形態の演算デバイス１１０に供給される。ここで、データｄ１は、Ｋ個（Ｋ≧１）のチャネル数を有する。
【００７２】
本例において、図７の（ｂ）に示されるように、フィルタ（データ）ｆ１は、９個のセルＣＬが、３×３の２次元領域内に配列されたパターンを有する。
【００７３】
３×３のフィルタサイズを有するフィルタｆ１において、各セルＣＬに、重み係数ｇ（ｇ１１，ｇ１２，・・・，ｇ３２，ｇ３３）が設定されている。重み係数ｇの値は、そのフィルタを用いて実行される画像処理に応じた大きさに、設定されている。フィルタｆ１は、１つの演算デバイス１１０が実行する画像処理の数（種類）に応じて、Ｋ個（Ｋ≧１）のフィルタユニットｆ１を有する。
【００７４】
図８は、本実施形態の演算デバイス１１０におけるデータｄ１とフィルタｆ１との積和演算処理を模式的に示す図である。
【００７５】
上述のように、本実施形態において、５×５のデータｄ１と３×３のフィルタｆ１との積和演算処理において、５×５のデータｄ１に対する３×３のフィルタｆ１のストライド値は、“２”に設定される。
【００７６】
図８の（ａ）に示されるように、５×５のデータｄ１と３×３のフィルタｆ１との積和演算の開始位置において、データｄ１とフィルタ（図８のハッチング部分）ｆ１との重ね合わせの配置に関して、積和演算処理（畳み込み処理）が実行される。これによって、領域（以下では、畳み込み領域とよばれる）Ｒ１に関する値（以下では、畳み込み値とよばれる）ｚ１が、得られる。例えば、図８（ａ）において、画像処理の着目画素は、データｄ１内におけるＸ＝２及びＹ＝２の位置（Ｘ−Ｙ平面における位置）の画素値である。
【００７７】
ストライド値が“２”である場合、図８の（ｂ）に示されるように、データｄ１のＸ方向において、フィルタｆ１が、２画素分、シフトされる。図８の（ｂ）におけるデータｄ１とフィルタｆ１との重ね合わせの配置に関して、積和演算処理が実行される。これによって、畳み込み領域Ｒ２に関する畳み込み値ｚ２が得られる。例えば、図８の（ｂ）において、画像処理の着目画素は、データｄ１内におけるＸ＝４及びＹ＝２の座標の画素である。
【００７８】
図８の（ｃ）に示されるように、データｄ１のＹ方向において、フィルタｆ１の位置が、図８の（ａ）のフィルタの位置から２画素分、シフトされる。図８の（ｃ）におけるデータｄ１とフィルタｆ１との重ね合わせの配置に関して、積和演算処理が実行される。これによって、畳み込み領域Ｒ３に関する畳み込み値ｚ３が得られる。例えば、図８の（ｃ）おいて、画像処理の着目画素（中心画素）は、データｄ１内におけるＸ＝２及びＹ＝４の座標の画素である。
【００７９】
さらに、図８の（ｄ）に示されるように、フィルタｆ１の位置が、図８の（ｃ）の位置からＸ方向に２画素分シフトされる。尚、図８の（ｄ）におけるフィルタｆ１のシフト方向は、積和演算処理の開始位置（図８の（ａ）を参照）からＸ−Ｙ平面に平行な斜め方向である。図８の（ｄ）におけるデータｄ１とフィルタｆ１との重ね合わせの配置に関して、積和演算処理が実行される。これによって、畳み込み領域Ｒ４に関する畳み込み値ｚ４が得られる。例えば、図８の（ｄ）において、画像処理の着目画素は、データｄ１内におけるＸ＝４及びＹ＝４の座標の画素である。
【００８０】
これらの積和演算処理によって、２×２のサイズの計算結果（出力データともよばれる）が、得られる。この結果として、ストライド値が２に設定された場合における５×５のデータと３×３のフィルタとの積和演算処理の結果（Ｚ）が、取得される。
【００８１】
尚、積和演算処理の計算の順序は、図８の（ａ）、（ｂ）、（ｃ）及び（ｄ）の順序に限定されない。
【００８２】
本実施形態の演算デバイス１１０において、図３の処理回路１１１，１１２，１１３，１１４が、以下に図９を用いて説明されるデータ及びフィルタの変換処理及び計算処理を、実行する。  
これによって、図８の処理による計算結果と等価な結果が、本実施形態の演算デバイス１１０によって、得られる。
【００８３】
＜処理フロー＞  
図９は、本実施形態の演算デバイスによる各種の処理（画像データの処理方法）の流れを示すフローチャートである。
【００８４】
＜Ｓ１＞  
被写体ＯＢＪに対応する画像データＩＭＧが、イメージセンサ９０によって、生成される。生成された画像データＩＭＧは、イメージセンサ９０から画像認識システム１に送信される。
【００８５】
画像認識システム１は、画像データＩＭＧを用いた画像処理を開始する。画像データＩＭＧが、ＧＰＵ１０の畳み込みニューラルネットワーク（機械学習デバイス）１００に供給される。
【００８６】
畳み込みニューラルネットワーク１００における画像データＩＭＧの計算処理時において、ｍ×ｍ（ここでは、５×５）のサイズのデータｄ１が、入力層１０１の演算デバイス１１８によって、画像データＩＭＧから抽出される。ｍ×ｍのサイズのデータｄ１が、隠れ層１０２内の演算デバイス１１０に供給される。尚、データｄ１のチャネル数Ｋは、１以上である。
【００８７】
＜Ｓ２Ａ＞  
第１の前処理回路１１１は、データｄ１を受ける。本実施形態の演算デバイス１１０において、第１の前処理回路１１１は、５×５のサイズのデータｄ１（データｄ１内の各画素値）に対して、上述の行列Ｍａｔ１として以下の式（Ｅｑ１）に示される行列“ＢＴ”を用いた前処理（変換処理）を、実行する。
【００８８】
【数３】
2019200675.tif 000005
これによって、データｄ１は、データｄ２に変換される。
【００８９】
より具体的には、データｄ１のチャネル数Ｋが１である場合、データｄ１は、以下の式（Ｅｑ２）に示される計算処理によって、データｄ２に変換される。
【００９０】
ｄ２＝ＢＴｄ１Ｂ      ・・・（Ｅｑ２）  
ここで、式（Ｅｑ２）における“Ｂ”は、“ＢＴ”の転置行列である。行列“Ｂ”は、以下の式（Ｅｑ３）で示される。
【００９１】
【数４】
2019200675.tif 000006
【００９２】
行列ＢＴ，Ｂ、及びデータｄ１の各々は、５×５の行列であるため、データｄ２は、５×５のサイズを有する。
【００９３】
データｄ１のチャネル数がＫ＞１である場合、データｄ１に対する前処理の計算処理は、以下の式（Ｅｑ４）のように、チャネル数に関する全てのｋ∈［０，Ｋ）に対して、実行される。尚、“ｋ”は、Ｋの集合の要素を示す値（但し、整数）である。
【００９４】
ｄ２［ｋ］＝ＢＴｄ１［ｋ］Ｂ      ・・・（Ｅｑ４）
１チャネルにおける前処理後のデータｄ２のサイズは、５×５である。データｄ２のサイズは、（Ｋ，５，５）（ただし、Ｋ≧１）と表記される。
【００９５】
第１の前処理回路１１１は、前処理されたデータ（変換されたデータ）ｄ２を、積和演算回路１１３に出力する。
【００９６】
＜Ｓ２Ｂ＞  
第２の前処理回路１１２は、フィルタ（データ）ｆ１を受ける。本実施形態の演算デバイス１１０において、第２の前処理回路１１２は、ｎ×ｎ（ここでは、３×３）のサイズのフィルタ（データ）ｆ１に対する前処理（変換処理）を実行する。例えば、フィルタｆ１に対する前処理（Ｓ２Ｂ）は、データｄ１に対する前処理（Ｓ２Ａ）より前のタイミング、又は、画像データＩＭＧの取得より前のタイミングで実行されることが好ましい。但し、データｄ１に対する前処理（Ｓ２Ａ）とフィルタに対する前処理（Ｓ２Ｂ）とは、時間的にほぼ並行に実行されてもよい。
【００９７】
第２の前処理回路１１２は、３×３のサイズのフィルタｆ１（フィルタｆ１の各セルＣＬに設定された各重み係数ｇ）に対して、上述の行列Ｍａｔ２として以下の式（Ｅｑ５）に示される行列“Ｇ”を用いた前処理を、実行する。
【００９８】
【数５】
2019200675.tif 000007
【００９９】
これによって、フィルタｆ１は、フィルタ（データ）ｆ２に変換される。
【０１００】
より具体的には、フィルタｆ１は、以下の式（Ｅｑ６）に示される計算処理によって、フィルタｆ２に変換される。式（Ｅｑ６）において、チャネル数Ｋは１であり、フィルタユニット数Ｊは１である。
【０１０１】
ｆ２＝Ｇｆ１ＧＴ      ・・・（Ｅｑ６）
ここで、式（Ｅｑ６）における“ＧＴ”は、“Ｇ”に対する転置行列である。“ＧＴ”は、以下の式（Ｅｑ７）に示される。
【０１０２】
【数６】
2019200675.tif 000008
【０１０３】
５×３の行列（Ｇ）と３×３のサイズのフィルタ（ｆ１）と３×５の行列（ＧＴ）との計算処理によって、前処理後のフィルタｆ２は、５×５のサイズを有する。５×５のサイズのフィルタｆ２における各重み係数は、フィルタｆ１の重み係数ｇ１１〜ｇ３３と行列ＧＴ，Ｇの各要素との計算結果に応じた値に設定される。
【０１０４】
データｄ１のチャネル数がＫ＞１であり、フィルタｆ１のフィルタ数がＪ＞１である場合、フィルタｆ１に対する前処理の計算処理は、以下の式（Ｅｑ８）のように、チャネル数及びフィルタ数に関する全てのｊ∈［０，Ｊ）及びｋ∈［０，Ｋ）に対して、実行される。尚、“ｊ”は、Ｊの集合の要素を示す値（但し、整数）である。
【０１０５】
ｆ２［ｊ，ｋ］＝Ｇｆ１［ｊ，ｋ］ＧＴ      ・・・（Ｅｑ８）
これによって、フィルタｆ１に対して、行列変換処理が施される。
【０１０６】
尚、前処理されたフィルタｆ２のサイズは、（Ｊ，Ｋ，５，５）と表記される。“Ｊ”は１以上の整数であり、“Ｋ”は１以上の整数である。
【０１０７】
第２の前処理回路１１２は、前処理されたフィルタ（変換されたフィルタ）ｆ２を、積和演算回路１１３に出力する。
【０１０８】
この後において、前処理されたデータｄ２と前処理されたフィルタｆ２とを用いて、以下のＳ３，Ｓ４の処理が、実行される。
【０１０９】
＜Ｓ３＞  
積和演算回路１１３は、前処理されたデータｄ２と前処理されたフィルタｆ２を受ける。本実施形態の演算デバイス１１０において、積和演算回路１１３は、前処理されたデータｄ２と前処理されたフィルタｆ２とを用いた積和演算処理を、実行する。
【０１１０】
積和演算処理は、以下の式（Ｅｑ９）に示される。
【０１１１】
【数７】
2019200675.tif 000009
【０１１２】
式（Ｅｑ９）の積和演算処理において、データｄ２の各要素とフィルタｆ２の各要素ｇとの積が計算され、入力されたデータｄ１のチャネル数に関して、和が計算される。これによって、積和演算回路１１３は、積和演算の計算結果（Ｃ１）を、得る。
【０１１３】
式（Ｅｑ９）の計算結果（Ｃ１）を示す値（以下では、積和値とよばれる）Ｚ’のサイズは、５×５のサイズを有し、フィルタ数Ｊに関して（Ｊ，５，５）と表記される。
【０１１４】
積和演算回路１１３は、式（Ｅｑ９）の計算結果Ｚ’（Ｃ１）を、後処理回路１１４に出力する。
【０１１５】
＜Ｓ４＞  
後処理回路１１４は、計算結果Ｚ’（Ｃ１）を受ける。本実施形態の演算デバイス１１０において、後処理回路１１４は、第３の行列Ｍａｔ３として以下の式（Ｅｑ１０）に示される行列ＡＴを用いて、積和演算の結果Ｃ１（積和値Ｚ’）に対する後処理を実行する。
【０１１６】
【数８】
2019200675.tif 000010
【０１１７】
これによって、データｄ１とフィルタ（データ）ｆ１との積和演算と実質的に同じ計算結果が、得られる。
【０１１８】
より具体的には、積和値Ｚ’は、以下の式（Ｅｑ１１）に示される計算処理によって、データｄ１とフィルタｆ１との積和演算と同じ計算結果に、変換される。式（Ｅｑ１１）において、Ｊ＝１である。  
Ｚ＝ＡＴＺ’Ａ      ・・・（Ｅｑ１１）
ここで、式（Ｅｑ１１）における“Ａ”は、“ＡＴ”に対する転置行列である。“Ａ”は、以下の式（Ｅｑ１２）に示される。
【０１１９】
【数９】
2019200675.tif 000011
【０１２０】
Ｊ＞１である場合において、以下の式（Ｅｑ１３）のように、全てのｊ∈［０，Ｊ）に対して、積和値Ｚ’の変換処理が実行される。  
Ｚ［ｊ］＝ＡＴＺ’［ｊ］Ａ      ・・・（Ｅｑ１３）
２×５の行列（ＡＴ）と５×５の計算結果（Ｚ’）と５×２の行列（Ａ）との計算処理によって、後処理後の計算結果Ｚは、２×２のサイズを有するデータ（行列）となる。  
このように、演算デバイス１１０は、計算結果として２×２のサイズのデータＺ（Ｚ［ｍ］）を得ることができる。
【０１２１】
演算デバイス１１０は、計算結果Ｚを、後段の層（他の隠れ層又は出力層）の演算デバイスに、送信する。
【０１２２】
本実施形態の演算デバイス１１０は、供給されたデータｄ１の変換処理及びフィルタｆ１の変換処理を含む計算処理を、完了する。
【０１２３】
本実施形態において、ニューラルネットワーク１００は、計算結果Ｚを用いて、画像データＩＭＧに関する推論、学習及び分類のうち少なくとも１つを、実行する。
【０１２４】
本実施形態の画像認識システム１は、計算結果Ｚを用いた、演算デバイス１１０を含むニューラルネットワークによる推論／学習によって得られた結果に基づいて、画像データＩＭＧ内の物体の認識処理を実行できる。
【０１２５】
尚、本実施形態の演算デバイス１１０に、画像データＩＭＧにおけるデータｄ１に連続する他の新たなデータ（ここでは、データｄｘと表記する）が供給された場合、新たなデータに対して、上述の計算処理を実行する。  
但し、新たなデータｄｘに対する計算処理に用いられるフィルタは、データｄ１に対する計算処理に用いられたフィルタｆ１，ｆ２と同じである。そのためデータｄｘに対する計算処理時において、行列Ｇ（Ｍａｔ２）を用いたフィルタｆ１に対する前処理は、再度実行されなくともよい。
【０１２６】
以上のように、本実施形態の演算デバイスによる画像データ処理は、終了する。
【０１２７】
（４）まとめ  
一般的な画像認識システムの畳み込みニューラルネットワークの一例において、４×４のデータと３×３のフィルタとが、１つの演算デバイスよる計算処理に用いられる。４×４のデータと３×３のフィルタとの積和演算処理（畳み込み処理）が、実行される。畳み込みのための積和演算において、ストライド値は、“１”に設定される。
【０１２８】
この場合において、３６回の計算が、１つの演算デバイスによって実行される。さらに、データのチャネル数がＫ個であり、実行される画像処理の種類（フィルタの種類）がＪ個である場合、１つの演算デバイスにおける計算量は、３６×Ｊ×Ｋ回となる。
【０１２９】
また、ストライド値が２である場合における５×５のデータと３×３のフィルタとを用いた一般的な積和演算処理は、以下の式（Ｅｑ１４）で示される。
【０１３０】
【数１０】
2019200675.tif 000012
【０１３１】
式（Ｅｑ１４）において、“ｋｙ”はフィルタｆ１のＹ方向のサイズに関する値であり、“ｋｘ”はフィルタｆ１のＸ方向のサイズに関する値である。“ｒ”はデータの行に関する値であり、“ｃ”はデータｄ１の列に関する値である。
【０１３２】
本実施形態において、ニューラルネットワークを構成する演算デバイスは、ｍ×ｍ（例えば、５×５）のデータｄ１とｎ×ｎ（例えば、３×３。ここでは、ｎ＝ｍ−２）のフィルタｆ１とを用いて、畳み込み処理のための積和演算処理と実質的に等価の計算処理を実行する。本実施形態の演算デバイスの積和演算処理時における入力データに対するフィルタのストライド値は、２に設定されている。
【０１３３】
本実施形態において、所定の行列Ｍａｔ１，Ｍａｔ２，Ｍａｔ３（例えば、上述の式（Ｅｑ１）、式（Ｅｑ２）及び式（Ｅｑ３））を用いて、データ、フィルタ（データ）、及び、積和演算の結果に対する各種の変換処理が、それぞれ実行される。
【０１３４】
図９及び式（Ｅｑ１）〜式（Ｅｑ１３）から得られた計算結果Ｚは、式（Ｅｑ１４）から得られる計算結果と一致する。
【０１３５】
本実施形態において、データｄ１及びフィルタｆ１に対する前処理（Ｓ２Ａ，Ｓ２Ｂ）及び積和値に対する後処理（Ｓ４）を除く積和演算の回数は、式（Ｅｑ９）に示されるように、５×５×Ｊ×Ｋ回（＝２５×Ｊ×Ｋ回）となる。
【０１３６】
本実施形態における積和演算の回数（２５×Ｊ×Ｋ回）と一般的な畳み込み積和演算における積和演算の回数（３６×Ｊ×Ｋ回）との相対的な比率は、２５／３６（＝１／１．４４）となる。
【０１３７】
ここで、本実施形態におけるフィルタｆ１に対する前処理時に実行される積和演算の回数は、式（Ｅｑ６），（Ｅｑ８）に基づくと、（５×３×３＋５×５×３）×Ｊ×Ｋ回（＝１２０×Ｊ×Ｋ回）となる。
【０１３８】
但し、フィルタｆ１に対する前処理は、推論／学習の処理と並行して実行されなくともよい。フィルタｆ１に対する前処理があらかじめ（例えば、画像データＩＭＧの取得／抽出処理の前に、または、データｄ１の前処理の前に）実行されることによって、フィルタｆ１に対する計算処理は、推論／学習の処理中に、生じない。
【０１３９】
それゆえ、画像データＩＭＧに対する推論／学習の処理中において、フィルタｆ１に対する計算の回数は、実質的に増大しない。
【０１４０】
データｄ１に対する前処理時に実行される積和演算の回数は、式（Ｅｑ２），（Ｅｑ４）に基づくと、（５×５×５＋５×５×５）×Ｋ回（＝２５０×Ｋ回）となる。
【０１４１】
しかし、行列（Ｅｑ１），（Ｅｑ３）（行列ＢＴ，Ｂ）の要素は“１”及び“−１”である。そのため、データｄ２の要素は、データｄ１の要素に対する加算処理及び減算処理で、計算できる。それゆえ、データｄ１に対する前処理で実行される実質的な計算の回数は、５０×Ｋ回である。
【０１４２】
尚、データｄ１の値は、推論又は学習の対象となる入力に応じて変化する。そのため、データｄ１に対する前処理は、推論／学習の処理の事前に実行できず、推論／学習の処理中に実行される。
【０１４３】
上述の式に基づくと、データｄ１に対する前処理における積和演算の回数は、フィルタユニット数Ｊの値を係数としない。それゆえ、１つの演算デバイス１１０が実行する画像処理の種類が多い場合、データｄ１に対する前処理のための計算の回数は、ほとんど無視できる。
【０１４４】
以上のように、本実施形態の演算デバイス１１０は、計算量及び計算処理に起因する負荷を低減できる。これに伴って、本実施形態の演算デバイス１１０は、計算処理の速度を向上できる。
【０１４５】
さらには、本実施形態の演算デバイス１１０は、データサイズの増大に伴って、計算処理に起因するプロセッサの負荷が増大するのを、抑制できる。
【０１４６】
また、１つの演算デバイスが計算対象とする入力データのサイズは、５×５である。それゆえ、本実施形態の演算デバイス１１０において、画像データから抽出された４×４のサイズのデータを用いて、計算処理が実行される場合に比較して、１つの画像データに対する入力データのサンプリングの回数が、削減され得る。
【０１４７】
したがって、本実施形態の演算デバイス及びデータ（画像データ）の処理方法によれば、演算デバイスの特性を向上できる。
【０１４８】
（５）  変形例  
＜例１＞  
本実施形態において、上述の図９及び式（Ｅｑ１）〜（Ｅｑ１３）に示される各種の計算処理は、プログラムとして提供及び実行されてもよい。
【０１４９】
例えば、本実施形態のデータ処理方法のプログラムは、記憶媒体９９、ＧＰＵ１０のメモリ領域、ＣＰＵ２０のメモリ領域、及び、計算機システム１内のメモリ７０のうち少なくとも１つに、記憶される。図９の各Ｓ１〜Ｓ４に対応するプログラムコードが、プログラム内に記述される。
【０１５０】
図１の計算機システム（画像認識システム）１において、ＧＰＵ１０（又はＣＰＵ２０）が、例えば、記憶媒体９９内のプログラムを、読み出し、図９のＳ１〜Ｓ４にそれぞれ対応するプログラムコードを実行する。
【０１５１】
これによって、本実施形態の画像データに対する計算処理が、ｍ×ｍ（例えば、５×５）のサイズのデータとｎ×ｎ（例えば、３×３）のサイズのフィルタとを用いて、実行される。
【０１５２】
本実施形態の画像データの処理方法がプログラムとして提供及び実行された場合においても、比較的少ない計算量で、ニューラルネットワークにおける畳み込み積和演算処理を実行できる。
【０１５３】
＜例２＞  
上述の行列ＢＴ，Ｇ，ＡＴに対して、スカラー係数が、乗算されてもよい。
【０１５４】
畳み込みニューラルネットワークの入力層１０１において、画像データの行／列の変換処理が施される場合がある。データに施された処理に応じて、計算の等価性が維持されている限り、行列ＢＴの複数の行の配列、又は、行列ＢＴの複数の列の配列が、入れ換えられてもよい。
【０１５５】
これと同様に、データ及び／又はフィルタに施された処理に応じて、行列Ｇの複数の行の配列、又は、行列Ｇの複数の列の配列が、入れ換えられてもよい。また、データ及び／又はフィルタに施された処理に応じて、行列ＡＴの行の配列、又は、行列Ｇの列の配列が、入れ替えられてもよい。
【０１５６】
（６）  その他  
本実施形態の演算デバイス、本実施形態の演算デバイスを含む計算機システム、及び、本実施形態のデータの処理方法を記憶する記憶媒体は、スマートフォン、携帯電話、パーソナルコンピュータ、デジタルカメラ、車載カメラ、監視カメラ、セキュリティシステム、ＡＩ機器、システムのライブラリ（データベース）、及び、人工衛星などに適用され得る。
【０１５７】
上述の実施形態において、本実施形態の演算デバイス及びデータの処理方法が、画像認識システムにおける畳み込みニューラルネットワークに適用された例が示されている。但し、本実施形態の演算デバイス及びデータの処理方法は、畳み込みニューラルネットワークを含む様々な計算機システム、及び、畳み込みニューラルネットワークによる計算処理を実行する様々なデータ処理方法に、適用可能である。
【０１５８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１５９】
１：計算機システム、１０，２０：プロセッサ、１００：ニューラルネットワーク、１１０（１１０Ａ，１１０Ｂ）：演算デバイス、１１１，１１２，１１３，１１４：処理回路。
【図１】
2019200675.tif 000019
【図２】
2019200675.tif 000020
【図３】
2019200675.tif 000021
【図４】
2019200675.tif 000022
【図５】
2019200675.tif 000023
【図６】
2019200675.tif 000024
【図７】
2019200675.tif 000025
【図８】
2019200675.tif 000026
【図９】
2019200675.tif 000027