(57)【要約】【課題】畳み込み演算の計算効率をより向上させて低消費電力化させることができる情報処理方法を提供する。【解決手段】データを示す入力テンソルを、メモリを有しコンピュータにより処理される処理部１２に入力する入力ステップ（Ｓ１）と、入力テンソルの各要素について２の累乗表現の形式に変換される事前計算が行われてメモリに格納された後において、所定のアルゴリズムにより予め２の累乗表現の形式に変換され、かつメモリに格納されている畳み込み演算に用いる可能性のある重みを示す重みテンソルと、メモリに格納された事前計算が行われた入力テンソルの各要素とを用いて、処理部１２に、加算演算およびシフト演算のみで畳み込み演算処理を行わせる処理ステップ（Ｓ２，Ｓ３）と、処理ステップ（Ｓ３）により畳み込み演算処理が行われた入力テンソルの各要素を、出力テンソルとして出力する出力ステップ（Ｓ４）とを含む。【選択図】図８
2018181313.tif 000002
【特許請求の範囲】
【請求項１】
データを示す入力テンソルを、メモリを有しコンピュータにより処理される処理部に入力する入力ステップと、
前記入力テンソルの各要素について２の累乗表現の形式に変換される事前計算が行われて前記メモリに格納された後において、所定のアルゴリズムにより予め２の累乗表現の形式に変換され、かつ前記メモリに格納されている畳み込み演算に用いる可能性のある重みを示す重みテンソルと、前記メモリに格納された前記事前計算が行われた前記入力テンソルの各要素とを用いて、前記処理部に、加算演算およびシフト演算のみで畳み込み演算処理を行わせる処理ステップと、
前記処理ステップにより前記畳み込み演算処理が行われた前記入力テンソルの各要素を、出力テンソルとして出力する出力ステップとを含む、
情報処理方法。
【請求項２】
前記処理ステップでは、前記処理部に、前記事前計算を行わせ、前記メモリに前記事前計算を行った前記入力テンソルの各要素を格納させる、
請求項１に記載の情報処理方法。
【請求項３】
前記処理ステップでは、前記処理部に、畳み込みニューラルネットワークを構成する畳み込み層の演算を行わせる、
請求項１または２に記載の情報処理方法。
【請求項４】
前記重みテンソルは、２の補数のビット値がＢ（１以上の整数）とすると２Ｂ−１個の組み合わせからなり、かつ、前記メモリにコードブックとして格納されており、
前記処理ステップでは、前記コードブックから、１ビットの表現の自由度を示す次元数とするＮ（１以上の整数）および前記Ｂとにより特定される重みテンソルの要素を取得して用いる、
請求項１〜３のいずれか１項に記載の情報処理方法。
【請求項５】
前記Ｎは、２以上の整数である、
請求項４に記載の情報処理方法。
【請求項６】
データを示す入力テンソルを入力する入力部と、
メモリを有しコンピュータにより処理される処理部であって、前記入力テンソルの各要素について２の累乗表現の形式に変換される事前計算が行われて前記メモリに格納された後において、所定のアルゴリズムにより予め２の累乗表現の形式に変換され、かつ前記メモリに格納されている畳み込み演算に用いる可能性のある重みを示す重みテンソルと、前記メモリに格納された前記事前計算が行われた前記入力テンソルの各要素とを用いて、加算演算およびシフト演算のみで畳み込み演算処理を行う処理部と、
前記処理部により前記畳み込み演算処理が行われた前記入力テンソルの各要素を、出力テンソルとして出力する出力部とを含む、
情報処理装置。
【請求項７】
データを示す入力テンソルを、メモリを有する処理部に入力する入力ステップと、
前記入力テンソルの各要素について２の累乗表現の形式に変換される事前計算が行われてメモリに格納された後において、所定のアルゴリズムにより予め２の累乗表現の形式に変換され、かつ前記メモリに格納されている畳み込み演算に用いる可能性のある重みを示す重みテンソルと、前記メモリに格納された前記事前計算が行われた前記入力テンソルの各要素とを用いて、前記処理部に、加算演算およびシフト演算のみで畳み込み演算処理を行わせる処理ステップと、
前記処理ステップにより前記畳み込み演算処理が行われた前記入力テンソルの各要素を、出力テンソルとして出力する出力ステップとを、
コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理方法、情報処理装置およびプログラムに関する。
【背景技術】
【０００２】
近年、画像分類、物体検出、および、画像を画素レベルで把握するセマンティックセグメンテーションなど、コンピュータビジョンを含む多くの研究分野において、深層学習アルゴリズムの成果がもたらされている。
【０００３】
深層学習に用いられるディープニューラルネットワーク（DNN：Deep Neural Network）の中でも、畳み込みニューラルネットワーク（CNN：Convolutional Neural Network）は、最も広く使用されている。CNNの演算は、大量の電力を消費するグラフィック処理ユニット（GPU：Graphics Processing Unit）にのみ実行可能とされてきた。
【０００４】
しかし、GPUにより実行されるCNNは、動作が容易であるものの計算効率の悪い浮動小数点形式を用いていることが知られている。
【０００５】
そこで、計算コストが安くかつ電力効率に優れたCNNアーキテクチャと低消費電力で駆動する組み込みシステムへの実装とを実現させるべく、数多くの研究と実装の取り組みが行われている（例えば非特許文献１）。
【０００６】
非特許文献１には、CNNのデータ表現として、浮動小数点形式よりも計算効率が良い量子化された固定小数点を用いる方法が開示されている。非特許文献１には、浮動小数点形式を低精度量子化表現の一つである固定小数点量子化形式に変換して畳み込み演算を行うことが開示されている。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Philipp Gysel, Mohammad Motamedi, and Soheil Ghiasi. Hardware-oriented approximation of convolutional neural networks. arXiv preprint arXiv:1604.03168, 2016.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、非特許文献１で開示された技術では、畳み込み演算の計算効率を向上することができるものの、FPGA（Field Programmable Gate Array）またはASIC（Application Specific Integrated Circuit）など低消費の組み込みシステムに実装できる程ではない。つまり、畳み込み演算の計算効率をさらに向上させ低消費電力化することが求められる。
【０００９】
本開示は、上述の事情を鑑みてなされたもので、畳み込み演算の計算効率をより向上させて低消費電力化させることができる情報処理方法、情報処理装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本開示の一形態に係る情報処理方法は、本開示の一形態に係る情報処理方法は、データを示す入力テンソルを、メモリを有しコンピュータにより処理される処理部に入力する入力ステップと、前記入力テンソルの各要素について２の累乗表現の形式に変換される事前計算が行われて前記メモリに格納された後において、所定のアルゴリズムにより予め２の累乗表現の形式に変換され、かつ前記メモリに格納されている畳み込み演算に用いる可能性のある重みを示す重みテンソルと、前記メモリに格納された前記事前計算が行われた前記入力テンソルの各要素とを用いて、前記処理部に、加算演算およびシフト演算のみで畳み込み演算処理を行わせる処理ステップと、前記処理ステップにより前記畳み込み演算処理が行われた前記入力テンソルの各要素を、出力テンソルとして出力する出力ステップとを含む。
【００１１】
なお、これらの全般的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータで読み取り可能なＣＤ−ＲＯＭなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムおよび記録媒体の任意な組み合わせで実現されてもよい。
【発明の効果】
【００１２】
本開示の情報処理方法等によれば、畳み込み演算の計算効率をより向上させて低消費電力化させることができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施の形態における情報処理装置の構成の一例を示すブロック図である。
【図２】図２は、図１に示す処理部の詳細構成の一例を示すブロック図である。
【図３】図３は、図１に示す処理部が行う畳み込み演算処理を概念的に示す図である。
【図４】図４は、図３に示すShiftALU部の詳細構成を概念的に示す図である。
【図５】図５は、畳み込み演算に用いる可能性のある重みテンソルを２の累乗表現の形式に変換する所定のアルゴリズムを示す図である。
【図６】図６は、図２に示す畳み込み演算部の詳細構成を概念的に示す図である。
【図７】図７は、実施の形態における制御部の処理の流れが記述された擬似コードの一例を示す図である。
【図８】図８は、実施の形態における情報処理装置の演算処理を示すフローチャートである。
【図９】図９は、図８に示すステップＳ３の畳み込み演算処理の詳細を示すフローチャートである。
【図１０】図１０は、実施例１におけるImageNet datasetを用いて正解率を評価した評価結果を示す図である。
【図１１】図１１は、実施例１の３つのCNNモデルにおける従来の畳み込み層に畳み込み演算に必要な乗算演算の数とShiftCNNに変換後に畳み込み演算に必要なシフト演算のサイクル数の比較を示す図である。
【図１２】図１２は、実施例２におけるFPGAを利用した場合の推定電力の比較を示す図である。
【発明を実施するための形態】
【００１４】
本開示の一形態に係る情報処理方法は、データを示す入力テンソルを、メモリを有しコンピュータにより処理される処理部に入力する入力ステップと、前記入力テンソルの各要素について２の累乗表現の形式に変換される事前計算が行われて前記メモリに格納された後において、所定のアルゴリズムにより予め２の累乗表現の形式に変換され、かつ前記メモリに格納されている畳み込み演算に用いる可能性のある重みを示す重みテンソルと、前記メモリに格納された前記事前計算が行われた前記入力テンソルの各要素とを用いて、前記処理部に、加算演算およびシフト演算のみで畳み込み演算処理を行わせる処理ステップと、前記処理ステップにより前記畳み込み演算処理が行われた前記入力テンソルの各要素を、出力テンソルとして出力する出力ステップとを含む。
【００１５】
これにより、畳み込み演算を、乗算演算を必要とせず加算演算およびシフト演算のみで行うことができるので、畳み込み演算の計算効率をより向上させて低消費電力化させることができる。
【００１６】
ここで、例えば、前記処理ステップでは、前記処理部に、前記事前計算を行わせ、前記メモリに前記事前計算を行った前記入力テンソルの各要素を格納させる。
【００１７】
また、例えば、前記処理ステップでは、前記処理部に、畳み込みニューラルネットワークを構成する畳み込み層の演算を行わせてもよい。
【００１８】
これにより、CNNの畳み込み層で行われる畳み込み演算の計算効率をより向上させて、CNNが実装される装置の低消費電力化を図ることができる。
【００１９】
また、例えば、前記重みテンソルは、２の補数のビット値がＢ（１以上の整数）とすると２Ｂ−１個の組み合わせからなり、かつ、前記メモリにコードブックとして格納されており、前記処理ステップでは、前記コードブックから、１ビットの表現の自由度を示す次元数とするＮ（１以上の整数）および前記Ｂとにより特定される重みテンソルの要素を取得して用いてもよい。
【００２０】
これにより、畳み込み演算を行う際に必要な重みを予め辞書的にコードブックとして保持できるので、畳み込み演算の計算効率をより向上させることができる。
【００２１】
また、例えば、前記Ｎは、２以上の整数であるとしてもよい。
【００２２】
これにより、１％未満の正解率低下すなわち精度低下の範囲において、畳み込み演算を、加算演算およびシフト演算のみで行うことができる。
【００２３】
また、本開示の一形態に係る情報処理装置は、データを示す入力テンソルを入力する入力部と、メモリを有しコンピュータにより処理される処理部であって、前記入力テンソルの各要素について２の累乗表現の形式に変換される事前計算が行われて前記メモリに格納された後において、所定のアルゴリズムにより予め２の累乗表現の形式に変換され、かつ前記メモリに格納されている畳み込み演算に用いる可能性のある重みを示す重みテンソルと、前記メモリに格納された前記事前計算が行われた前記入力テンソルの各要素とを用いて、加算演算およびシフト演算のみで畳み込み演算処理を行う処理部と、前記処理部により前記畳み込み演算処理が行われた前記入力テンソルの各要素を、出力テンソルとして出力する出力部とを含む。
【００２４】
なお、これらの包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータで読み取り可能なＣＤ−ＲＯＭなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムおよび記録媒体の任意な組み合わせで実現されてもよい。
【００２５】
以下で説明する実施の形態は、いずれも本開示の一具体例を示すものである。以下の実施の形態で示される数値、形状、構成要素、ステップ、ステップの順序などは、一例であり、本開示を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。また全ての実施の形態において、各々の内容を組み合わせることもできる。
【００２６】
（実施の形態）
以下では、図面を参照しながら、実施の形態における情報処理装置１０の情報処理方法等の説明を行う。
【００２７】
［情報処理装置１０の構成］
図１は、実施の形態における情報処理装置１０の構成の一例を示すブロック図である。
【００２８】
情報処理装置１０は、畳み込みニューラルネットワークを用いたコンピュータ等で実現されてもよい。情報処理装置１０は、図１に示すように入力部１１と処理部１２と出力部１３とで構成されている。情報処理装置１０は、画像、動画像など処理対象のデータが入力されると、畳み込み演算処理を行い、その結果である畳み込み演算処理結果を出力する。なお、処理対象のデータは、画像または動画像である場合に限らない。
【００２９】
［入力部１１］
入力部１１は、処理対象のデータを示す入力テンソルを処理部１２に入力する。ここで、処理対象のデータは、画像または動画像であるが、これに限らない。処理部１２が、１層の畳み込み層の演算を行う場合には、データは、当該畳み込み層の前にある畳み込み層などによる畳み込み演算処理結果であってもよい。
【００３０】
［処理部１２］
処理部１２は、メモリ１２４を有しコンピュータにより処理される。処理部１２は、入力テンソルの各要素について２の累乗表現の形式に変換される事前計算が行われてメモリ１２４に格納された後において、所定のアルゴリズムにより予め２の累乗表現の形式に変換され、かつメモリ１２４に格納されている畳み込み演算に用いる可能性のある重みを示す重みテンソルと、メモリ１２４に格納された事前計算が行われた入力テンソルの各要素とを用いて、加算演算およびシフト演算のみで畳み込み演算処理を行う。ここで、処理部１２は、事前計算を行い、メモリ１２４に事前計算を行った入力テンソルの各要素を格納してもよい。また、重みテンソルは、２の補数のビット値がＢ（１以上の整数）とすると２Ｂ−１個の組み合わせからなり、かつ、メモリ１２４にコードブックとして格納されていてもよい。処理部１２は、コードブック１２３から、１ビットの表現の自由度を示す次元数とするＮ（１以上の整数）および当該Ｂとにより特定される重みテンソルの要素を取得して用いる。なお、Ｎは、２以上の整数であるとよい。
【００３１】
具体的には、処理部１２は、CNNのデータ表現を後述するハードウェア効率の高い2の累乗表現形式に変換して、乗算なしで畳み込み演算を実行する。換言すると、処理部１２は、乗算なしで畳み込み演算が実行できるShiftCNNとも称するCNNアーキテクチャであるともいえる。なお、処理部１２は、CNNを構成する畳み込み層の演算を行う場合に限らず、単に畳み込み演算を行うとしてもよい。
【００３２】
以下では、図を用いて、処理部１２の詳細構成について説明するが、説明を簡単にするため、処理部１２は、CNNを構成する複数の畳み込み層のうちの１層の畳み込み層の演算を行うとして説明する。
【００３３】
図２は、図１に示す処理部１２の詳細構成の一例を示すブロック図である。図３は、図１に示す処理部１２が行う畳み込み演算処理を概念的に示す図である。
【００３４】
本実施の形態では、処理部１２は、図２に示すように、事前計算部１２１と、畳み込み演算部１２２と、コードブック１２３と、メモリ１２４と、制御部１２５とを備える。なお、処理部１２は、事前計算部１２１を備えなくてもよい。
【００３５】
まず、一般的なCNNの畳み込み層の演算すなわち畳み込み演算について説明する。
【００３６】
＜畳み込み演算＞
一般的なCNNの各畳み込み層への入力は、入力テンソルXで表すことができる。入力テンソルXは、入力チャンネル数をC、高さをH、幅をWとすると、（式１）に示される集合Ｒの要素である。
【００３７】
【数１】
2018181313.tif 000003
【００３８】
そして、入力テンソルXは、重みテンソルWで畳み込まれる。重みテンソルWは、（式２）に示される集合Ｒの要素である。
【００３９】
【数２】
2018181313.tif 000004
【００４０】
（式２）において、出力チャンネル数を
【数３】
2018181313.tif 000005
、フィルタカーネルの高さをHf、フィルタカーネルの幅をWfとしている。
【００４１】
なお、バイアスベクトルで示されるバイアス項bが畳み込み演算の結果に加算される。バイアス項bは、（式３）に示される集合Ｒの要素である。
【００４２】
【数４】
2018181313.tif 000006
【００４３】
【数５】
2018181313.tif 000007
個のチャンネル数の出力テンソルYは、（式４）に示す計算式を用いて、算出することができる。出力テンソルYは、（式５）に示される集合Ｒの要素である。なお、（式４）において、*は畳み込み演算を行うことを表す。
【００４４】
【数６】
2018181313.tif 000008
【００４５】
【数７】
2018181313.tif 000009
【００４６】
次に、処理部１２を構成する各構成要素について図２、図３等を用いて説明する。
【００４７】
＜メモリ１２４＞
メモリ１２４は、ハードディスクまたは半導体メモリ等で構成され、情報を記憶する。
【００４８】
本実施の形態では、メモリ１２４は、事前計算部１２１が事前計算した結果、および、畳み込み演算部１２２が行った畳み込み演算処理の結果を記憶する。
【００４９】
なお、メモリ１２４は、畳み込み演算部１２２が畳み込み演算処理を行う際に用いるバイアス項の値を記憶していてもよい。また、メモリ１２４は、後述するコードブック１２３を記憶しているとしてもよい。
【００５０】
＜事前計算部１２１＞
事前計算部１２１は、入力テンソルXの各要素について２の累乗表現の形式に変換する事前計算を行う。事前計算部１２１は、当該事前計算を行い、当該事前計算を行った入力テンソルXの各要素をメモリ１２４に格納する。
【００５１】
本実施の形態では、事前計算部１２１は、図３に示すように、ShiftALU部１２１１を備える。事前計算部１２１は、畳み込み演算部１２２で畳み込み演算を行う前に、事前計算として、ShiftALU部１２１１を用いて、例えば１１ａで示される入力テンソルXの各要素について２の累乗表現の形式であるテンソルPに変換する。ここで、テンソルPは、例えば図３において１２４ａで示されており、入力テンソルXの各要素について有り得るすべての組み合わせとなっている。テンソルPは、２の補数のビット値をＢ（１以上の整数）、１ビットの表現の自由度を示す次元数をＮ（１以上の整数）としたとき、（M+2（N-1））の組み合わせからなる。テンソルPは、入力テンソルXをシフト演算できるような表現形式に変換したテンソルに該当する。
【００５２】
≪ShiftALU部１２１１≫
図４は、図３に示すShiftALU部１２１１の詳細構成を概念的に示す図である。
【００５３】
ShiftALU部１２１１は、Shift Arithmetic Unitとも称する特殊なシフト演算器であり、複数のシフタと、符号反転を行う複数のフリップとで構成されている。複数のシフタと複数のフリップとは、ロジック回路で実現されてもよいし、プログラムロジックで実現されてもよい。図４に示すように、複数のシフタそれぞれは、入力値である入力テンソルXを右に１つずつシフトする演算を行いメモリ１２４に格納する。また、複数のフリップのそれぞれは、シフタにより右にシフトするよう演算された値を符号反転させてメモリ１２４に格納する。ShiftALU部１２１１は、合計（1/P）回の１ビットシフトを実行する。このようにして、テンソルPを事前計算してメモリ１２４に格納することができる。
【００５４】
なお、事前計算部１２１は、上述したように、処理部１２に備えられなくてもよい。この場合、処理部１２の外部に事前計算部１２１が設けられ、事前計算部１２１が行った事前計算の結果であるテンソルPがメモリ１２４に格納されていればよい。また、ShiftALU部１２１１がプログラムロジックである場合には、ShiftALU部１２１１は、後述する図５に示す所定のアルゴリズムを用いて、入力テンソルXからテンソルPに変換する事前計算を行ってもよい。
【００５５】
＜コードブック１２３＞
図５は、畳み込み演算に用いる可能性のある重みテンソルを２の累乗表現の形式に変換する所定のアルゴリズムを示す図である。図５において、所定のアルゴリズムは、アルゴリズム１と表記されている。
【００５６】
コードブック１２３は、メモリ１２４に格納されているとしてもよいし、メモリ１２４とは異なるメモリに格納されているとしてもよい。本実施の形態では、メモリ１２４とは異なるメモリに格納されているとして説明する。
【００５７】
コードブック１２３は、所定のアルゴリズムにより予め２の累乗表現の形式に変換され、かつ畳み込み演算に用いる可能性のある重みを示す重みテンソルWの組み合わせが格納されている。換言すると、重みテンソルWは、２の補数のビット値がＢ（１以上の整数）とすると２Ｂ−１個の組み合わせからなり、かつ、メモリにコードブック１２３として格納されている。重みテンソルWの要素は、コードブック１２３から、１ビットの表現の自由度を示す次元数Ｎ（１以上の整数）および当該Ｂとにより特定される。なお、Ｎは、２以上の整数であってもよい。換言すると、コードブック１２３は、ＢとＮとで特定できるアドレスまたは指標が紐づけられた重みテンソルの辞書のようなものである。
【００５８】
本実施の形態では、重みテンソルWは、低精度の重みテンソル
【数８】
2018181313.tif 000010
で近似されてコードブック１２３に格納されている。重みテンソルWは、低精度の重みテンソル
【数９】
2018181313.tif 000011
で近似することで、２の累乗表現の形式にされた２Ｂ−１個の組み合わせからなる重みとすることができるので、テーブル化すなわちコードブック１２３に予め格納できる。
【００５９】
低精度の重みテンソル
【数１０】
2018181313.tif 000012
の各要素
【数１１】
2018181313.tif 000013
は、（式６）で表され、コードブック１２３に格納される。
【００６０】
【数１２】
2018181313.tif 000014
【００６１】
（式６）において、
【数１３】
2018181313.tif 000015
である。つまり、Cnはコードブック１２３におけるアドレスまたは指標を示している。
【００６２】
なお、本実施の形態では、所定のアルゴリズムすなわち、図５に示すアルゴリズム１を用いて、低精度の重みテンソル
【数１４】
2018181313.tif 000016
の各要素
【数１５】
2018181313.tif 000017
が、MAX(abs(W))で正規化した上で変換されて、コードブック１２３に格納されている。
【００６３】
図５では、２行目において、重みテンソルの最大値に対する要素
【数１６】
2018181313.tif 000018
の値を入力値rとすることで、０〜１の値で３行目以降のアルゴリズム１を実行する。
【００６４】
３行目では２行目の入力値ｒの符号をqsgnとして算出し、４行目では２行目の入力値rが２の何乗の桁数を、qlogとして算出している。また、７行目〜９行目では、量子化の境界を示すlog21.5を用いて、qlogの値の桁数を例えば四捨五入するように１つあげるかそのままかを算出している。１０行目〜１６行目ではN回再帰的に桁数を量子化つまり２の累乗表現の形式に変換している。
【００６５】
＜畳み込み演算部１２２＞
畳み込み演算部１２２は、事前計算が行われた後において、所定のアルゴリズムにより予め２の累乗表現の形式に変換され、かつ畳み込み演算に用いる可能性のある重みを示す重みテンソルと、メモリ１２４に格納された事前計算が行われた入力テンソルの各要素とを用いて、加算演算およびシフト演算のみで畳み込み演算処理を行う。
【００６６】
例えば図３に概念的に示されるように、畳み込み演算部１２２は、事前計算後テンソル１２４ａと、重みテンソル１２３ａと、バイアス項１２４ｂとを用いて、加算演算およびシフト演算のみで畳み込み演算処理を行う。事前計算後テンソル１２４ａは、事前計算部１２１のShiftALU部１２１１により事前計算が行われた入力テンソルの各要素である。重みテンソル１２３ａはコードブック１２３に格納されている重みテンソルであって、図５に示すアルゴリズム１により予め２の累乗表現の形式に変換され、かつ畳み込み演算に用いる可能性のある重みを示す低精度の重みテンソルから取得されたものである。
【００６７】
図６は、図２に示す畳み込み演算部１２２の詳細構成を概念的に示す図である。
【００６８】
本実施の形態では、畳み込み演算部１２２は、図６に示すように、マルチプレクサ１２２１、１２２２と、加算器１２２３とを備える。
【００６９】
マルチプレクサ１２２１は、重みテンソル１２３ａのアドレスまたは指標に従ってメモリ１２４から、事前計算後テンソル１２４ａをフェッチ（取得）して、重みテンソル１２３ａと事前計算後テンソル１２４ａとの畳み込み演算をシフト演算にて行い、加算器１２２３に出力する。より具体的には、マルチプレクサ１２２１は、重みテンソル１２３ａの要素の値としてゼロ（値０）または２の累乗の桁を示す値を選択し、事前計算後テンソル１２４ａの要素の値である２の累乗の桁を示す値と、重みテンソル１２３ａの要素の値としての２の累乗の桁を示す値とをシフト演算した結果を加算器１２２３に出力する。
【００７０】
加算器１２２３は、マルチプレクサ１２２１が出力した値とバイアス項１２４ｂとを加算することで、仮の出力テンソル１３ｂを算出する。なお、加算器１２２３は、仮の出力テンソル１３ｂを前回算出していた場合には、マルチプレクサ１２２１が出力した値に対して、バイアス項１２４ｂと前回算出していた仮の出力テンソル１３ｂとを加算した値を加算することで、仮の出力テンソル１３ｂを更新する。そして、加算器１２２３は、Ｎ−１回更新された仮の出力テンソル１３ｂを出力テンソル１３ａとして出力部１３に出力する。このようにして、仮の出力テンソル１３ｂはＮ−１回更新されて、出力テンソル１３ａとして出力部１３に出力される。
【００７１】
マルチプレクサ１２２２は、バイアス項１２４ｂと、加算器１２２３により前回算出または更新された仮の出力テンソル１３ｂとを加算した値を、加算器１２２３に出力する。なお、マルチプレクサ１２２２は、加算器１２２３により前回算出または前回更新された仮の出力テンソル１３ｂがない場合には、バイアス項１２４ｂのみを加算器１２２３に出力する。
【００７２】
＜制御部１２５＞
制御部１２５は、事前計算部１２１および畳み込み演算部１２２を制御する。
【００７３】
ところで、制御部１２５が、事前計算部１２１にShiftALU部１２１１を用いて事前計算後テンソル１２４ａを計算させることは簡単である。一方、制御部１２５が、畳み込み演算部１２２に、シフト演算および加算演算のみで畳み込み演算を行わせるには、潜在的なすべてのフィルタカーネルをサポートする必要があり、複雑なスケジューリングおよび制御ロジックを必要とする。
【００７４】
図７は、実施の形態における制御部１２５の処理の流れが記述された擬似コードの一例を示す図である。図７において、擬似コードは、アルゴリズム２と表記されている。
【００７５】
図７では、２行目において、入力テンソルＸとして入力ベクトルxを読み込むことが記述されている。３行目には、事前計算部１２１に事前計算を行わせてメモリ１２４に格納させることが記述されている。
【００７６】
４行目では、出力チャンネル数だけ繰り返して、５〜９行目の計算を行わせることが記述されている。５行目では、６〜９行目の計算後にバイアス項を加算演算することが記述されている。
【００７７】
６〜８行目では、畳み込み演算部１２２に、事前計算されたPの要素のＮの回数分、潜在的なすべてのフィルタカーネルの高さと幅に対して、畳み込み演算を行わせることが記述されている。９行目では、畳み込み演算部１２２に、畳み込み演算を行った結果の値を出力テンソルとすることが記述されている。
【００７８】
本実施の形態では、制御部１２５は、例えば図７に示す擬似コードに従って、事前計算部１２１および畳み込み演算部１２２を制御して、事前計算と畳み込み演算とを行う。
【００７９】
［出力部１３］
出力部１３は、処理部１２により畳み込み演算処理が行われた入力テンソルの各要素を、出力テンソルとして出力する。
【００８０】
本実施の形態では、出力部１３は、CNNを構成する１層の畳み込み層が行う畳み込み演算処理結果として畳み込み演算部１２２により出力された出力テンソル１３ａを出力する。
【００８１】
［情報処理装置１０の動作］
次に、上記のように構成された情報処理装置１０の動作について説明する。
【００８２】
図８は、実施の形態における情報処理装置１０の演算処理を示すフローチャートである。
【００８３】
まず、情報処理装置１０は、処理対象のデータを示す入力テンソルを、処理部１２に入力する入力処理を行う（Ｓ１）。より具体的には、情報処理装置１０のコンピュータは、図１に示す入力部１１に、処理対象のデータを示す入力テンソルを処理部１２に入力させる。
【００８４】
次に、情報処理装置１０は、入力テンソルを２の累乗表現の形式に変換する事前計算を行う（Ｓ２）。より具体的には、情報処理装置１０のコンピュータは、処理部１２の事前計算部１２１に、入力テンソルの各要素について２の累乗表現の形式に変換する事前計算を行わせ、メモリ１２４に格納させる。
【００８５】
次に、情報処理装置１０は、ステップＳ２において事前計算された入力テンソルを用いて、加算およびシフト演算のみで畳み込み演算処理を行う（Ｓ３）。より具体的には、情報処理装置１０のコンピュータは、処理部１２の畳み込み演算部１２２に、事前計算後において、所定のアルゴリズムにより予め２の累乗表現の形式に変換され、かつコードブック１２３に格納されている畳み込み演算に用いる可能性のある重みを示す重みテンソルと、メモリ１２４に格納された事前計算が行われた入力テンソルの各要素とを用いて、加算演算およびシフト演算のみで畳み込み演算処理を行わせる。
【００８６】
次に、情報処理装置１０は、ステップＳ３において畳み込み演算処理された入力テンソルを、出力テンソルとして出力する（Ｓ４）。より具体的には、情報処理装置１０のコンピュータは、出力部１３に、ステップＳ３において処理部１２により畳み込み演算処理が行われた入力テンソルの各要素を、出力テンソルとして出力させる。
【００８７】
図９は、図８に示すステップＳ３の畳み込み演算処理の詳細を示すフローチャートである。
【００８８】
ステップＳ３において、まず、情報処理装置１０のコンピュータは、畳み込み演算部１２２に、ステップＳ２において事前計算された入力テンソルを取得させる（Ｓ３１）。
【００８９】
次に、情報処理装置１０のコンピュータは、畳み込み演算部１２２に、コードブック１２３から重みテンソルを取得させる（Ｓ３２）。コードブック１２３に格納されている重みテンソルは、アルゴリズム１により予め２の累乗表現の形式に変換され、かつ畳み込み演算に用いる可能性のある重みである。本実施の形態では、コードブック１２３に格納されている重みテンソルは、低精度の重みテンソルとして２の累乗表現の形式に変換されている。畳み込み演算部１２２は、アドレスまたは指標により、コードブック１２３を参照し、事前計算された入力テンソルの各要素に対する畳み込み演算に必要な重みテンソルを取得することができる。
【００９０】
次に、情報処理装置１０のコンピュータは、畳み込み演算部１２２に、ステップＳ３２で取得した重みテンソルと、ステップＳ３１で取得した事前計算された入力テンソルとを用いて、加算演算およびシフト演算のみで畳み込み演算を行わせる（Ｓ３３）。
【００９１】
次に、情報処理装置１０のコンピュータは、畳み込み演算部１２２に、ステップＳ３３で行った畳み込み演算の結果に、バイアス項と１回前に更新または１回前に算出させた仮の出力テンソルを加算させ、仮の出力テンソルを更新させる（Ｓ３４）。
【００９２】
次に、情報処理装置１０のコンピュータは、畳み込み演算部１２２に、ステップＳ３１で取得した事前計算された入力テンソルの要素の数だけ畳み込み演算を行ったか否かを判定する（Ｓ３５）。事前計算された入力テンソルの要素の数だけ畳み込み演算が行われた場合（Ｓ３５でＹｅｓ）、情報処理装置１０のコンピュータは、出力部１３に、仮の出力テンソルを、畳み込み演算処理された出力テンソルとして出力させる（Ｓ３６）。
【００９３】
一方、事前計算された入力テンソルの要素の数だけ畳み込み演算が行われていない場合（Ｓ３５でＮｏ）、情報処理装置１０のコンピュータは、畳み込み演算部１２２に、ステップＳ３１の処理から再度行わせる。
【００９４】
［効果等］
以上のように、本実施の形態における情報処理装置１０によれば、畳み込み演算を、乗算演算を必要とせず加算演算およびシフト演算のみで行うことができるので、畳み込み演算の計算効率をより向上させて低消費電力化させることができる。より具体的には、本実施の形態の情報処理装置１０によれば、CNNのデータ表現として、ハードウェア効率の高い２の累乗表現形式を採用することで、畳み込み演算を乗算なしでシフト演算および加算演算のみで行うことができる。これにより、CNNにおいて最も計算量の多い部分である畳み込み層の計算コストを大幅に削減することができる。よって、CNNの畳み込み層で行われる畳み込み演算の計算効率をより向上させて、CNNが実装される装置の低消費電力化を図ることもできる。
【００９５】
また、本実施の形態の情報処理装置１０では、畳み込み演算に用いる可能性のある重みを２の累乗表現の形式に予め変換して、アドレスまたは指標が紐づけられた重みとして格納されているコードブック１２３を用いて、畳み込み演算を行う。コードブック１２３には、２の補数のビット値Ｂ（１以上の整数）とすると、重みは２Ｂ−１個の組み合わせからなる２の累乗表現の形式に変換された重みが格納されるので、比較的小さい。このように畳み込み演算を行う際に必要な重みを予め辞書的にコードブックとして保持できるので、畳み込み演算の畳み込み項を事前計算することを可能にする。例えば、一般的なCNNモデルの畳み込み層の畳み込み演算で必要とする演算回数を１／１００つまり少なくとも２桁現象させることができるなど、畳み込み演算の計算コストを削減することができるので、畳み込み演算の計算効率をより向上させることができる。
【００９６】
より詳細には、本実施の形態の情報処理装置１０では、以下の３つの特徴がある。第１に、畳み込み演算に用いる可能性のある重みテンソルWを低精度の重みテンソル
【数１７】
2018181313.tif 000019
で近似することで、Ｍ＝２Ｂ−１個の組み合わせからなる２の累乗表現の形式に変換された重みテンソルをコードブック１２３に予め用意できる。第２に、入力テンソルXの各要素のすべての組み合わせについて、２の累乗表現の形式であるテンソルPを事前計算する。テンソルPの事前計算は、特殊なシフト演算器であるShiftALU部１２１１またはアルゴリズム１を用いて行われる。第３に、アドレスまたは指標に従って選択した重みテンソル
【数１８】
2018181313.tif 000020
と事前計算されたテンソルPの各要素とをシフト演算および加算演算のみを用いて畳み込み演算したものを蓄積することで、畳み込み演算処理を行う。
【００９７】
このようにして、本実施の形態における情報処理装置１０は、CNNにおいて最も計算量の多い部分である畳み込み層の計算コストを大幅に削減することができる。
【００９８】
なお、本実施の形態の情報処理装置１０は、ShiftALU部１２１１またはアルゴリズム１を用いて、一般的なCNNモデルを、畳み込み演算を乗算なしで行うことができる、２の累乗表現に変換したShiftCNNモデルに変換しているとも表現できる。そして、ShiftCNNモデルでは、CNNの再学習が不要で、精度低下もない状態で、一般的なCNNモデルの畳み込み層で行われる畳み込み演算を、シフト演算および加算演算のみを用いて行うことができる。
【００９９】
ここで、ストライド１を有するフィルタカーネルについて、簡単に、出力チャンネルと入力チャンネルとの高さおよび幅を同一、すなわち
【数１９】
2018181313.tif 000021
と仮定する。この場合、一般的なCNNの畳み込み層では、
【数２０】
2018181313.tif 000022
の乗算が実行されて畳み込み演算が行われることになる。一方、本実施の形態の情報処理装置１０では、畳み込み層の畳み込み演算として、（PCHW）の演算のみを実行する。
【０１００】
また、
【数２１】
2018181313.tif 000023
であるので、演算回数による計算コストの削減量は、これらの比、すなわち
【数２２】
2018181313.tif 000024
で定量化できる。つまり、CNNを構成する各畳み込み層における演算数は、すべての乗算演算を２の累乗表現によるシフト演算に置き換えて行うことにより、
【数２３】
2018181313.tif 000025
だけ減少できる。
【０１０１】
ShiftALU部１２１１は、[P/2]回の１ビットずつの右シフト処理と符号反転処理とにより（P-1）回の演算を行う。つまり、ShiftALU部１２１１は、事前計算されたテンソルPを生成するのに必要なサイクル数をPの因数だけさらに減らせる。
【０１０２】
（実施例１）
情報処理装置１０の処理部１２であるShiftCNNの有効性について、大量の画像とその内容を表すタグで構成されているImageNet datasetを用いて広範な評価を行ったので、その評価結果を実施例１として説明する。
【０１０３】
＜評価対象＞
本実施例では、ShiftCNNモデルに変換される従来のCNNとして、画像分類に用いられる一般的なCNNモデルであるGoogleNetとResNetとSqueezeNetとを選択した。
【０１０４】
GoogleNetとResNet-50とは、事前にトレーニングされたモデルのサブセットとして、オープンソースのディープラーニングライブラリであるCaffeからダウンロードした。SqueezeNet v1.1およびResNet-18は、インターネットで公に利用可能なソースをダウンロードした。これら全てのCNNモデルは、その著者によってImageNet datasetを用いて予め学習されたものである。
【０１０５】
＜評価条件＞
これら全てのCNNモデルを図５に示したアルゴリズム１を用いて、浮動小数点精度を下げた２の累乗表現の形式にエミュレートすることによりShiftCNNモデルに変換した。そして、ImageNetの検証用データセットから切り取って縦横比を維持しつつ中央にさせた５万の画像を用いて、CaffeツールによりTop-1 AccuracyとTop-5 Accuracyを評価した。
【０１０６】
ここで、Top-1 Accuracyとは、入力された画像がどういう画像かを識別するタスクにおいて、識別結果のうちの第１候補すなわちトップ候補が正解と完全一致した正解率を意味する。Top-5 Accuracyとは、入力された画像がどういう画像かを識別するタスクにおいて、識別結果のうちの第５位までの画像の中に正解と完全一致したものが含まれている正解率を意味する。
【０１０７】
＜評価結果＞
図１０は、実施例１におけるImageNet datasetを用いて正解率を評価した評価結果を示す図である。図１０には、SqueezeNet、GoogleNet、ResNet-18およびResNet-50をShiftCNNモデルに変換後に、ImageNet datasetを用いてTop-1 AccuracyとTop-5 Accuracyとを評価した結果が示されている。
【０１０８】
また、図１０において、SqueezeNet base、GoogleNet base、ResNet-18 baseおよびResNet-50 baseは、ShiftCNNモデルに変換していない元のCNNモデルである。ResNetモデルに「*」のマークが付いているものは、ResNetモデルのうちの畳み込み層のみが２の累乗表現に変換されたShiftCNNモデルを示している。また、Bは、ビット幅を示し、上述した２の補数のビット値に該当する。また、Ｎは、１ビットの表現の自由度を示す次元数に該当し、図１０中では、shiftsと表現されている。
【０１０９】
図１０から、ShiftCNNモデルに変換されたCNNモデルは、B=4かつN>2の場合、正解率の低下すなわち精度低下が０．２９％未満であるのがわかる。また、ShiftCNNモデルに変換されたCNNモデルは、B=4かつN=2の場合、１％以内で正解率の低下すなわち精度低下を示している。これらから、正解率と計算の複雑さとは、トレードオフの関係があるように考えられる。
【０１１０】
なお、ShiftCNNモデルに変換されたCNNモデルは、B>4では、有意な精度向上は認められなかった。また、図１０から、ShiftCNNモデルに変換されたCNNモデルは、N=1の場合、有意に機能せず、再学習が必要であることを示唆し、従来の畳み込み層と同じ数の加算演算が必要となる。
【０１１１】
以上から、ShiftCNNモデルに変換されたCNNモデルは、B=4かつN>2であれば、再学習を行わなくても、元のCNNモデルと同等の正解率を得られることがわかった。
【０１１２】
つまり、CNNモデルは、図５に示すアルゴリズム１により、データ表現が２の累乗表現の形式であるShiftCNNモデルに変換することで、１％未満の正解率低下すなわち精度低下の範囲において、畳み込み演算を行えることがわかった。
【０１１３】
したがって、本開示の情報処理装置１０は、１％未満の正解率低下すなわち精度低下の範囲において、畳み込み演算を、加算演算およびシフト演算のみで行うことができるのがわかった。
【０１１４】
図１１は、実施例１の３つのCNNモデルにおける従来の畳み込み層に畳み込み演算に必要な乗算演算の数とShiftCNNに変換後に畳み込み演算に必要なシフト演算のサイクル数の比較を示す図である。なお、図１１に示すスピードアップは、シフト演算の数を従来の畳み込み層の畳み込み演算に必要な乗算演算の数で割ることで評価している。
【０１１５】
図１１からわかるように、SqueezeNetはフィルタカーネルHfWf>3を使用しないため、260倍のスピードアップしか達成していないのがわかる。一方、GoogleNetとResNet-18とはサイズ5とサイズ7のフィルタカーネルを使用しているため、約３桁のスピードアップを達成しているのがわかる。
【０１１６】
したがって、図１１から、従来のCNNモデルをShiftCNNモデルに変換することで、演算数を２桁以上減らせることができることがわかる。
【０１１７】
（実施例２）
実施例２では、図４に示すShiftALU部１２１１と、比較例として８ビットで乗算演算する算術乗算器とをRTL（Resister Transfer Level）を使用して設計し、Xilinx Zynq XA7Z010デバイス用にコンパイルした。Xilinx Zynq XA7Z010デバイスは、200MHzクロックレートで動作する自動車グレードのFPGAである。入力テンソルのビット幅は８ビットとし、ShiftALU部１２１１および算術乗算器は１６ビットで結果を出力するとした。また、ShiftALU部１２１１で用いるビット幅を示すBは4ビットであり、畳み込み層の深さはC= 512とした。
【０１１８】
図１２は、実施例２におけるFPGAを利用した場合の推定電力の比較を示す図である。
【０１１９】
図１２には、ShiftALU部１２１１に加えて、比較のため、DSPブロックを使用せずLUTのみを使用して実装した算術乗算器（Mult.UT）と、LUTを使用せずDSPブロックを使用して実装した算術乗算器（Mult.DSP）とが示されている。また、図１２には、利用しているルックアップテーブル（LUT）の数、フリップフロップ（FF）の数、デジタル信号処理ブロック（DSP）の数、３６KBブロックRAM（BRAM）の数および動的電力と、消費電力とが示されている。
【０１２０】
図１２から、ShiftALU部１２１１の動的電力の８５％が、BRAMメモリによって消散されたことがわかる。
【０１２１】
また、図１２には、同じ計算速度を有するために必要な等価電力を示す「Equiv. Power」が示されている。「Equiv. Power」は、RTLコードを記述し、電力シミュレーションを実行することで計算した。
【０１２２】
図１２によれば、畳み込み層の畳み込み演算を行う際のShiftALU部１２１１の消費電力は、算術乗算器（Mult.LUT）と比較して、１０分の１に減少していることがわかる。この結果は、乗算演算の複雑さがO（B2）であるのに対して、加算演算の複雑さがO（B）であるので、計算コストが大幅に少なくなることからもわかる。
【０１２３】
したがって、実施例２によれば、FPGAチップ上に実装されたShiftCNNモデルの畳み込み層の消費電力は１／１０程度減少させることができるのがわかった。これにより、従来のCNNモデルをShiftCNNモデルに変換することで、FPGAまたはASICチップ上で実現可能であることがわかる。
【０１２４】
以上のように、本開示に係る情報処理装置および情報処理方法によれば、畳み込み演算の計算効率をより向上させて低消費電力化させることができる。したがって、本開示に係る情報処理装置および情報処理方法を、FPGAまたはASICに実装するなど低消費の組み込みシステムに適用できるだけでなく、新しいタイプのDNNのアプリケーションに適用できる。
【０１２５】
（他の実施態様の可能性）
以上、実施の形態において本開示の情報処理装置および情報処理方法について説明したが、各処理が実施される主体や装置に関しては特に限定しない。ローカルに配置された特定の装置内に組み込まれたプロセッサーなど（以下に説明）によって処理されてもよい。またローカルの装置と異なる場所に配置されているクラウドサーバなどによって処理されてもよい。
【０１２６】
なお、本開示は、上記実施の形態に限定されるものではない。例えば、本明細書において記載した構成要素を任意に組み合わせて、また、構成要素のいくつかを除外して実現される別の実施の形態を本開示の実施の形態としてもよい。また、上記実施の形態に対して本開示の主旨、すなわち、請求の範囲に記載される文言が示す意味を逸脱しない範囲で当業者が思いつく各種変形を施して得られる変形例も本開示に含まれる。
【０１２７】
また、本開示は、さらに、以下のような場合も含まれる。
【０１２８】
（１）上記の装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【０１２９】
（２）上記の装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Large Scale Integration：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムＬＳＩは、その機能を達成する。
【０１３０】
（３）上記の装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【０１３１】
（４）また、本開示は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【０１３２】
（５）また、本開示は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Blu-ray(登録商標) Disc）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【０１３３】
また、本開示は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【０１３４】
また、本開示は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
【０１３５】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【産業上の利用可能性】
【０１３６】
本開示は、CNNを用いた情報処理方法、情報処理装置およびプログラムに利用でき、特にCNNの畳み込み層で行われる畳み込み演算を行う情報処理方法、情報処理装置およびプログラムをFPGAまたはASICに実装するなど低消費の組み込みシステムに利用できる。
【符号の説明】
【０１３７】
１０    情報処理装置
１１    入力部
１１ａ    入力テンソル
１２    処理部
１３    出力部
１３ａ    出力テンソル
１２１    事前計算部
１２２    畳み込み演算部
１２３    コードブック
１２３ａ    重みテンソル
１２４    メモリ
１２４ａ    事前計算後テンソル
１２４ｂ    バイアス項
１２５    制御部
１２１１    ShiftALU部
１２２１、１２２２    マルチプレクサ
１２２３    加算器
【図１】
2018181313.tif 000026
【図２】
2018181313.tif 000027
【図３】
2018181313.tif 000028
【図４】
2018181313.tif 000029
【図５】
2018181313.tif 000030
【図６】
2018181313.tif 000031
【図７】
2018181313.tif 000032
【図８】
2018181313.tif 000033
【図９】
2018181313.tif 000034
【図１０】
2018181313.tif 000035
【図１１】
2018181313.tif 000036
【図１２】
2018181313.tif 000037