(57)【要約】【課題】クロスバー回路の回路面積、消費電力を低減することが可能な畳み込みニューラルネットワークを提供する。【解決手段】マイクロコンピュータは、フィルタの畳み込み演算を行うために必要となる各プーリング演算結果を得るための入力値を選択して、クロスバー回路４４ａに入力する。クロスバー回路４４ａでは、各入力値に対して、メモリスタ５３を用いて各入力値から演算されるプーリング演算結果のフィルタ内の位置に対応する重みを付与しつつ、出力バー５１，５２にて加算する。出力バー５１、５２の出力は、演算増幅器５４ａにて、プーリング範囲に含まれる畳み込み演算結果の数で除算される。これにより、クロスバー回路４４ａにて、平均プーリング演算と、その平均プーリング演算結果に対する２フィルタの畳み込み演算とが同時に行わせることができる。【選択図】図９
2019016159.tif 000002
【特許請求の範囲】
【請求項１】
２次元に配列される入力値からなる入力データに対して、所定サイズの第１フィルタを所定のストライドで２次元方向にシフトさせつつ、各シフト位置において前記第１フィルタの畳み込み演算を行う第１畳み込み層（２２、２４）と、前記第１畳み込み層による、２次元に配列される畳み込み演算結果を入力値として、所定のプーリング範囲毎にプーリング演算を行うプーリング層（２８、２９）と、前記プーリング層による、２次元に配列されるプーリング演算結果を入力値として、所定サイズの第２フィルタを所定のストライドで２次元方向にシフトさせつつ、各シフト位置において前記第２フィルタの畳み込み演算を行う第２畳み込み層（２３、２５）と、を含む畳み込みニューラルネットワーク（２０）であって、
複数の入力バー（５０）と、それら複数の入力バーと交差する出力バー（５１、５２）と、複数の入力バーと出力バーとの各交点に設けられ、複数の入力バーに入力される各入力値に対して、重みを付与して出力バーに出力する複数の重み付与素子（５３）とを有するクロスバー回路（４４）と、
前記第２畳み込み層において、各シフト位置での前記第２フィルタの畳み込み演算を行うために必要となる各プーリング演算結果を得るために必要な入力値を、前記第１畳み込み層での演算結果から選択して、前記クロスバー回路の入力バーに入力する制御部（４０）と、を備え、
前記クロスバー回路では、入力バーに入力される各入力値に対して、それら各入力値から演算されるプーリング演算結果の前記第２フィルタ内の位置に対応する重みが付与されつつ、出力バーにおいて加算されて当該出力バーから出力され、
さらに、出力バーから出力される出力値が前記プーリング範囲に含まれる畳み込み演算結果の数で除算された値にする除算部（５４ａ）を有し、
前記クロスバー回路において、前記第１畳み込み層の畳み込み演算結果に対する平均プーリング演算と、その平均プーリング演算結果に対する前記第２フィルタの畳み込み演算とが同時に行われるように構成された畳み込みニューラルネットワーク。
【請求項２】
前記第２畳み込み層では、前記第２フィルタとして、複数のフィルタの畳み込み演算が行われ、
前記クロスバー回路には、前記複数のフィルタに応じた数の出力バーが設けられ、各出力バーから、プーリング演算及び前記複数のフィルタのそれぞれに対応する畳み込み演算後の出力値が出力される請求項１に記載の畳み込みニューラルネットワーク。
【請求項３】
前記クロスバー回路における重み付与素子には、外部にて行われる学習結果に基づく重みがそれぞれ設定される請求項１又は２に記載の畳み込みニューラルネットワーク。
【請求項４】
前記制御部は、前記第１畳み込み層での演算結果から選択される、前記第２畳み込み層において前記第２フィルタの各シフト位置での前記第２フィルタの畳み込み演算のために必要となる各プーリング演算結果を得るために必要なすべての入力値を、別々の前記入力バーに入力し、
前記クロスバー回路は、入力される前記第２フィルタのシフト位置毎のすべての入力値に対して、各入力値から演算されるプーリング演算結果の前記第２フィルタ内の位置に対応する重みを付与しつつ、出力バーにおいて加算する請求項１乃至３のいずれかに記載の畳み込みニューラルネットワーク。
【請求項５】
前記除算部は、前記クロスバー回路に入力される入力値と前記クロスバー回路から出力される出力値とのどちらかを、前記プーリング範囲に含まれる畳み込み演算結果の数で除算するものである請求項４に記載の畳み込みニューラルネットワーク。
【請求項６】
前記除算部は、前記重み付与素子が付与する重みが、前記プーリング範囲に含まれる畳み込み演算結果の数で除算した重みに修正され、その修正された重みが各入力値に付与されることによって具現化されるものである請求項４に記載の畳み込みニューラルネットワーク。
【請求項７】
前記制御部は、前記第１畳み込み層での演算結果から選択される、前記第２畳み込み層において前記第２フィルタの各シフト位置での前記第２フィルタの畳み込み演算のために必要となる各プーリング演算結果を得るために必要なすべての入力値を用いて、それぞれのプーリング演算の対象範囲に含まれる入力値の合計値を算出し、その算出した入力値の合計値を、それぞれ、前記入力バーに入力し、
前記クロスバー回路は、入力される入力値の合計値に対して、それぞれのプーリング演算結果の前記第２フィルタ内の位置に対応する重みを付与しつつ、出力バーにおいて加算する請求項１乃至３のいずれかに記載の畳み込みニューラルネットワーク。
【請求項８】
前記除算部は、前記クロスバー回路から出力される出力値を、前記プーリング範囲に含まれる畳み込み演算結果の数で除算するものである請求項７に記載の畳み込みニューラルネットワーク。
【請求項９】
前記除算部は、前記重み付与素子が付与する重みが、前記プーリング範囲に含まれる畳み込み演算結果の数で除算した重みに修正され、その修正された重みが各入力値に付与されることによって具現化されるものである請求項７に記載の畳み込みニューラルネットワーク。
【請求項１０】
前記プーリング範囲は、行方向と列方向との少なくとも一方において、隣接するプーリング範囲と一部重なるようにシフトされ、
前記制御部は、前記第２畳み込み層において前記第２フィルタの各シフト位置での前記第２フィルタの畳み込み演算のために必要となる各プーリング演算結果を得るための、各々のプーリング範囲を重ねた場合に、行方向と列方向との一方において、同じ重みが付与される入力値の複数の行又は入力値の複数の列を特定し、その特定した複数の行又は複数の列に含まれる対応する入力値同士を加算して、１行の入力値又は１列の入力値にまとめるまとめ処理を行い、前記まとめ処理により縮小された範囲に含まれる入力値を前記入力バーに入力し、
前記クロスバー回路において、入力される各入力値に対して、それぞれのプーリング演算結果の前記第２フィルタ内の位置に対応する重みを付与する際に、複数のプーリング範囲に属する入力値に対する重みとして、それら複数のプーリング範囲にそれぞれ付与される複数の重みを加算した加算重みが設定される請求項１乃至３のいずれかに記載の畳み込みニューラルネットワーク。
【請求項１１】
前記プーリング範囲は、行方向と列方向とにおいて、隣接するプーリング範囲と一部重なるようにシフトされ、
前記制御部は、前記第２畳み込み層において前記第２フィルタの各シフト位置での前記第２フィルタの畳み込み演算のために必要となる各プーリング演算結果を得るための、各々のプーリング範囲を重ねた場合に、行方向と列方向との一方において、同じ重みが付与される入力値の複数の行と入力値の複数の列との一方を特定し、その特定した複数の行又は複数の列に含まれる対応する入力値同士を加算して、１行の入力値又は１列の入力値にまとめる第１まとめ処理を行い、さらに、第１まとめ処理により縮小された範囲において、行方向と列方向との他方において、同じ重みが付与される入力値の複数の行と入力値の複数の列との他方を特定し、その特定した複数の行又は複数の列に含まれる対応する入力値同士を加算して、１行の入力値又は１列の入力値にまとめる第２まとめ処理を行い、前記第１まとめ処理及び第２まとめ処理により縮小された範囲に含まれる入力値を前記入力バーに入力し、
前記クロスバー回路において、入力される各入力値に対して、それぞれのプーリング演算結果の前記第２フィルタ内の位置に対応する重みを付与する際に、複数のプーリング範囲に属する入力値に対する重みとして、それら複数のプーリング範囲にそれぞれ付与される複数の重みを加算した加算重みが設定される請求項１乃至３のいずれかに記載の畳み込みニューラルネットワーク。
【請求項１２】
前記除算部は、前記クロスバー回路に入力される入力値と前記クロスバー回路から出力される出力値とのどちらかを、前記プーリング範囲に含まれる畳み込み演算結果の数で除算するものである請求項１１に記載の畳み込みニューラルネットワーク。
【請求項１３】
前記除算部は、前記重み付与素子が付与する重みが、前記プーリング範囲に含まれる畳み込み演算結果の数で除算した重みに修正され、その修正された重みが各入力値に付与されることによって具現化されるものである請求項１１に記載の畳み込みニューラルネットワーク。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、畳み込み層とプーリング層とを含む畳み込みニューラルネットワークに関する。
【背景技術】
【０００２】
近年、ディープニューラルネットワーク及びディープラーニングアルゴリズムを使用することにより、例えば画像認識の分野において、従来の機械学習による認識性能を遥かに凌駕する認識性能を得られることが実証されている。この際、ディープニューラルネットワークとして、概して畳み込みニューラルネットワークが用いられる。畳み込みニューラルネットワークは、局所領域（フィルタ）の畳み込み（Convolution)とプーリング(Pooling)とを繰り返して抽出した特徴を、全結合層を介して出力層に伝え、出力層から、ソフトマックス（Softmax）関数などにより、分類すべき各クラスに属する確からしさを示す出力値を出力するように構成される。
【０００３】
このような畳み込みニューラルネットワークでは、畳み込みやプーリングのために、多くの加算、乗算、及び除算などの演算が繰り返される。従って、畳み込みニューラルネットワークにおける演算をＣＰＵやＧＰＵを用いて行う場合、演算負荷が膨大となり、消費電力も増加するという問題がある。
【０００４】
そのため、このような演算を効率良く行うための専用のハードウエア回路の開発が進められている。そのハードウエア回路の一例として、例えば特許文献１や特許文献２に示されるような、印加電圧や通電電流によって異なる抵抗状態に設定することが可能な抵抗変化型メモリ（メモリスタ）を利用したクロスバー回路がある。
【０００５】
このクロスバー回路は、多数の入力バーと多数の出力バーとが交差するように配列され、各交点において入力バーと出力バーとがメモリスタを介して接続されることによって構成される。クロスバー回路の入力バーに入力値に応じた電圧信号を入力すると、各電圧信号はメモリスタによるコンダクタンスを重みとして乗じられた後、出力バー上において積算される。このため、例えば、上述した畳み込みニューラルネットワークのある畳み込み層における、フィルタの各要素の重みに対応したコンダクタンスを各メモリスタに設定することにより、畳み込み演算をクロスバー回路にて実行させることが可能となる。
【０００６】
また、上述したプーリングを行う主な手法として、プーリング範囲に含まれる複数の畳み込み演算結果の中の最大値を選択する最大プーリングと、それら複数の畳み込み演算結果の平均値を算出する平均プーリングがある。近年では、ＣＰＵやＧＰＵなどのデジタル回路での演算が容易、畳み込みニューラルネットワークのより迅速な学習が可能、などの理由から最大プーリングが主流となっている。そのため、非特許文献１に示されるように、畳み込み演算だけをクロスバー回路で実行し、最大プーリングのためのプーリング演算を含むその他の処理をデジタル回路で行うものもある。
【０００７】
一方、平均プーリングを用いた場合も、認識性能の点では、最大プーリングと遜色はない。この平均プーリングのためのプーリング演算は、上述したメモリスタのコンダクタンスによる重みをすべて等しく設定することで、クロスバー回路を利用してアナログ領域で行うことができる。そのような例が、非特許文献２に示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】国際公開第２０１６／０６８９５３号
【特許文献２】国際公開第２０１７／０１００４９号
【非特許文献】
【０００９】
【非特許文献１】Y. Wang, et al. “Low Power Convolutional Neural Networks on a Chip,” ISCAS’2016.
【非特許文献２】C. Yakopcic, et al. “Memristor based neuromorphic circuit for ex-situ training of multi-layer neural network algorithms”, In 2015 International Joint Conference on Neural Networks (IJCNN) (pp. 1-7). IEEE.
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上述した非特許文献２では、畳み込み演算を行うクロスバー回路の出力値（畳み込み演算結果）が、プーリング演算を行うクロスバー回路に入力される。すなわち、非特許文献２では、プーリング演算用に専用のクロスバー回路が設けられている。このため、クロスバー回路が増加することにより、クロスバー回路の面積や消費電力の増大を招くとの問題がある。
【００１１】
本発明は、上述した点に鑑みてなされたものであり、クロスバー回路の回路面積、消費電力を低減することが可能な畳み込みニューラルネットワークを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明による畳み込みニューラルネットワーク（２０）は、２次元に配列される入力値からなる入力データに対して、所定サイズの第１フィルタを所定のストライドで２次元方向にシフトさせつつ、各シフト位置において前記第１フィルタの畳み込み演算を行う第１畳み込み層（２２、２４）と、前記第１畳み込み層による、２次元に配列される畳み込み演算結果を入力値として、所定のプーリング範囲毎にプーリング演算を行うプーリング層（２８、２９）と、前記プーリング層による、２次元に配列されるプーリング演算結果を入力値として、所定サイズの第２フィルタを所定のストライドで２次元方向にシフトさせつつ、各シフト位置において前記第２フィルタの畳み込み演算を行う第２畳み込み層（２３、２５）と、を含むものであって、
複数の入力バー（５０）と、それら複数の入力バーと交差する出力バー（５１、５２）と、複数の入力バーと出力バーとの各交点に設けられ、複数の入力バーに入力される各入力値に対して、重みを付与して出力バーに出力する複数の重み付与素子（５３）とを有するクロスバー回路（４４）と、
前記第２畳み込み層において、各シフト位置での前記第２フィルタの畳み込み演算を行うために必要となる各プーリング演算結果を得るために必要な入力値を、前記第１畳み込み層での演算結果から選択して、前記クロスバー回路の入力バーに入力する制御部（４０）と、を備え、
前記クロスバー回路では、前記入力バーに入力される各入力値に対して、それら各入力値から演算されるプーリング演算結果の前記第２フィルタ内の位置に対応する重みが付与されつつ、前記出力バーにおいて加算されて当該出力バーから出力され、
さらに、前記出力バーから出力される出力値が前記プーリング範囲に含まれる畳み込み演算結果の数で除算された値にする除算部（５４ａ）を有し、
前記クロスバー回路において、前記第１畳み込み層の畳み込み演算結果に対する平均プーリング演算と、その平均プーリング演算結果に対する前記第２フィルタの畳み込み演算とが同時に行われるように構成される。
【００１３】
上述した構成により、本発明による畳み込みニューラルネットワークでは、クロスバー回路において、前記第１畳み込み層の畳み込み演算結果に対する平均プーリング演算と、その平均プーリング演算結果に対する前記第２フィルタの畳み込み演算とが同時に行われる。従って、プーリング演算専用のクロスバー回路を設ける必要がないので、クロスバー回路の回路面積や消費電力を大幅に低減することが可能になる。
【００１４】
上記括弧内の参照番号は、本発明の理解を容易にすべく、後述する実施形態における具体的な構成との対応関係の一例を示すものにすぎず、なんら本発明の範囲を制限することを意図したものではない。
【００１５】
また、上述した特徴以外の、特許請求の範囲の各請求項に記載した技術的特徴に関しては、後述する実施形態の説明及び添付図面から明らかになる。
【図面の簡単な説明】
【００１６】
【図１】実施形態による畳み込みニューラルネットワークの構造の一例を概念的に示す図である。
【図２】フィルタの畳み込み演算の一例について説明するための説明図である。
【図３】畳み込み演算結果に対するプーリング演算の一例について説明するための説明図である。
【図４】プーリング演算の結果の一例を示す図である。
【図５】図１の畳み込みニューラルネットワークを、クロスバー回路を用いて具現化した場合の構成を示す構成図である。
【図６】クロスバー回路について説明するための説明図である。
【図７】クロスバー回路について説明するための別の説明図である。
【図８】クロスバー回路について説明するためのさらに別の説明図である。
【図９】プーリング演算とフィルタの畳み込み演算とを、同じクロスバー回路において実行するための第１実施形態の構成について説明するための説明図である。
【図１０】第１実施形態において、クロスバー回路にて、プーリング演算とフィルタの畳み込み演算とを同時に行わせるために、マイクロコンピュータが実行する処理を示すフローチャートである。
【図１１】プーリング演算とフィルタの畳み込み演算とを、同じクロスバー回路において実行するための第２実施形態の構成について説明するための説明図である。
【図１２】第２実施形態において、クロスバー回路にて、プーリング演算とフィルタの畳み込み演算とを同時に行わせるために、マイクロコンピュータが実行する処理を示すフローチャートである。
【図１３】第３実施形態における、プーリング演算の対象範囲を定めるウインドウと、そのプーリング演算結果に対して畳み込まれるフィルタ範囲との関係を示す図である。
【図１４】フィルタ範囲に含まれる各行の入力値に対する重みを、フィルタによって各プーリング演算の対象範囲に付与される重みを用いて表わした結果を示す図である。
【図１５】同じ重みを有する複数の行をまとめ対象として１行にまとめる第１まとめ処理について説明するための説明図である。
【図１６】第１まとめ処理により、同じ重みを有する複数の行を１行にまとめた後の範囲に属する入力値を示す図である。
【図１７】図１６に示す各入力値を、第１プーリング層に入力された当初の各入力値を用いて表した結果を示す図である。
【図１８】第１まとめ処理後の各列の入力値に対する重みを、フィルタによって各プーリング演算の対象範囲に付与される重みを用いて表わした結果を示す図である。
【図１９】第１まとめ処理後の範囲において同じ重みを有する複数の列をまとめ対象として１列にまとめる第２まとめ処理について説明するための説明図である。
【図２０】第２まとめ処理により、同じ重みを有する複数の列を１列にまとめた後の範囲に属する入力値を示す図である。
【図２１】図２０に示す各入力値を、第１プーリング層に入力された当初の各入力値を用いて表した結果を示す図である。
【図２２】プーリング演算とフィルタの畳み込み演算とを、同じクロスバー回路において実行するための第３実施形態の構成について説明するための説明図である。
【図２３】第３実施形態において、クロスバー回路にて、フィルタの畳み込み演算とプーリング演算とを同時に行わせるために、マイクロコンピュータが実行する処理を示すフローチャートである。
【発明を実施するための形態】
【００１７】
（第１実施形態）
本発明に係る畳み込みニューラルネットワーク（Convolution Neural Network）の第１実施形態を、図面を参照しつつ説明する。以下に説明する実施形態では、入力データとしての画像を、複数のカテゴリに分類する用途に適用した例について説明する。ただし、畳み込みニューラルネットワークは、その他の用途に適用することも可能である。例えば、畳み込みニューラルネットワークは、画像を取り込んで、その画像に映し出された物体や人の検出、人の顔の認識、あるいは、道路標識の認識などにも適用することが可能である。
【００１８】
図１は、本実施形態による畳み込みニューラルネットワーク２０の構造の一例を概念的に示している。畳み込みニューラルネットワーク２０は、基本的に、コンボリューション層とプーリング層とを交互に接続した構造を有する。例えば、図１に示す例では、畳み込みニューラルネットワーク２０は、第１コンボリューション層２１、第２コンボリューション層２２、第３コンボリューション層２３、第４コンボリューション層２４、第５コンボリューション層２５、第６コンボリューション層２６、及び、第７コンボリューション層２７からなる７層のコンボリューション層を有している。そして、第２コンボリューション層２２と第３コンボリューション層２３との間に、第１プーリング層２８が設けられ、第４コンボリューション層２４と第５コンボリューション層２５との間に、第２プーリング層２９が設けられている。
【００１９】
このように、畳み込みニューラルネットワーク２０においては、コンボリューション層の次に必ずプーリング層が接続されるとは限らず、複数のコンボリューション層を接続した後に、プーリング層が接続されることもある。また、コンボリューション層２１〜２７及びプーリング層２８〜２９の層数は、図１に示す例に限られない。一般的には、コンボリューション層２１〜２７及びプーリング層２８〜２９の層数を増やすほど、認識性能をより向上させることができる。
【００２０】
第１〜第７コンボリューション層２１〜２７は、それぞれ入力される入力データ（画像）１０に対して、それぞれのコンボリューション層２１〜２７ごとに定められた所定のサイズ（例えば３×３、５×５）を有するフィルタを畳み込む演算を行う。入力データ１０としての画像は、２次元に配列された入力値（ピクセル値）を有する。各コンボリューション層２１〜２７におけるフィルタの畳み込み演算は、一般的な画像処理でのフィルタの畳み込み、すなわち、小サイズの画像（フィルタ）を入力画像に２次元的に畳み込んで、画像をぼかしたり、エッジを強調したりするものと基本的に同じである。具体的には、第１〜第７コンボリューション層２１〜２７では、フィルタとしての小サイズの画像の各ピクセル値（重み）と、入力データ１０としての画像におけるフィルタと同サイズの領域の各ピクセル値とをそれぞれ掛け合わせた各乗算結果を積算することで、畳み込み演算が行われる。この際、入力データ１０が複数枚の画像を含む場合には、それら複数枚の入力画像の同じ領域において同じフィルタによる畳み込み演算が行われ、それらの畳み込み演算による演算結果がさらに積算される。このようにして計算された積算結果は、ＲｅＬＵやｔａｎｈなどの活性化関数を経て、各コンボリューション層２１〜２７のフィルタ位置に対応する出力値となる。
【００２１】
なお、フィルタの重みは学習によって決定される。学習は、本実施形態では、畳み込みニューラルネットワーク２０を、一旦コンピュータ上に構築して、教師あり学習により行われる。学習の対象は、上述したフィルタの重みの他、後述するバイアス入力に対する重みの大きさが含まれる。学習が終了すると、その学習値が、後述するクロスバー回路に設定される。
【００２２】
第１〜第７コンボリューション層２１〜２７において使用されるフィルタは、例えば図２に示すように、所定のストライドＳで入力画像上を２次元方向にシフトされていき、各シフト位置において、上述した畳み込み演算が行われる。これにより、各コンボリューション層２１〜２７において、入力画像全体に渡ってそれぞれのフィルタのシフト位置に応じた出力値が作成される。それらの出力値を、フィルタのシフト位置に対応するように２次元的にまとめた結果が、各コンボリューション層２１〜２７による出力データとなり、その一例が、図３に示されている。なお、図３に示す例では、各コンボリューション層２１〜２７の出力データのサイズが、フィルタのサイズ（Ｋ×Ｋ）分だけ、当初の入力データのサイズ（Ｔ×Ｔ）よりも縮小され、［Ｔ−Ｋ＋１］×［Ｔ−Ｋ＋１］となった例を示している。
【００２３】
このように、各コンボリューション層２１〜２７の出力データは、それぞれ２次元的に配列される画像の形を取り、一般的には特徴マップと呼ばれる。この特徴マップは、各コンボリューション層２１〜２７において使用されるフィルタの数と同じ数だけ生成される。このため、通常は、第２コンボリューション層２２以降の各コンボリューション層２２〜２７には、複数枚の入力画像（特徴マップ）を含む入力データが入力される。また、第１コンボリューション層２１においても、入力画像がカラー画像である場合には、ＲＧＢに対応する３枚の画像が入力される。一方、入力画像がグレースケール画像である場合には、第１コンボリューション層２１には、１枚の画像が入力されるだけである。
【００２４】
本実施形態では、第６、第７コンボリューション層２６、２７において使用されるフィルタのサイズは１×１に設定されている。つまり、第６、第７コンボリューション層２６、２７では、各入力画像における同じ位置のピクセル値が、フィルタによる重みを掛け合わされた上で加算される、１×１の畳み込み演算が行われる。これら第６、第７コンボリューション層２６、２７として、いわゆる全結合層を用いることも可能であるが、本実施形態では、第６、第７コンボリューション層２６、２７を含む各コンボリューション層２１〜２７における畳み込み演算を、クロスバー回路を用いてアナログ領域において実行するために、上述したように１×１の畳み込み演算を行うコンボリューション層を採用している。全結合層を採用すると、入力バーの数が過大となり、１つのクロスバー回路で対応することが困難になるためである。クロスバー回路に関しては、後に詳細に説明する。
【００２５】
第１、第２プーリング層２８、２９は、入力画像のどの位置でフィルタとの適合性が高かったかを示す情報の一部を捨てることにより、入力画像内に現れる特徴の位置変化に対する不変性を高めるとともに、画像のサイズを縮小して後の計算量を削減できるようにするためのものである。
【００２６】
具体的には、第１、第２プーリング層２８、２９は、図３に示すように、入力画像に対して所定のサイズ（Ｌ×Ｍ、具体的には２×２、３×３など）のウインドウを定め、そのウインドウ内の入力値（ピクセル値）を平均化（平均プーリング）したり、ウインドウ内の入力値（ピクセル値）の最大値を採用（最大プーリング）したりすることにより、入力画像の複数の入力値（ピクセル値）を統合する。このプーリング演算では、プーリングの対象範囲を定めるウインドウが重ならないように、ウインドウをシフトさせることが多い。そのため、図３に示す例では、ウインドウの行方向のストライドＳＣの大きさをＳ×Ｌとし、列方向のストライドＳＬの大きさをＳ×Ｍとしている。この結果、プーリング層２８、２９から出力される画像のサイズは、図４に示すように、ウインドウのサイズ（Ｌ×Ｍ）に応じて縮小される。一例として、ウインドウのサイズが２×２であり、ウインドウが重ならないように２ピクセルのストライドでシフトした場合には、プーリングにより入力画像のサイズは１／４に縮小される。ただし、プーリング範囲を定めるウインドウが一部重なるように、ウインドウを行方向及び／又は列方向にシフトさせても良い。また、このようなプーリング演算は、各入力画像（特徴マップ）毎に行われるので、プーリング演算前後の入力画像の枚数は不変である。
【００２７】
そして、プーリング層２８、２９から出力される画像は、後段のコンボリューション層２３、２５の入力画像となる。それぞれのコンボリューション層２３、２５は、入力画像に対して、図２を用いて説明したようなフィルタの畳み込み演算を行う。
【００２８】
本実施形態では、第１、第２プーリング層２８、２９の少なくとも１つにおけるプーリング演算を、その後段のコンボリューション層２３、２５における畳み込み演算を行うクロスバー回路４４において同時に実施する点に特徴がある。この点については、後に詳細に説明する。なお、畳み込み演算と同時に行われるプーリング演算として、クロスバー回路を用いてアナログ領域で行うべく、平均プーリングが採用される。
【００２９】
出力層３０は、例えば、ソフトマックス関数による正規化により、分類すべき複数のカテゴリ毎に、入力データ１０としての画像が属する確率を出力するように構成される。従って、出力層３０が出力する確率の中で最も高い確率に対応するカテゴリを選択することにより、入力データ１０としての画像を、複数のカテゴリに分類することができる。
【００３０】
次に、上述した構造を有する畳み込みニューラルネットワーク２０を、クロスバー回路を用いて具現化するための構成について図５を参照して説明する。図５に示すように、畳み込みニューラルネットワーク２０を具現化するための構成要素として、本実施形態では、主に、マイクロコンピュータ４０、Ｄ／Ａ変換回路４３、クロスバー回路４４、及びＡ／Ｄ変換回路４５を備えている。
【００３１】
最初に、クロスバー回路４４について、図６〜図８に基づいて説明する。図６に示すように、クロスバー回路４４は、複数の入力バー５０と、複数の出力バー５１、５２と、複数の重み付与素子としてのメモリスタ５３と、複数の差動演算増幅器５４とを有する。
【００３２】
複数の入力バー５０には、マイクロコンピュータ４０によって、入力画像における、上述したフィルタと同サイズの領域の各ピクセル値に対応する入力信号（電圧信号）が入力される。複数の出力バー５１、５２は、複数の入力バー５０とそれぞれ交差するように設けられる。
【００３３】
これらの入力バー５０及び出力バー５１、５２は、例えば図７に示すように、ＣＭＯＳ素子が形成されたＣＭＯＳ基板上に形成され得る。この場合、入力バー５０には、ＣＭＯＳ素子からなる入力ニューロン５５を介して、上述したピクセル値に対応する電圧信号が入力されるように構成される。入力バー５０と出力バー５１との交点には、重み付与素子としてのメモリスタ５３が設けられ、入力バー５０と出力バー５１とは、メモリスタ５３を介して接続されている。
【００３４】
メモリスタ５３は、印加電圧や通電電流によって、最小値と最大値との間で、異なる抵抗状態に設定することが可能な抵抗変化型メモリである。例えば、メモリスタ５３のコンダクタンスは、図示しない電圧印加回路を用いて、負の書込電圧を印加することにより増加させることができ、正の書込電圧を印加することにより減少させることができる。そして、メモリスタ５３は、正負の書込電圧以上の電圧が印加されない限り、設定された抵抗状態（コンダクタンス）を維持する。このようなメモリスタ５３として使用可能な素子としては、Pt/TiO2/Pt金属酸化物素子、相変化メモリ、磁気トンネル接合メモリ、などがある。
【００３５】
図７に示す構成を、電気回路的に示すと図８のようになる。図８に示すように、出力バー５１に接続される出力ニューロン５６を構成するＣＭＯＳ素子によって演算増幅器が形成されている。さらに、この演算増幅器の入出力間に抵抗Ｒが接続されることにより、加算器が構成されている。このため、図８に示すように、入力ニューロン５５から入力バー５０にそれぞれ入力された電圧信号Ｖ１、Ｖ２は、メモリスタ５３によるコンダクタンスＧ１、Ｇ２がそれぞれ掛け合わされた上で、出力バー５１に接続された加算器において加算される。なお、この加算結果は、加算器にてＲ倍される。このようにして、出力ニューロン５６からは、以下の数式１に示すように、各入力バー５０の電圧信号Ｖ１、Ｖ２、…と、メモリスタ５３のコンダクタンスＧ１、Ｇ２、…との乗算結果が積算され、さらにＲ倍された結果が出力される。
（数１）
出力ニューロンの出力電圧＝ＲΣＶｉＧｉ
図６に示すように、出力バー５１は、差動演算増幅器５４の非反転入力端子に接続され、出力バー５２は、差動演算増幅器５４の反転入力端子に接続されている。差動演算増幅器５４は、ＣＭＯＳ基板内のＣＭＯＳ素子を用いて構成され得る。なお、図６においては、図８に示した加算器は省略されている。さらに、図６では、上述した活性化関数としての処理を行う回路も省略されている。実際には、加算器５７は差動演算増幅器５４の入力側において、出力バー５１，５２のそれぞれに設けられ、活性化関数処理回路は差動演算増幅器５４の出力側に設けられる。このように、ＣＭＯＳ素子によって構成される集積回路には、加算器５７、差動演算増幅器５４、及び活性化関数処理回路などが含まれる。
【００３６】
本実施形態では、差動演算増幅器５４の非反転入力端子及び反転入力端子に、それぞれ出力バー５１、５２を接続しているので、フィルタとして、正の重みだけでなく、負の重みも利用して畳み込み演算を行うことが可能になる。すなわち、ある入力信号に対して正の重みを掛け合わせる場合には、非反転入力端子に接続された出力バー５１と入力バー５０との間に設けられたメモリスタ５３のコンダクタンスを、反転入力端子に接続された出力バー５２と入力バー５０との間に設けられたメモリスタ５３のコンダクタンスよりも、設定しようとしている正の重み分だけ大きく設定すれば良い。逆に、ある入力信号に対して負の重みを掛け合わせる場合には、反転入力端子に接続された出力バー５２と入力バー５０との間に設けられたメモリスタ５３のコンダクタンスを、非反転入力端子に接続された出力バー５１と入力バー５０との間に設けられたメモリスタ５３のコンダクタンスよりも、設定しようとしている負の重み分だけ大きく設定すれば良い。
【００３７】
従って、本実施形態では、図６に示すように、２本の出力バー５１、５２を１組として、その１組の出力バー５１、５２と入力バー５０との間のメモリスタ５３に対して、該当するコンボリューション層２１〜２７において使用される、それぞれのフィルタ１、２、３、…に対応する重みが設定される。
【００３８】
マイクロコンピュータ４０は、ＣＰＵ４１、ＲＡＭ４２、ＲＯＭなどを備え、例えば、ＲＯＭに記憶されたプログラムに従い、種々の処理を実施する。なお、以下においては、第１コンボリューション層２１を対象とした処理について説明するが、マイクロコンピュータ４０は、畳み込み演算とコンボリューション演算とを同じクロスバー回路４４において同時に実行するコンボリューション層を除き、他のコンボリューション層２２〜２７に対しても原則として同様の処理を行なう。
【００３９】
まず、マイクロコンピュータ４０は、入力データ１０としての画像において、フィルタの畳み込み演算を行う領域を定め、その領域に含まれる各ピクセルのピクセル値に応じたデジタル信号をＤ／Ａ変換回路４３に出力する。これにより、Ｄ／Ａ変換回路４３は、畳み込み演算が行われる領域の各ピクセル値に応じたアナログ信号（電圧信号）をクロスバー回路４４へ出力する。
【００４０】
さらに、マイクロコンピュータ４０は、クロスバー回路４４における演算処理が終了して、出力が出されるタイミングで、Ａ／Ｄ変換回路４５からの出力を取り込む処理を実行する。この際、Ａ／Ｄ変換回路４５は、第１コンボリューション層２１において使用されるフィルタ数と同数の、フィルタのあるシフト位置での畳み込み演算、活性化関数による処理を経た出力をデジタル信号に変換して出力している。マイクロコンピュータ４０は、Ａ／Ｄ変換回路４５から出力されたデジタル信号を、複数のフィルタ毎に区別して、ＲＡＭ４２にそれぞれ格納する。
【００４１】
そして、マイクロコンピュータ４０は、入力画像において、フィルタの畳み込み演算を行う領域を所定のストライドだけシフトさせ、そのシフト後の領域に含まれるピクセル値に対応するデジタル信号を出力するとともに、上述したのと同様の処理を行う。これを、入力画像のすべての領域でフィルタのシフトが完了するまで繰り返す。これにより、第１コンボリューション層２１により作成された、フィルタ数と同数の特徴マップを示すデジタルデータがＲＡＭ４２に保存される。
【００４２】
次に、本実施形態の特徴に係る、コンボリューション層２３、２５におけるフィルタの畳み込み演算と、プーリング層２８、２９におけるプーリング演算とを、同じクロスバー回路４４ａにおいて同時に実行するための構成について説明する。以下に説明する構成は、第３コンボリューション層２３と第１プーリング層２８と、第５コンボリューション層２５と第２プーリング層２９との少なくとも一方において採用される。ただし、以下においては、説明の便宜のため、第３コンボリューション層２３と、第１プーリング層２８とに対して、プーリング演算とフィルタの畳み込み演算とを同時に実行するための構成を採用した例に関して説明する。
【００４３】
本実施形態においては、図９に示すように、マイクロコンピュータ４０が、第１プーリング層２８の前段の第２コンボリューション層２２から出力された出力データから、第１プーリング層２８の後段の第３コンボリューション層２３においてフィルタの各シフト位置での当該フィルタの畳み込み演算のために必要となる各プーリング演算結果を得るために必要なすべての入力値を選択し、別々の入力バー５０に入力するように構成される。
【００４４】
例えば、図９に示した例では、プーリング演算の対象を定めるウインドウ範囲は、２×２になっている。このウインドウは、図９に示すように、隣接するウインドウと重ならないように、行方向及び列方向にシフトされる。例えば図の左上のウインドウ範囲には、４個の入力値ｉ１１、ｉ１２、ｉ２１、ｉ２２が属し、これら４個の入力値ｉ１１、ｉ１２、ｉ２１、ｉ２２の平均値が、左上のウインドウ範囲におけるプーリング演算結果となる。
【００４５】
そして、図９に示す例では、第３コンボリューション層２３のフィルタのサイズは、３×３である。このため、図９において、フィルタ範囲には、プーリング演算の対象を定めるウインドウが９個含まれている。
【００４６】
クロスバー回路４４ａには、選択されたすべての入力値を入力可能な本数の入力バー５０が設けられる。例えば、図９に示す例において、プーリング演算の対象範囲を定めるウインドウのサイズをＬ×Ｍ、フィルタのサイズをＫ×Ｋとすると、入力バー５０の本数は、（Ｋ×Ｋ）×（Ｌ×Ｍ）＋１となる。ただし、入力画像が複数毎ある場合には、入力バー５０の本数は、その入力画像の枚数を乗じた数となる。
【００４７】
第３コンボリューション層には複数のフィルタ（１〜Ｎ）が設定されており、クロスバー回路４４ａには、そのフィルタの数Ｎに応じた本数（２×Ｎ）の出力バー５１、５２が設けられる。そして、クロスバー回路４４ａのメモリスタ５３には、フィルタ毎に、各フィルタの重みに応じたコンダクタンスが設定されている。この際、同じウインドウ範囲に属する入力値に対しては、同じ重みに応じたコンダクタンスが設定される。例えば図９には、あるフィルタに関して、入力値ｉ１１、ｉ１２、ｉ２１、ｉ２２に対しては重みｗ１１、入力値ｉ１３、ｉ１４、ｉ２３、ｉ２４に対しては重みｗ１２、入力値ｉ１５、ｉ１６、ｉ２５、ｉ２６に対しては重みｗ１３、そして、入力値ｉ５５、ｉ５６、ｉ６５、ｉ６６に対しては重みｗ３３に応じたコンダクタンスが設定されることが例示されている。
【００４８】
つまり、本実施形態では、プーリング演算の各ウインドウ範囲内に属する入力値に対しては、フィルタ内における各ウインドウ範囲の位置に対応する共通の重みを付与するのである。これにより、同じウインドウ範囲内に属する入力値がそれぞれ共通の重みを付与されて出力バー５１、５２に出力されることで、各入力値の合計値に同じ重みを付与したのと同等の結果を得ることができる。
【００４９】
クロスバー回路４４ａに設けられた各差動演算増幅器５４ａは、入力バー５０に入力された各入力値に対するフィルタの畳み込み演算結果を、プーリング演算の対象範囲を定めるウインドウのサイズ（Ｌ×Ｍ）で除算する除算部としての機能を備えている。図９に示す例では、ウインドウのサイズが２×２であるため、差動演算結果に対して１／４を乗じる例を示している。この除算部としての機能により、入力バー５０にそれぞれ入力された、各プーリング演算の対象範囲に含まれる入力値の合計値が平均化される。このため、クロスバー回路４４ａからは、第２コンボリューション層２２の出力データに対して、第１プーリング層２８での平均プーリング演算と、そのプーリング演算結果に対する第３コンボリューション層２３でのフィルタの畳み込み演算を行った結果が出力されることになる。
【００５０】
但し、差動演算結果に１／（Ｌ×Ｍ）を乗じる除算部としての機能は、各差動演算増幅器５４ａに担わせるのではなく、例えば、クロスバー回路４４ａからの出力データを受け取るマイクロコンピュータ４０に担わせ、マイクロコンピュータ４０においてデジタル演算にて除算しても良い。あるいは、クロスバー回路４４ａの各メモリスタ５３に、学習した重みをプーリング範囲に含まれる畳み込み演算結果の数で除算した修正重みを設定することにより、各メモリスタ５３が除算部としての機能を担うようにしても良い。さらに、マイクロコンピュータ４０に除算部としての機能を担わせるために、マイクロコンピュータ４０が、各入力値をクロスバー回路４４ａの入力バー５０に入力する前に、各入力値をプーリング範囲に含まれる畳み込み演算結果の数で除算した入力値に修正し、その修正した入力値をクロスバー回路４４ａに入力させるようにしても良い。
【００５１】
このようにクロスバー回路４４ａを構成し、かつ、マイクロコンピュータ４０が、第２コンボリューション層２２から出力された出力データから、第３コンボリューション層２３においてフィルタの各シフト位置での当該フィルタの畳み込み演算のために必要となる各プーリング演算結果を得るために必要なすべての入力値を選択し、別々の入力バー５０に入力することにより、平均プーリング演算と、各シフト位置でのフィルタの畳み込み演算とが、クロスバー回路４４ａにおいて同時に行われるようになる。従って、プーリング演算結果を一時的に保存するためのＲＡＭ等のメモリや、プーリング演算を行うための専用のクロスバー回路を設ける必要がなくなる。その結果、クロスバー回路の回路面積や、消費電力を大幅に低減することが可能になる。
【００５２】
次に、プーリング演算と、各シフト位置でのフィルタの畳み込み演算とをクロスバー回路４４ａにて同時に行うために、マイクロコンピュータ４０が行う処理を、図１０のフローチャートに基づいて説明する。
【００５３】
まず、ステップ１００では、入力画像から、クロスバー回路４４ａの入力バー５０へ入力する入力値（ピクセル値）のセットを選択する。この入力値のセットの選択では、上述したように、第１プーリング層２８の前段の第２コンボリューション層２２から出力された出力データから、第１プーリング層２８の後段の第３コンボリューション層２３においてフィルタの各シフト位置での当該フィルタの畳み込み演算のために必要となる各プーリング演算結果を得るために必要なすべての入力値を選択する。
【００５４】
続くステップＳ１１０では、選択した入力値のセットをクロスバー回路４４ａへ出力する。すると、Ｄ／Ａ変換回路４３が、出力された入力値のセットにそれぞれ対応するデジタル信号をアナログ信号に変換して、クロスバー回路４４ａに入力する。なお、クロスバー回路４４ａのそれぞれのメモリスタ５３には、各フィルタの重みに相当するコンダクタンスが設定されている。
【００５５】
ステップＳ１２０では、マイクロコンピュータ４０は、クロスバー回路４４ａからの出力値を取り込む。実際には、クロスバー回路４４ａから出力されたアナログ信号が、Ａ／Ｄ変換回路４５によってデジタル信号に変換され、マイクロコンピュータ４０は、その変換されたデジタル信号を取り込む。この際、Ａ／Ｄ変換回路４５は、コンボリューション層２３、２５において使用されるフィルタ数と同数の、フィルタのあるシフト位置での畳み込み演算、平均プーリング演算による処理を経た出力をデジタル信号に変換して出力している。マイクロコンピュータ４０は、ステップＳ１３０において、Ａ／Ｄ変換回路４５から出力されたデジタル信号を、複数のフィルタ毎に区別して、ＲＡＭ４２にそれぞれ格納する。
【００５６】
ステップＳ１４０では、入力画像の全範囲をカバーするようにフィルタをシフトし、入力値のセットの選択はすべて完了したか否かを判定する。未だ未選択の入力値のセットがある場合には、ステップＳ１００の処理に戻り、上述した処理を繰り返す。
【００５７】
（第２実施形態）
次に、本発明に係る畳み込みニューラルネットワークの第２実施形態について、図面を参照しつつ説明する。本実施形態の畳み込みニューラルネットワークを具現化するための構成は、基本的に、第１実施形態の畳み込みニューラルネットワークを具現化するための構成と同じである。従って、構成に関する説明は省略する。
【００５８】
本実施形態は、上述した第１実施形態よりも、プーリング演算とフィルタの畳み込み演算とを同時に行うクロスバー回路を小型化することが可能である点に特徴がある。以下、クロスバー回路を小型化するための工夫点について、詳細に説明する。なお、本実施形態においても、第３コンボリューション層２３と、第１プーリング層２８とに対して、プーリング演算とフィルタの畳み込み演算とを同時に実行するための構成を採用した例に関して説明する。
【００５９】
上述した第１実施形態では、第１プーリング層２８の前段の第２コンボリューション層２２から出力された出力データから、第１プーリング層２８の後段の第３コンボリューション層２３においてフィルタの各シフト位置での当該フィルタの畳み込み演算のために必要となる各プーリング演算結果を得るために必要なすべての入力値を選択して、クロスバー回路４４ａの入力バー５０に入力するように構成された。従って、クロスバー回路４４ａの入力バー５０の本数は、上述したように、（Ｋ×Ｋ）×（Ｌ×Ｍ）＋１となる。
【００６０】
それに対して、本実施形態では、マイクロコンピュータ４０が、クロスバー回路４４ｂの入力バー５０に入力する入力値を選択する点は、第１実施形態と同様であるが、プーリング演算において、同じウインドウ範囲に属する入力値の合計値を、マイクロコンピュータ４０において事前に算出する点が異なる。
【００６１】
具体的には、図１１に示すように、各ウインドウ範囲に属する入力値は、事前に合計値が算出され、その算出された合計値がクロスバー回路４４ｂの各々の入力バー５０に入力される。これにより、本実施形態では、クロスバー回路４４ｂの入力バー５０の本数を、第１実施形態よりも大幅に削減することができる。すなわち、第１実施形態と同様に、プーリング演算の対象範囲を定めるウインドウのサイズをＬ×Ｍ、フィルタのサイズをＫ×Ｋとすると、本実施形態における入力バー５０の本数は、Ｋ×Ｋ＋１となり、第１実施形態に比較して、約１／（Ｌ×Ｍ）に削減することができる。
【００６２】
そして、図１１のクロスバー回路４４ｂの各メモリスタ５３には、それぞれのフィルタの重みに応じたコンダクタンスが設定されているので、出力バー５１、５２に接続された各差動演算増幅器５４ａからは、それぞれのフィルタの畳み込み演算結果が出力される。さらに、差動演算増幅器５４ａは、第１実施形態と同様に、入力バー５０に入力された各入力値に対するフィルタの畳み込み演算結果を、プーリング演算の対象範囲を定めるウインドウのサイズで除算する除算部としての機能を備えている。従って、本実施形態においても、クロスバー回路４４ｂからは、第２コンボリューション層２２の出力データに対して、第１プーリング層２８での平均プーリング演算と、そのプーリング演算結果に対する第３コンボリューション層２３でのフィルタの畳み込み演算の両方を行った結果が出力されることになる。
【００６３】
なお、図１１に示す例では、差動演算増幅器５４ａが除算部として、プーリング範囲に含まれる畳み込み演算結果の数で除算しているが、第１実施形態の場合と同様に、クロスバー回路４４ｂからの出力データを受け取るマイクロコンピュータ４０が除算部として、出力データに含まれる各値をプーリング範囲に含まれる畳み込み演算結果の数で除算しても良い。あるいは、クロスバー回路４４ａの各メモリスタ５３に、学習した重みをプーリング範囲に含まれる畳み込み演算結果の数で除算した修正重みを設定することにより、各メモリスタ５３が除算部としての機能を担うようにしても良い。
【００６４】
次に、プーリング演算と、各シフト位置でのフィルタの畳み込み演算とをクロスバー回路４４ｂにて同時に行うために、マイクロコンピュータ４０が行う処理を、図１２のフローチャートに基づいて説明する。なお、図１２のフローチャートでは、図１０のフローチャートと同様の処理を行うステップには、同じステップ番号が付与されている。
【００６５】
まず、ステップＳ１００では、入力画像から、クロスバー回路４４ｂの入力バー５０へ入力する入力値（ピクセル値）のセットを選択する。この入力値のセットの選択では、図１０のフローチャートのステップＳ１００と同様に、第１プーリング層２８の前段の第２コンボリューション層２２から出力された出力データから、第１プーリング層２８の後段の第３コンボリューション層２３においてフィルタの各シフト位置での当該フィルタの畳み込み演算のために必要となる各プーリング演算結果を得るために必要なすべての入力値を選択する。
【００６６】
続くステップＳ１０５では、選択したすべての入力値に基づき、それぞれのプーリング演算の対象範囲毎に、入力値の合計値を算出する。続くステップＳ１１５では、それぞれのプーリング演算の対象範囲毎の入力値の合計値をクロスバー回路４４ｂへ出力する。すると、Ｄ／Ａ変換回路４３が、出力された入力値の合計値にそれぞれ対応するデジタル信号をアナログ信号に変換して、クロスバー回路４４ｂに入力する。
【００６７】
ステップＳ１２０では、マイクロコンピュータ４０は、クロスバー回路４４ｂからの出力値を取り込む。実際には、クロスバー回路４４ｂから出力されたアナログ信号が、Ａ／Ｄ変換回路４５によってデジタル信号に変換され、マイクロコンピュータ４０は、その変換されたデジタル信号を取り込む。この際、Ａ／Ｄ変換回路４５は、第３コンボリューション層２３において使用されるフィルタ数と同数の、フィルタのあるシフト位置での畳み込み演算、平均プーリング演算による処理を経た出力をデジタル信号に変換して出力している。マイクロコンピュータ４０は、ステップＳ１３０において、Ａ／Ｄ変換回路４５から出力されたデジタル信号を、複数のフィルタ毎に区別して、ＲＡＭ４２にそれぞれ格納する。
【００６８】
ステップＳ１４０では、入力画像の全範囲をカバーするようにフィルタをシフトし、入力値のセットの選択はすべて完了したか否かを判定する。未だ未選択の入力値のセットがある場合には、ステップＳ１００の処理に戻り、上述した処理を繰り返す。
【００６９】
（第３実施形態）
次に、本発明に係る畳み込みニューラルネットワークの第３実施形態について、図面を参照しつつ説明する。本実施形態の畳み込みニューラルネットワークを具現化するための構成は、基本的に、第１、第２実施形態の畳み込みニューラルネットワークを具現化するための構成と同じである。従って、構成に関する説明は省略する。
【００７０】
本実施形態では、所定のサイズを有するプーリング演算の対象範囲を定めるウインドウが、行方向と列方向との少なくとも一方において、隣接するプーリング範囲と一部重なるようにシフトされることを前提としている。なお、以下においては、ウインドウが、行方向及び列方向において、隣接するウインドウと一部重なる例について説明する。
【００７１】
そして、本第３実施形態では、上述した前提の下で、クロスバー回路４４ｃのサイズを小型化することができるようにした点に特徴がある。以下、第３実施形態の特徴点について、図面を参照しつつ詳細に説明する。なお、本実施形態においても、第１プーリング層２８と第３コンボリューション層２３とに、プーリング演算とフィルタの畳み込み演算とを同時に行う構成を採用した列を説明する。
【００７２】
図１３は、プーリング演算の対象範囲を定めるウインドウと、そのプーリング演算結果に対して畳み込まれるフィルタ範囲との関係を示している。なお、図１３において、ウインドウのサイズは３×３であり、フィルタのサイズも３×３である。さらに、図１３では、フィルタによって、各プーリング演算の対象範囲に付与される重みを、それぞれのフィルタ内のウインドウの位置に応じて、ｗ１１〜ｗ１３、ｗ２１〜ｗ２３、ｗ３１〜ｗ３３にて表している。また、図１３では、第１プーリング層２８の前段の第２コンボリューション層２２から出力され、第１プーリング層２８に入力される各入力値に対する重みを、その入力値の位置に応じて、Ｗ１１〜Ｗ１７、Ｗ２１〜Ｗ２７、Ｗ３１〜Ｗ３７、Ｗ４１〜Ｗ４７、Ｗ５１〜Ｗ５７、Ｗ６１〜Ｗ６７、Ｗ７１〜Ｗ７７にて表している。
【００７３】
なお、各プーリング演算の対象範囲に付与される重みｗ１１〜ｗ１３、ｗ２１〜ｗ２３、ｗ３１〜ｗ３３及び各入力値に対する重みＷ１１〜Ｗ１７、Ｗ２１〜Ｗ２７、Ｗ３１〜Ｗ３７、Ｗ４１〜Ｗ４７、Ｗ５１〜Ｗ５７、Ｗ６１〜Ｗ６７、Ｗ７１〜Ｗ７７とも、便宜的に、図１３に示すフィルタの左上を基準位置とし、行方向（紙面右方向）にずれるほど、列番号が増加し、列方向（紙面下方向）にずれるほど、行番号が増加するようにしている。
【００７４】
本実施形態では、クロスバー回路４４ｃの小型化のため、以下に示す事前処理を行って、クロスバー回路４４ｃの各メモリスタ５３に設定する重みを算出するとともに、各入力バー５０に入力する入力値を算出するための算出式を定める。
【００７５】
図１４には、上述した各入力値に対する重みＷ１１〜Ｗ１７、Ｗ２１〜Ｗ２７、Ｗ３１〜Ｗ３７、Ｗ４１〜Ｗ４７、Ｗ５１〜Ｗ５７、Ｗ６１〜Ｗ６７、Ｗ７１〜Ｗ７７が、フィルタによって各プーリング演算の対象範囲に付与される重みｗ１１〜ｗ１３、ｗ２１〜ｗ２３、ｗ３１〜ｗ３３を用いて表されている。図１３及び図１４から理解されるように、各入力値に対する重みＷ１１〜Ｗ１７、Ｗ２１〜Ｗ２７、Ｗ３１〜Ｗ３７、Ｗ４１〜Ｗ４７、Ｗ５１〜Ｗ５７、Ｗ６１〜Ｗ６７、Ｗ７１〜Ｗ７７は、その入力値がいくつのウインドウに属するかによって決まる。すなわち、１つのウインドウにしか属さない入力値に対する重みは、その１つのウインドウで定義されるプーリング演算の対象範囲に付与される重みとなる。２つのウインドウに属する入力値に対する重みは、その２つのウインドウで定義されるプーリング演算の対象範囲にそれぞれ付与される重みを加算した重みとなる。４つのウインドウに属する入力値に対する重みは、その４つのウインドウで定義されるプーリング演算の対象範囲にそれぞれ付与される重みを加算した重みとなる。
【００７６】
ここで、本実施形態では、ウインドウが隣接するウインドウと一部重なるように行方向及び列方向にシフトされるので、上述したように、各入力値に対する重みＷ１１〜Ｗ１７、Ｗ２１〜Ｗ２７、Ｗ３１〜Ｗ３７、Ｗ４１〜Ｗ４７、Ｗ５１〜Ｗ５７、Ｗ６１〜Ｗ６７、Ｗ７１〜Ｗ７７を、各プーリング演算の対象範囲に付与される重みｗ１１〜ｗ１３、ｗ２１〜ｗ２３、ｗ３１〜ｗ３３を用いて表したとき、すべての入力値に対して同じフィルタ重みを持つ複数の行と同じ重みを持つ複数の列が発生する。例えば、図１４に示すように、第１行の各入力値に対する重みＷ１１〜Ｗ１７と第２行の各入力値に対する重みＷ２１〜Ｗ２７とは、対応する各重み要素がすべて等しい。同様に、第６行の各入力値に対する重みＷ６１〜Ｗ６７と第７行の各入力値に対する重みＷ７１〜Ｗ７７も対応する各重み要素がすべて等しくなっている。
【００７７】
そこで、本実施形態では、図１５に示すように、各入力値に対して同じ重みが付与される複数の行をまとめ対象として、１行にまとめる。このように、同じ重みが付与される複数の行を１行にまとめる処理を第１まとめ処理と呼ぶ。
【００７８】
図１５には、第１まとめ処理後の、各入力値に対する重みも示されている。上述したように、第１行と第２行が１行にまとめられた結果、第１行の各入力値に対する重みＷ１１〜Ｗ１７のみが残され、第２行の重みＷ２１〜Ｗ２７は削除されている。同様に、第６行と第７行とが１行にまとめられた結果、第６行の重みＷ６１〜Ｗ６７のみが残され、第７行の重みＷ７１〜Ｗ７７は削除されている。
【００７９】
そして、本実施形態では、同じ重みを有する複数の行を１行にまとめる処理を行ったことに対応して、入力値をまとめる処理も実施する。このように、第１まとめ処理には、同じ重み要素を持つ複数の行を１行にまとめるだけではなく、その複数の行の入力値をまとめる処理も含まれる。入力値のまとめ処理では、同一の重みを有する複数の行が１行にまとめられたので、このまとめられた複数の行に属する各行の対応する入力値を加算するようにして、１行にまとめられた重みに対応する１行の入力値を算出するための算出式を定める。このように、まとめられた複数の行に属する各行の対応する入力値を加算して、複数の行から残された行の重みに対する入力値とすることにより、まとめ処理前後で同じ演算結果を得ることが可能となる。
【００８０】
図１６及び図１７に基づき、入力値のまとめ処理をより具体的に説明する。図１６に示すように、第１まとめ処理後の各行の重みＷ１１〜Ｗ７７に対応する各行の入力値をＩ１１〜Ｉ１７、Ｉ３１〜３７、Ｉ４１〜Ｉ４７、Ｉ５１〜Ｉ５７、及びＩ６１〜Ｉ６７と表すこととする。図１７は、第１まとめ処理後の各行の入力値Ｉ１１〜Ｉ１７、Ｉ３１〜３７、Ｉ４１〜Ｉ４７、Ｉ５１〜Ｉ５７及びＩ６１〜Ｉ６７を、第２コンボリューション層２２により出力され、第１プーリング層２８に入力される、当初の各入力値ｉ１１〜ｉ１７、ｉ２１〜ｉ２７、ｉ３１〜ｉ３７、ｉ４１〜ｉ４７、ｉ５１〜ｉ５７、ｉ６１〜ｉ６７、ｉ７１〜ｉ７７を用いて表したものである。
【００８１】
第１まとめ処理では、図１５に示されるように、３行目〜５行目の重みＷ３１〜Ｗ３７、Ｗ４１〜Ｗ４７、Ｗ５１〜Ｗ５７は、上述したように、まとめ対象とはなっていない。そのため、図１７に示すように、第１まとめ処理後の２〜４行目の入力値Ｉ３１〜Ｉ３７、Ｉ４１〜Ｉ４７、Ｉ５１〜Ｉ５７は、それぞれ、まとめ処理前の３〜５行目の入力値ｉ３１〜ｉ３７、ｉ４１〜ｉ４７、ｉ５１〜ｉ５７に等しい。一方、第１まとめ処理により、第１行と第２行の重みＷ１１〜Ｗ１７、Ｗ２１〜Ｗ２７が、第１行により１行分の重みＷ１１〜Ｗ１７にまとめられている。このため、その第１行の重みＷ１１〜Ｗ１７に対応する１行目の入力値Ｉ１１〜１７は、図１７に示すように、当初の第１行、第２行の入力値の要素同士を加算して算出するように算出式が定められる。さらに、第１まとめ処理により、第６行と第７行の重みＷ６１〜Ｗ６７、Ｗ７１〜Ｗ７７が、第６行の１行分の重みＷ６１〜Ｗ６７にまとめられている。このため、その第６行の重みに対応する５行目の入力値Ｉ６１〜Ｉ６７は、図１７に示すように、当初の第６行、第７行の入力値の要素同士を加算して算出するように算出式が定められる。
【００８２】
このように、本実施形態では、第１まとめ処理によって、同じ重みを有する複数の行を１行にまとめるとともに、そのまとめ対象となった行の入力値の要素同士を加算して、入力値の算出式を定める。そして、第１まとめ処理後の各行の重みを、クロスバー回路４４ｃのメモリスタ５３に設定しておく。実際に画像認識が行われるときには、マイクロコンピュータ４０が、図１７に示す算出式に従って算出した入力値をクロスバー回路４４ｃの入力バー５０に入力するようにすれば、入力バー５０の本数を削減でき、クロスバー回路４４ｃを小型化することができる。
【００８３】
上述したような第１まとめ処理を行うだけでも、クロスバー回路４４ｃの小型化を図ることが可能である。しかし、更なるクロスバー回路４４ｃの小型化を図るため、上述した第１まとめ処理後に、同じ重みを有する複数の列を１列にまとめつつ、そのまとめ対象となった列の入力値の要素同士を加算して、入力値の算出式を定める第２まとめ処理を実行しても良い。
【００８４】
以下、第２まとめ処理について、図１８〜図２３に基づき、具体的に説明する。図１８は、第１まとめ処理後の各入力値に対する重みを各列毎に示したものである。この図１８に示すように、第１まとめ処理後の第１列の重みＷ１１、Ｗ３１、Ｗ４１、Ｗ５１、Ｗ６１と第２列の重みＷ１２、Ｗ３２、Ｗ４２、Ｗ５２、Ｗ６２は、対応する各要素がすべて等しくなっている。同様に、第１まとめ処理後の第６列の重みＷ１６、Ｗ３６、Ｗ４６、Ｗ５６、Ｗ６６と第７列の重みＷ１７、Ｗ３７、Ｗ４７、Ｗ５７、Ｗ６７も対応する各要素がすべて等しくなっている。
【００８５】
そこで、本実施形態では、図１９に示すように、第１まとめ処理後の範囲を対象として、さらに、同じ重みを有する複数の列をまとめ対象として、１列にまとめる第２まとめ処理を実施する。
【００８６】
第２まとめ処理後の範囲が、図１９に示されている。図１９に示す例では、第１列及び第２列が１列にまとめられて、第１列の重みＷ１１、Ｗ３１、Ｗ４１、Ｗ５１、Ｗ６１のみが残され、第２列の重みＷ１２、Ｗ３２、Ｗ４２、Ｗ５２、Ｗ６２は削除されている。同様に、第６列と第７列とが１列にまとめられて、第６列の重みＷ１６、Ｗ３６、Ｗ４６、Ｗ５６、Ｗ６６のみが残され、第７列の重みＷ１７、Ｗ３７、Ｗ４７、Ｗ５７、Ｗ６７は削除されている。
【００８７】
さらに、本実施形態では、第２まとめ処理として、第１まとめ処理後の範囲において同じ重みを有する複数の列を１列にまとめる処理を行ったことに対応して、それら複数の列の入力値をまとめる処理も実施する。入力値のまとめ処理では、同一のフィルタ重みを有する複数の列が１列にまとめられたので、まとめられた複数の列に対応する複数の入力値の列の要素同士を加算するようにして、入力値を算出するための算出式を定める。このように、第１まとめ処理後の範囲において、同じ重み要素を持つ複数の列を１列にまとめるとともに、まとめられた複数の列に対応する複数の列の入力値を加算して、複数の列から残された列の重みに対応する入力値とすることにより、第２まとめ処理前後で同じ演算結果を得ることが可能となる。
【００８８】
図２０及び図２１に基づき、第２まとめ処理における、入力値のまとめ処理をより具体的に説明する。図２０に示すように、第２まとめ処理において、同じ重みを持つ複数の列をまとめた後の第１列の入力値をＩ’１１、Ｉ’３１、Ｉ’４１、Ｉ’５１、Ｉ’６１、第２列の入力値をＩ’１３、Ｉ’３３、Ｉ’４３、Ｉ’５３、Ｉ’６３、第３列の入力値をＩ’１４、Ｉ’３４、Ｉ’４４、Ｉ’５４、Ｉ’６４、第４列の入力値をＩ’１５、Ｉ’３５、Ｉ’４５、Ｉ’５５、Ｉ’６５、第５列の入力値をＩ’１６、Ｉ’３６、Ｉ’４６、Ｉ’５６、Ｉ’６６と表すこととする。図２１は、第２まとめ処理における、同じ重みを持つ複数の列をまとめた後の各列の入力値Ｉ’１１、Ｉ’３１、Ｉ’４１、Ｉ’５１、Ｉ’６１、Ｉ’１３、Ｉ’３３、Ｉ’４３、Ｉ’５３、Ｉ’６３、Ｉ’１４、Ｉ’３４、Ｉ’４４、Ｉ’５４、Ｉ’６４、Ｉ’１５、Ｉ’３５、Ｉ’４５、Ｉ’５５、Ｉ’６５、Ｉ’１６、Ｉ’３６、Ｉ’４６、Ｉ’５６、Ｉ’６６を、第１まとめ処理後の各入力値Ｉ１１〜Ｉ１７、Ｉ３１〜Ｉ３７、Ｉ４１〜Ｉ４７、Ｉ５１〜Ｉ５７、Ｉ６１〜Ｉ６７、さらに、当初の各入力値ｉ１１〜ｉ１７、ｉ２１〜ｉ２７、ｉ３１〜ｉ３７、ｉ４１〜ｉ４７、ｉ５１〜ｉ５７、ｉ６１〜ｉ６７、ｉ７１〜ｉ７７との関係を示している。
【００８９】
第２まとめ処理において、３列目の重みＷ１３、Ｗ３３、Ｗ４３、Ｗ５３、Ｗ６３、４列目の重みＷ１４、Ｗ３４、Ｗ４４、Ｗ５４、Ｗ６４、及び５列目の重みＷ１５、Ｗ３５、Ｗ４５、Ｗ５５、Ｗ６５は、上述したように、第２まとめ処理の対象とはなっていない。そのため、図２１に示すように、２列目の入力値Ｉ’１３、Ｉ’３３、Ｉ’４３、Ｉ’５３、Ｉ’６３、３列目の入力値Ｉ’１４、Ｉ’３４、Ｉ’４４、Ｉ’５４、Ｉ’６４、及び４列目の入力値Ｉ’１５、Ｉ’３５、Ｉ’４５、Ｉ’５５、Ｉ’６５は、それぞれ、第１まとめ処理後の範囲の３列目の入力値Ｉ１３、Ｉ３３、Ｉ４３、Ｉ５３、Ｉ６３、４列目の入力値Ｉ１４、Ｉ３４、Ｉ４４、Ｉ５４、Ｉ６４、及び５列目の入力値Ｉ１５、Ｉ３５、Ｉ４５、Ｉ５５、Ｉ６５に等しい。一方、図１９に示すように、第２まとめ処理により、第１列の重みＷ１１、Ｗ３１、Ｗ４１、Ｗ５１、Ｗ６１と第２列の重みＷ１２、Ｗ３２、Ｗ４２、Ｗ５２、Ｗ６２が、１列分の重みＷ１１、Ｗ３１、Ｗ４１、Ｗ５１、Ｗ６１にまとめられている。このため、図２１に示すように、第２まとめ処理後の範囲の１列目の入力値Ｉ’１１、Ｉ’３１、Ｉ’４１、Ｉ’５１、Ｉ’６１は、第１まとめ処理後の範囲の第１列及び第２列の入力値の要素同士を加算して算出するように算出式が定められる。さらに、図１９に示すように、第２まとめ処理により、第６列の重みＷ１６、Ｗ３６、Ｗ４６、Ｗ５６、Ｗ６６と第７列の重みＷ１７、Ｗ３７、Ｗ４７、Ｗ５７、Ｗ６７が、１列分の重みＷ１６、Ｗ３６、Ｗ４６、Ｗ５６、Ｗ６６にまとめられている。このため、図２１に示すように、第２まとめ処理後の範囲の５列目の入力値Ｉ’１６、Ｉ’３６、Ｉ’４６、Ｉ’５６、Ｉ’６６は、第１まとめ処理後の範囲の第６列及び第７列の入力値の要素同士を加算して算出するように算出式が定められる。
【００９０】
このように、本実施形態では、第１及び第２まとめ処理によって、同じ重みを有する複数の行を１行にまとめ、さらに複数の列を１列にまとめる。その際、まとめ対象となった同じ重みを有する複数の行の入力値の各要素を加算して、まとめた行に対する入力値の算出式を定める。さらに、まとめ対象となった同じ重みを有する複数の列の入力値の各要素を加算して、まとめた列に対する入力値の算出式を定める。そして、図１９に示す、第１及び第２まとめ処理後の範囲の入力値に対するそれぞれの重みを、図２２のクロスバー回路４４ｃのメモリスタ５３に設定する。
【００９１】
実際に画像認識が行われるときには、マイクロコンピュータ４０が、図２１に示す算出式に従って、第１及び第２まとめ処理後の範囲に対応する入力値Ｉ’１１、Ｉ’３１、Ｉ’４１、Ｉ’５１、Ｉ’６１、Ｉ’１３、Ｉ’３３、Ｉ’４３、Ｉ’５３、Ｉ’６３、Ｉ’１４、Ｉ’３４、Ｉ’４４、Ｉ’５４、Ｉ’６４、Ｉ’１５、Ｉ’３５、Ｉ’４５、Ｉ’５５、Ｉ’６５、Ｉ’１６、Ｉ’３６、Ｉ’４６、Ｉ’５６、Ｉ’６６を算出して、クロスバー回路４４ｃの入力バー５０に入力する。
【００９２】
このように、本実施形態では、第１プーリング層２８の前段の第２コンボリューション層２２が出力する入力画像の入力値に対して、事前に第１及び第２まとめ処理を実施することにより、第３コンボリューション層２３におけるフィルタの畳み込み演算を行う範囲を縮小することができる。その結果、クロスバー回路４４ｃに入力する入力値の数を減少させることができる。従って、本実施形態によれば、プーリング演算の対象範囲を定めるウインドウが、行方向と列方向との少なくとも一方において、隣接するプーリング範囲と一部重なるようにシフトされる場合に、効果的に、クロスバー回路４４ｃの小型化を図ることができる。
【００９３】
そして、図２２のクロスバー回路４４ｃの各メモリスタ５３には、それぞれのフィルタ１〜Ｎの重みに応じたコンダクタンスが設定されているので、出力バー５１、５２に接続された各差動演算増幅器５４ａからは、それぞれのフィルタ１〜Ｎの畳み込み演算結果が出力される。さらに、差動演算増幅器５４ａは、第１、第２実施形態と同様に、入力バー５０に入力された各入力値に対するフィルタの畳み込み演算結果を、プーリング演算の対象範囲を定めるウインドウのサイズで除算する除算部としての機能を備えている。従って、本実施形態においても、クロスバー回路４４ｃからは、第２コンボリューション層２２の出力データを入力画像として、第１プーリング層２８での平均プーリング演算と、そのプーリング演算結果に対する第３コンボリューション層２３でのフィルタの畳み込み演算の両方を行った結果が出力されることになる。
【００９４】
また、図２２に示す例では、差動演算増幅器５４ａが除算部として、プーリング範囲に含まれる畳み込み演算結果の数で除算しているが、第１実施形態の場合と同様に、クロスバー回路４４ｃからの出力データを受け取るマイクロコンピュータ４０が、除算部として、出力データに含まれる各値をプーリング範囲に含まれる畳み込み演算結果の数で除算しても良い。あるいは、クロスバー回路４４ｃの各メモリスタ５３に、学習した重みをプーリング範囲に含まれる畳み込み演算結果の数で除算した修正重みを設定することにより、各メモリスタ５３が除算部としての機能を担うようにしても良い。さらに、マイクロコンピュータ４０に除算部としての機能を担わせるために、マイクロコンピュータ４０が、各入力値をクロスバー回路４４ｃの入力バー５０に入力する前に、各入力値をプーリング範囲に含まれる畳み込み演算結果の数で除算した入力値に修正し、その修正した入力値をクロスバー回路４４ｃに入力させるようにしても良い。
【００９５】
次に、クロスバー回路４４ｃにて、フィルタの畳み込み演算とプーリング演算とを同時に行わせるために、本実施形態のマイクロコンピュータ４０が実行する処理を、図２３のフローチャートに基づいて説明する。
【００９６】
まず、ステップＳ１００では、入力画像から、クロスバー回路４４ｃの入力バー５０へ入力する入力値（ピクセル値）のセットを選択する。この入力値のセットの選択では、第１、第２実施形態と同様に、第１プーリング層２８の前段の第２コンボリューション層２２から出力された出力データから、第１プーリング層２８の後段の第３コンボリューション層２３においてフィルタの各シフト位置での当該フィルタの畳み込み演算のために必要となる各プーリング演算結果を得るために必要なすべての入力値を選択する。
【００９７】
続くステップＳ１０８では、選択したすべての入力値に基づき、図２１に示す算出式に従い、第１及び第２まとめ処理後のフィルタ内の各位置の入力値を算出する。なお、図２１に示す入力値の算出式は、図１３を用いて説明した各種の条件の下で成立するものである。換言すれば、各種の条件が異なれば、入力値の算出式も異なったものとなる。この入力値の算出式は、事前処理において設定され、マイクロコンピュータ４０のメモリに保存されている。
【００９８】
続くステップＳ１１８では、算出したフィルタ内の各位置の入力値をクロスバー回路４４ｃへ出力する。すると、Ｄ／Ａ変換回路４３が、出力された入力値にそれぞれ対応するデジタル信号をアナログ信号に変換して、クロスバー回路４４ｃに入力する。
【００９９】
ステップＳ１２０では、マイクロコンピュータ４０は、クロスバー回路４４ｃからの出力値を取り込む。実際には、クロスバー回路４４ｃから出力されたアナログ信号が、Ａ／Ｄ変換回路４５によってデジタル信号に変換され、マイクロコンピュータ４０は、その変換されたデジタル信号を取り込む。この際、Ａ／Ｄ変換回路４５は、第３コンボリューション層２３において使用されるフィルタ数と同数の、フィルタのあるシフト位置での畳み込み演算、平均プーリング演算による処理を経た出力をデジタル信号に変換して出力している。マイクロコンピュータ４０は、ステップＳ１３０において、Ａ／Ｄ変換回路４５から出力されたデジタル信号を、複数のフィルタ毎に区別して、ＲＡＭ４２にそれぞれ格納する。
【０１００】
ステップＳ１４０では、入力画像の全範囲をカバーするようにフィルタをシフトし、入力値のセットの選択はすべて完了したか否かを判定する。未だ未選択の入力値のセットがある場合には、ステップＳ１００の処理に戻り、上述した処理を繰り返す。
【０１０１】
以上、本発明の好ましい実施形態について説明したが、本発明は上述した実施形態になんら制限されることなく、本発明の主旨を逸脱しない範囲において、種々変形して実施することが可能である。
【０１０２】
例えば、上述した第３実施形態では、第１まとめ処理により、同じ重みを有する複数の行を１行にまとめるとともに、それら複数の行の入力値の要素同士を加算するように、入力値の算出式を定めた。その後、第２まとめ処理により、第１まとめ処理後の範囲において、同じ重みを有する複数の列を１列にまとめるとともに、まとめ対象となった複数の列の入力値の要素同士を加算するように、入力値の算出式を定めるものであった。
【０１０３】
しかしながら、必ずしも第１まとめ処理と第２まとめ処理の両方を行わなくとも良い。換言すれば、同じ重みを有する複数の行又は複数の列をまとめつつ、そのまとめた複数の行又は複数の列の入力値の要素同士を加算する算出式を定めるだけでも良い。この場合も、クロスバー回路４４ｃを小型化することができる。
【０１０４】
さらに、第１まとめ処理と第２まとめ処理の両方を行う場合、その順序は、上述した第３実施形態に示す例に限られない。すなわち、先に、同じ重みを有する複数の列を１列にまとめるとともに、まとめ対象となった複数の列の入力値の要素同士を加算する入力値の算出式を定める第２まとめ処理を行い、その後、第２まとめ処理後の範囲において、同じ重みを有する複数の行を１行にまとめるとともに、まとめ対象となった複数の行入力値の要素同士を加算する入力値の算出式を定めるようにしても良い。
【符号の説明】
【０１０５】
１０：入力データ、２０：畳み込みニューラルネットワーク、２１〜２７：第１〜第７コンボリューション層、２８：第１プーリング層、２９：第２プーリング層、３０：出力層、４０：マイクロコンピュータ、４３：Ｄ／Ａ変換回路、４４：クロスバー回路、４５：Ａ／Ｄ変換回路、５０：入力バー、５１、５２：出力バー、５３：重み付与素子、５４：差動演算増幅器、５５：入力ニューロン、５６：出力ニューロン
【図１】
2019016159.tif 000003
【図２】
2019016159.tif 000004
【図３】
2019016159.tif 000005
【図４】
2019016159.tif 000006
【図５】
2019016159.tif 000007
【図６】
2019016159.tif 000008
【図７】
2019016159.tif 000009
【図８】
2019016159.tif 000010
【図９】
2019016159.tif 000011
【図１０】
2019016159.tif 000012
【図１１】
2019016159.tif 000013
【図１２】
2019016159.tif 000014
【図１３】
2019016159.tif 000015
【図１４】
2019016159.tif 000016
【図１５】
2019016159.tif 000017
【図１６】
2019016159.tif 000018
【図１７】
2019016159.tif 000019
【図１８】
2019016159.tif 000020
【図１９】
2019016159.tif 000021
【図２０】
2019016159.tif 000022
【図２１】
2019016159.tif 000023
【図２２】
2019016159.tif 000024
【図２３】
2019016159.tif 000025