特許第6872599号(P6872599)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 三菱電機マイコン機器ソフトウエア株式会社の特許一覧

<>
  • 特許6872599-ニューラルネットワーク処理装置 図000002
  • 特許6872599-ニューラルネットワーク処理装置 図000003
  • 特許6872599-ニューラルネットワーク処理装置 図000004
  • 特許6872599-ニューラルネットワーク処理装置 図000005
  • 特許6872599-ニューラルネットワーク処理装置 図000006
  • 特許6872599-ニューラルネットワーク処理装置 図000007
  • 特許6872599-ニューラルネットワーク処理装置 図000008
  • 特許6872599-ニューラルネットワーク処理装置 図000009
  • 特許6872599-ニューラルネットワーク処理装置 図000010
  • 特許6872599-ニューラルネットワーク処理装置 図000011
  • 特許6872599-ニューラルネットワーク処理装置 図000012
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】6872599
(24)【登録日】2021年4月21日
(45)【発行日】2021年5月19日
(54)【発明の名称】ニューラルネットワーク処理装置
(51)【国際特許分類】
   G06N 3/063 20060101AFI20210510BHJP
   G06F 17/10 20060101ALI20210510BHJP
【FI】
   G06N3/063
   G06F17/10 S
   G06F17/10 A
【請求項の数】6
【全頁数】12
(21)【出願番号】特願2019-231110(P2019-231110)
(22)【出願日】2019年12月23日
【審査請求日】2019年12月23日
(73)【特許権者】
【識別番号】395013603
【氏名又は名称】三菱電機マイコン機器ソフトウエア株式会社
(74)【代理人】
【識別番号】110002941
【氏名又は名称】特許業務法人ぱるも特許事務所
(72)【発明者】
【氏名】白石 忠明
【審査官】 渡部 博樹
(56)【参考文献】
【文献】 特開2016−099707(JP,A)
【文献】 国際公開第2019/053835(WO,A1)
【文献】 特開2003−067360(JP,A)
【文献】 宇都宮誉博、他4名,2のべき乗近似とプルーニングを用いたCNN向けFPGAアクセラレータ,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会 The Institute of Electronics,Information and Communication Engineers,第117巻、No.379,P.119〜P.124
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/02
G06F 17/10
(57)【特許請求の範囲】
【請求項1】
制御信号を受けて動作状態を制御し、ニューラルネットワークの処理状態を通知、管理する状態遷移管理部と、前記状態遷移管理部による処理状態の通知を受けて入力ノードデータのパスを切換えて通知された処理状態に対応した処理を行い、ノードデータを出力するデータパス制御部と、前記データパス制御部により出力されたノードデータに積和演算処理を実施して前記データパス制御部に出力するニューラルネットワーク処理コア部とを備え、前記ニューラルネットワーク処理コア部は、ニューラルネットワークのノードデータおよびメモリアドレスをそれぞれ格納する全結合層用FIFO部およびメモリアドレス用FIFO部、重み係数が格納されたメモリ、各ノード値と対応する前記重み係数を乗算して逐次加算する積和演算回路を有し、ノードデータを前記全結合層用FIFO部に格納する前段階においてノード値がゼロの場合、前記積和演算回路の処理を省略するとともに、前記データパス制御部において動作状態に対応したデータパスを切換え、前記ニューラルネットワーク処理コア部を共通に用いるニューラルネットワーク処理装置において、
ノードデータを格納する前記全結合層用FIFO部を複数の分割FIFO部にて構成し、ゼロでないノードデータの格納を並列処理した上で、FIFOから積和演算回路への読出し処理においては読み出す分割FIFO部を順次選択し、選択された分割FIFO部からの読出し完了を検知すれば、次の分割FIFO部を選択して読み出す制御を行う前記データパス制御部を備え、前記データパス制御部により、前記分割FIFO部のデータを繋いで1個のFIFOに見立てるようにしたことを特徴とするニューラルネットワーク処理装置。
【請求項2】
前記全結合層用FIFO部に書込まれた非ゼロのノードデータに合わせて、重み係数が格納されたメモリの対応するアドレス値を書き込むメモリアドレス用FIFO部を備え、前記アドレス値を相対アドレス値で書き込むようにしたことを特徴とする請求項1に記載のニューラルネットワーク処理装置。
【請求項3】
ノードデータのノード値が予め設定された閾値以下の場合にノード値をゼロとして前記積和演算回路の処理を省略するようにしたことを特徴とする請求項1または請求項2に記載のニューラルネットワーク処理装置。
【請求項4】
特定のノードと対応する重み係数が全てゼロであることを事前に検出し、全てゼロと判定した場合に、ゼロ値のノードデータを排除する非ゼロ判定制御部を備え、前記非ゼロ判定制御部により特定のノードの積和演算処理を省略することを特徴とする請求項1から請求項3のいずれか1項に記載のニューラルネットワーク処理装置。
【請求項5】
前記重み係数の値を2のn乗値(nは整数)に量子化し、前記積和演算回路の乗算演算をビットシフト処理にて実行するようにしたことを特徴とする請求項1から請求項4のいずれか1項に記載のニューラルネットワーク処理装置。
【請求項6】
ノードデータおよびアドレスをそれぞれ格納する前記全結合層用FIFO部および前記メモリアドレス用FIFO部を全結合層用LIFO部およびメモリアドレス用LIFO部に置き換えたことを特徴とする請求項1から請求項のいずれか1項に記載のニューラルネットワーク処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、ニューラルネットワーク処理装置に関する。
【背景技術】
【0002】
近年、ディープニューラルネットワークは、高い識別性能により広く利用されるようになっている。一方で、ネットワーク係数(重み係数、バイアスなど)の個数が非常に膨大であり、使用メモリ量と計算コストは高く、リアルタイムな処理に於いては、高価で消費電力の大きなGPU(Graphics Processing Unit:画像処理装置)デバイスを必要とし、組込みマイクロコンピュータでは処理仕切れない状況にある。特に、画像系の情報量の多いCNN(Convolutional Neural Networks:畳込みニューラルネットワーク)処理は、この傾向が強い(特許文献1参照)。
【0003】
この対策として、ニューラルネットワーク処理を、GPUデバイスを用いて並列処理性を高め、あるいは回路化により並列動作させて高速化を図る取組みがFPGA(field-programmable gate array)にて行われている。その際、重み係数の量子化またはネットワーク計算の処理を間引く枝刈り等の軽量化により演算量および回路規模の削減を行うが、これらをリアルタイムで実現可能とする回路は、その回路規模のために、1個あたり数10万円を超える高価なGPUあるいはFPGAを搭載することが必要となっている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2019−28746号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来の技術では、ニューラルネットワーク処理を30fps(フレーム毎秒)以上で高速に処理するため必要となるGPUあるいはFPGAの価格が高価なため、機器価格が数万円程度の機器に組み込む場合、実用的価格でこれらの機能を実現することが困難となっていた。
【0006】
これらの課題に対して、処理の並列度を高め、処理の高速化を図ることが考えられるが、並列度を高める程、回路規模が増大するという問題が大きくなり、GPUあるいはFPGAの規模が大きくなり、デバイスの価格が増加することになる。
また、逆に、並列度を下げて回路規模を小さくすることは、処理速度の低下に繋がることになる。つまり、並列度と処理速度は、一般的に反比例の関係にある。
このため、本願におけるニューラルネットワーク処理装置は、回路規模を抑えながら、高速処理を行うという課題を同時に克服することを目的としている。
【課題を解決するための手段】
【0007】
本願に開示されるニューラルネットワーク処理装置は、制御信号を受けて動作状態を制御し、ニューラルネットワークの処理状態を通知、管理する状態遷移管理部と、前記状態遷移管理部による処理状態の通知を受けて入力ノードデータのパスを切換えて通知された処理状態に対応した処理を行い、ノードデータを出力するデータパス制御部と、前記データパス制御部により出力されたノードデータに積和演算処理を実施して前記データパス制御部に出力するニューラルネットワーク処理コア部とを備え、前記ニューラルネットワーク処理コア部は、ニューラルネットワークのノードデータおよびメモリアドレスをそれぞれ格納する全結合層用FIFO部およびメモリアドレス用FIFO部、重み係数が格納されたメモリ、各ノード値と対応する前記重み係数を乗算して逐次加算する積和演算回路を有し、ノードデータを前記全結合層用FIFO部に格納する前段階においてノード値がゼロの場合、前記積和演算回路の処理を省略するとともに、前記データパス制御部において動作状態に対応したデータパスを切換え、前記ニューラルネットワーク処理コア部を共通に用いるものにおいて、ノードデータを格納する前記全結合層用FIFO部を複数の分割FIFO部にて構成し、ゼロでないノードデータの格納を並列処理した上で、FIFOから積和演算回路への読出し処理においては読み出す分割FIFO部を順次選択し、選択された分割FIFO部からの読出し完了を検知すれば、次の分割FIFO部を選択して読み出す制御を行う前記データパス制御部を備え、前記データパス制御部により、前記分割FIFO部のデータを繋いで1個のFIFOに見立てるようにしたことを特徴とするものである。
【発明の効果】
【0008】
本願に係るニューラルネットワーク処理装置によれば、回路規模を抑えながら、高速処理を行うことが可能となる。
【図面の簡単な説明】
【0009】
図1】実施形態1に係るニューラルネットワーク処理装置の全体構成を示すブロック図である。
図2】実施の形態1に係る動作状態の状態遷移を説明するための概念図である。
図3】ニューラルネットワークの基本的な動作を説明するための概念図である。
図4】実施の形態1における処理の概要を示す概念図である。
図5】実施の形態1に係る回路の共用化を説明するための概念図である。
図6】実施の形態1におけるニューラルネットワーク処理装置の要部構成を示すブロック図である。
図7】実施の形態1に係る重み係数メモリの処理動作を説明するための概念図である。
図8】実施の形態1に係る複数FIFO部の一本化動作を説明するための概念図である。
図9】実施の形態1に係るニューラルネットワーク処理装置の動作を説明するためのフローチャートである。
図10】実施の形態2に係る重み係数メモリのデータ構成を説明するための概念図である。
図11】実施の形態2に係るニューラルネットワーク処理装置の要部構成を示す概念図である。
【発明を実施するための形態】
【0010】
実施の形態1.
以下、本願における実施の形態について図面を用いて説明する。なお、各図において、同一または相当する部分については、同一符号を付して説明する。
図1は、実施の形態1に係るニューラルネットワーク処理装置を示すブロック図で、図において、ニューラルネットワーク処理装置1は、状態遷移管理部10と、データパス制御部20と、ニューラルネットワーク処理コア部30とを備えている。
【0011】
状態遷移管理部10は、制御信号を受けて動作状態を制御し、現在、ニューラルネットワークのどの層の処理を行っているかの状態を管理しており、その情報をデータパス制御部20に通知する。
データパス制御部20は、状態遷移管理部10の通知を受けて入力ノードデータのパスを切換えるデータパス切換え部201および通知された処理状態に対応して例えば、ノードデータのReLU(Rectified Linear Unit:正規化線形ユニット)活性化関数処理を行う活性化関数処理部202とマックスプーリング(Maxpooling)処理を行うマックスプーリング処理部203を備え、ノードデータをニューラルネットワーク処理コア部30に出力する。
【0012】
ニューラルネットワーク処理コア部30は、データパス制御部20の出力を受けて、ノードデータが非ゼロであるか否かを判定する非ゼロ判定制御部301と、累積積和演算を実現する上での全結合層用FIFO部(First In First Out:先入れ先出し)302と、メモリアドレス用FIFO部303と、重み係数メモリ304と、積和演算回路305とから構成されており、全結合層用FIFO部302と、メモリアドレス用FIFO部303と、重み係数メモリ304と、積和演算回路305とにより次層ノード生成演算部310を構成している。
【0013】
これら各部の動作状態の遷移イメージを図2に示している。
すなわち、第1回目の畳込み処理の完了を開始として#1動作状態に遷移し、第1回目の畳込み処理で得られた特徴画像に対して、第2回目の畳込み処理を行うが、全ての畳込み処理の完了を待つのではなく、畳込み処理が完了した画素単位で、逐次、ReLU活性化関数処理、マックスプーリング処理および全結合層用FIFO部302内の分割FIFO部への書込みを行う。
【0014】
次に、#1動作状態の完了報告を受けると、状態遷移管理部10は、#2動作状態に遷移し、この動作状態での処理対象ノードは、#1動作状態の処理の結果であるため、これに対応してデータパス制御部20は、パスを切換え、ノードデータをニューラルネットワーク処理コア部30に入力する。その際、重み係数メモリ304もノードに対応したものに切替わるため、非ゼロ判定制御部301は、ゼロ値のノードデータの排除とそれに合わせてメモリアドレス値を選別し、それぞれ、全結合層用FIFO部302とメモリアドレス用FIFO部303に書き込む。
【0015】
次に、状態遷移管理部10は、#2動作状態の完了報告を受けると、#3動作状態に遷移し、第2全結合層に対する積和演算を行う。このときの処理は、第1全結合層に対する積和演算のみであるため、処理結果を入力に戻す必要はない。#3動作状態での処理が全て完了すると、ニューラルネットワーク処理は完了となり、状態遷移管理部10は、待ち状態に遷移する。
【0016】
ところで、通常のニューラルネットワーク処理は、図3に示すように、前段層のノード計算を全て終えてから、次段層の演算を行う関係にある。つまり、現層のノード値が確定していない状態で、次層のノード値を求めることはできない。また、推論結果は、最終段の層のノード値が確からしさとして意味を持つのみで、途中の全結合層のノード値を最後まで記憶しておく必要はない。これらのニューラルネットワーク処理の特徴より、各全結合層の処理回路をそれぞれに設けるのではなく、1つの処理回路を共通して使い回すことによって回路規模の低減化を図ることができる。この概念を図4に示している。
なお、最終的に出力される値は、推定の確からしさを示すもので、推論対象ごとに存在する。また、推論結果は、最終段の層のノード値が確からしさとして意味を持ちソフトマックス(Softmax)演算により強調される。その値以外の途中の全結合層のノード値を最後まで記憶しておく必要はない。
【0017】
すなわち、図4に示すように第1畳込み層―ReLU活性化関数―第2畳込み層―ReLU活性化関数による畳込み処理を行った後、マックスプーリング処理を行い、さらに、全結合層数が2個の場合、第1全結合層―ReLU活性化関数―第2全結合層によるニューラルネットワーク処理を行うことになるが、ここで、第1全結合層および第2全結合層は、図5に示すように同じ回路(非ゼロ判定制御部301、全結合層用FIFO部302、メモリアドレス用FIFO部303および積和演算回路305)を用いて実行している。
なお、ここで、非ゼロ判定制御部301、全結合層用FIFO部302、メモリアドレス用FIFO部303をまとめて非ゼロFIFO部と表示している
【0018】
図6は、このようなニューラルネットワーク処理装置1におけるニューラルネットワーク処理コア部30の要部構成を示すブロック図である。
このニューラルネットワーク処理コア部30には、乗算器が用いられており、通常、乗算器は、多数の加算器回路より構成されているため、回路規模が大きく処理遅延時間も長くなる。また、FPGAにおいては、ライブラリとして使用可能な乗算器の数がデバイスファミリ毎に決まっており有限個である。したがって、ニューラルネットワーク処理コア部30においては、乗算演算毎に乗算器を設けるのではなく、1個の乗算器を使い回すことによって回路規模の増大を抑制している。
【0019】
一方、1個の乗算器を使い回すと、乗算演算中は他の乗算処理を行うことができず、一つずつ処理する逐次処理型となるため、トータルの処理時間が長くなる問題が生じる。この対策として幹刈りを行い、乗算演算の回数自体を減らすように構成している。
一般的にノードから出ているニューラルネットに対応する重み係数がゼロの場合に、積和演算を省略することを「枝刈り」と称しているが、本願における「幹刈り」とは、ノード値がゼロの場合に、そのノード(幹)から出ている全てのニューラルネット(枝)の積和演算を省略することを称している。この幹刈りは、ノード値がゼロの場合にFIFO部にデータを書き込まないことで実現するが、この場合、廃棄ノードに繋がるニューラルネットワークの被乗算の重み係数も読み飛ばさなければ、乗算と被乗算の対応が崩れることになる。
【0020】
このため、図7(B)(C)に示すようにノード値が「0」以外すなわち非ゼロのノードデータを全結合層用FIFO部302に選択して書込み、これに合わせて、重み係数が格納されたメモリの対応するアドレスを同様にメモリアドレス用FIFO部303に書き込む。その後、積和演算時にFIFO部からノード値を読み出する際に、ノード値に対応した重み係数のアドレス値を読み出し、重み係数メモリ304に供給することによりペアのズレをなくすことができる。
【0021】
また、上述ではノード値がゼロの場合に、それに繋がる全てのニューラルネットの積和演算をキャンセルするものであるが、逆に、全てのニューラルネットの重み係数値がゼロの場合、同様に積和演算をキャンセルすることが可能である。ノード値は入力データにより変化するが、重み係数は固定であるため、事前に全てのニューラルネットの重み係数値がゼロであるノードを特定することは可能であり、その特定されたノードの積和演算をキャンセルする。また、ノード処理の単位を分割並列化させた場合に於いては、その単位範囲内で接続されるニューラルネットの重み係数がゼロであれば、そのノード演算の前にキャンセル指定することが可能となる。
【0022】
このようにして全結合層用FIFO部302から読み出されたノードデータと、メモリアドレス用FIFO部303から読み出されたアドレスが示す重み係数メモリ304の出力、すなわち、重み係数とが乗算され、積和演算回路305のレジスタに記憶される。全結合層用FIFO部302のデータが空になるまで乗算結果の加算が繰り替えされ、最終的にその値が次層ノード値として確定することになる。
【0023】
次に、積和演算回路305の小型化について説明する。
2進数の演算において2のn乗の乗算は、通常の乗算器を使用しなくてもシフト演算によって可能である。例えば、10に0.5(2−1)を乗ずると5になるが、これをシフト演算で行う場合、10は2進数で「1010」であり1ビット右シフト、即ち、0.5乗算相当とすると、「0101」となり、これは10進数の5である。この理論を活かし、学習段階にて重み係数の取る範囲を2のn乗に指定し、またはそれに近似化することによって量子化し、乗算器をなくすことが可能となる。乗算器に比べシフト演算は、配線の切り替えだけの回路になるため、回路規模を著しく小さいものとすることができる。
【0024】
また、全結合層の前段処理に於いては、一般的に複数種類の特徴画像データが抽出され、メモリまたはレジスタに記憶される。ここで、特徴画像の記憶回路と全結合層用FIFO部302は、基本的に同一容量である。このため、図5図6に示すように、これらニューラルネットワーク処理コア部30を2重に持たずに共通化する。また、図8に示すように、非ゼロ判定および非ゼロデータの複数の分割FIFO部への書き込みを同時並列(例えば64個)で行った後、それを繋いで一個のFIFOに見立てるもので、モードに応じた制御切換えにより実現している。なお、複数の分割FIFO部を一本化した全結合層用FIFO部302の出力は、一つの次層ノード生成演算部310にて処理される。
【0025】
次に、図9に示すフローチャートを用いてニューラルネットワーク処理装置1の動作を説明する。
まず、ステップS101においてニューラルネットワーク処理の前の畳込み処理により生成された特徴画像に対し、例えば、マックスプーリング処理を行い、その情報量を1/4に削減した特徴画像データ(ノード値)を生成する。次に、ステップS102において、特徴画像毎に非ゼロデータであるか否かの判定を非ゼロ判定制御部301により行う。 ステップS102において非ゼロデータであると判定すると、ステップS103に移行し、全結合層用FIFO部302における分割FIFO部にノードデータを書き込み、並行してステップS104において非ゼロノードに対応したメモリアドレスを書き込む。これらの全データの書き込みが完了したか判定し(ステップS105)、書き込みが完了していないと判定した場合、ステップS102に戻り、次のデータを判定し、書き込みを行う。なお、ステップS102において、ゼロデータであると判定した場合、書き込み処理を行わず、ステップS105に移行する。
【0026】
一方、ステップS105において書き込みが完了していると判定した場合(ステップS106)、状態遷移管理部10によりニューラルネットワーク処理モードに移行し、全結合層用FIFO部302内の分割FIFO部の制御を変えて一本のFIFO部相当の出力を生成する。また、同様に、メモリアドレス用FIFO部303も一本のFIFO部相当の出力を生成する(ステップS107)。
【0027】
次に、ステップS108において、積和演算回路305により全結合層用FIFO部302およびメモリアドレス用FIFO部303内のデータが空になるまで累積積和演算を行い、ステップS109においてデータが最終であると判定すると、ステップS110に移行して次段への全結合層のノード値が確定することになる。
【0028】
なお、次層ノード生成演算部310は、次層のノード数分あり、次層ノードは、一斉に生成されるが、回路規模を低減する目的のため、次層ノード生成演算部310をノード分割させて減らすことは可能である。但し、この場合、全結合層用FIFO部302は、分割の数分だけ読み返す必要がある。
【0029】
すなわち、前段のノード数をm個(mは整数)とし、次段のノード数をn個(nは整数)とした場合、FIFOの読出し段数msは、mからゼロ値のノード数mzを引いた値となる(ms=m−mz)。また、処理時間の削減率は、ms/mにより求められる。使用される機会の多い活性化関数ReLUにより、ノード値のうちゼロよりも小さな値は、一律ゼロにされるため、実際のノード値は、ゼロの比率が高く、その分、処理の高速化へと繋がり易い。なお、前段と後段に接続されるニューラルネット数はm×n本となり、その数分の重み係数データが存在することになる。
【0030】
ところで、ニューラルネットワークの個数は、一般的には100万を超える個数であり、当然、重み係数のメモリアドレスも同数のデータを有しているため、多ビットにより構成することが必要となる。このメモリアドレス値は2進数で表現されるが、仮に14ビット幅で表現すると、図10に示すように全アドレスのうちのゼロ固定(無効データ)となる領域が半分を占めることになり、データの記憶効率が悪いものとなる。
【0031】
実施の形態2.
図11は、このようなメモリアドレス用FIFO部303におけるアドレスの記憶容量を減らすことを目的として増分値(相対アドレス化)を記憶させた例を示している。
すなわち、重み係数メモリ304のアドレス入力の前段に、アドレスカウンタ306を設け、アドレスの増分値を現在値に対してインクリメントするものである。このようにアドレスの増分値のみを記憶させることにより、メモリアドレス用FIFO部303の記憶容量を減らすことが可能となる。
【0032】
ノード値は、直前の活性化関数処理、例えば、ReLU処理によりマイナス値の場合は強制的にゼロになる。このため、ゼロである確率は高くなり、その分、高速化に直結するものであるが、人工知能推論の判定に影響度の低いゼロに近い値の場合に、これをゼロと看做してより高速性を高める。どの範囲をゼロとして丸めるか(閾値の設定)については、汎用のプログラミング言語であるパイソン(PYTHON)言語等で記述したソフトウエアシミュレータにて容易に設定することができる。
【0033】
なお、上述の実施形態においては、非ゼロノードデータおよび対応する重み係数メモリのアドレス情報の格納にFIFOを使用したものについて説明したが、ニューラルネットワーク処理の前段には、一般的に、畳込み処理、プーリング処理および活性化関数処理があり、データの処理の都合に合わせてデータを読み出す順番を逆にした、いわゆるLIFO(Last In First Out:後入れ先出し)法を使用してもよい。
【0034】
本開示は、例示的な実施の形態が記載されているが、実施の形態に記載された様々な特徴、態様、および機能は、特定の実施の形態の適用に限られるのではなく、単独で、または様々な組み合わせで実施の形態に適用可能である。従って、例示されていない無数の変形例が、本願明細書に開示される技術の範囲内において想定される。例えば、少なくとも1つの構成要素を変形する場合、追加する場合または省略する場合が含まれるものとする。
【符号の説明】
【0035】
1:ニューラルネットワーク処理装置、 10:状態遷移管理部、
20:データパス制御部、 30:ニューラルネットワーク処理コア部、
201:データパス切換え部、 202:活性化関数処理部、
203:マックスプーリング処理部、 301:非ゼロ判定制御部、
302:全結合層用FIFO部、 303:メモリアドレス用FIFO部、
304:重み係数メモリ、 305:積和演算回路、 306:アドレスカウンタ、
310:次層ノード生成演算部
【要約】
【課題】ニューラルネットワーク処理の回路化に於いて、回路規模の小規模化を図りながら、ニューラルネットワーク処理速度の高速化を目的とする。
【解決手段】ニューラルネットワークの処理状態を通知、管理する状態遷移管理部と、状態遷移管理部による処理状態の通知を受けて入力ノードデータのパスを切換えて通知された処理状態に対応した処理を行い、ノードデータを出力するデータパス制御部と、データパス制御部による出力されたノードデータに積和演算処理を実施してデータパス制御部に出力するニューラルネットワーク処理コア部とを備え、前記ニューラルネットワーク処理コア部は、ノードデータを全結合層用FIFO部に格納する前段階においてノード値がゼロの場合、積和演算回路の処理を省略するとともに、データパス制御部において動作状態に対応したデータパスを切換え、ニューラルネットワーク処理コア部を共通に用いるようにした。
【選択図】図1
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11