JP6387913B2 - 演算処理装置 - Google Patents

演算処理装置 Download PDF

Info

Publication number
JP6387913B2
JP6387913B2 JP2015137102A JP2015137102A JP6387913B2 JP 6387913 B2 JP6387913 B2 JP 6387913B2 JP 2015137102 A JP2015137102 A JP 2015137102A JP 2015137102 A JP2015137102 A JP 2015137102A JP 6387913 B2 JP6387913 B2 JP 6387913B2
Authority
JP
Japan
Prior art keywords
input
systolic array
output
row
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015137102A
Other languages
English (en)
Other versions
JP2017021483A (ja
Inventor
智義 船▲崎▼
智義 船▲崎▼
智章 尾崎
智章 尾崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Denso Corp filed Critical Denso Corp
Priority to JP2015137102A priority Critical patent/JP6387913B2/ja
Priority to PCT/JP2016/002680 priority patent/WO2017006512A1/ja
Publication of JP2017021483A publication Critical patent/JP2017021483A/ja
Application granted granted Critical
Publication of JP6387913B2 publication Critical patent/JP6387913B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Description

本発明は、畳み込みニューラルネットワークの演算を実行する演算処理装置に関する。
従来、中間層と全結合層とを有する畳み込みニューラルネットワークの演算を実行する演算処理装置が知られている(例えば、特許文献1を参照)。
特開2008−310700号公報
畳み込みニューラルネットワークにおいて、全結合層で行われる処理は、中間層で行われる処理とは異なる。このため、演算処理の高速化を図るには、中間層と全結合層のそれぞれに対応した専用回路を用いる必要があり、演算処理装置に搭載される回路基板の面積が増大してしまう。一方、回路基板の面積の増大を抑制するために回路の共有化を図る場合には、全結合層のための回路と、中間層のための回路の少なくとも一方について、他方に合わせた回路構成とする必要があり、演算処理速度が低下してしまう。
本発明は、こうした問題に鑑みてなされたものであり、回路基板の面積の増大と演算処理速度の低下の両方を抑制する演算処理装置を提供することを目的とする。
上記目的を達成するためになされた本発明は、中間層と全結合層とを有する畳み込みニューラルネットワークの演算を実行する演算処理装置であって、複数のシストリックアレイセルと、複数の入力スイッチと、複数の出力スイッチと、畳込演算制御部と、全結合演算制御部とを備える。
複数の入力スイッチは、複数のシストリックアレイセルのそれぞれに対応して設けられ、第1入力用端子、第2入力用端子および第3入力用端子を有し、第1入力用端子と第3入力用端子とが接続された第1入力用接続状態と、第2入力用端子と第3入力用端子とが接続された第2入力用接続状態との何れか一方に切り替わる。
複数の出力スイッチは、複数のシストリックアレイセルのそれぞれに対応して設けられ、第1出力用端子、第2出力用端子および第3出力用端子を有し、第1出力用端子と第2出力用端子とが接続された第1出力用接続状態と、第1出力用端子と第3出力用端子とが接続された第2出力用接続状態との何れか一方に切り替わる。
畳込演算制御部は、中間層の畳み込み演算が実行される場合に、第2入力用接続状態となるように入力スイッチを切り替えるとともに第2出力用接続状態となるように出力スイッチを切り替え、畳み込み演算を実行するために複数のシストリックアレイセルへのデータ入力を制御する。
全結合演算制御部は、全結合層の全結合演算が実行される場合に、第1入力用接続状態となるように入力スイッチを切り替えるとともに第1出力用接続状態となるように出力スイッチを切り替え、全結合演算を実行するために複数のシストリックアレイセルへのデータ入力を制御する。
シストリックアレイセルは、タイミング調整部と、演算部とを備える。
タイミング調整部は、シストリックアレイセルに対応して設けられた入力スイッチである対応入力スイッチの第3入力用端子から入力されるデータの出力タイミングを調整して、シストリックアレイセルに対応して設けられた出力スイッチである対応出力スイッチの第1出力用端子へ出力する。
演算部は、対応入力スイッチの第3入力用端子から入力されるデータと予め設定された重み係数とを乗算した乗算値と、対応入力スイッチを介することなく入力されるデータとを加算した加算値をセル出力データとして、対応出力スイッチを介することなくセル出力データを出力する。
このように構成された本発明の演算処理装置は、複数の入力スイッチを第2入力用接続状態に切り替えるとともに複数の出力スイッチを第2出力用接続状態に切り替えることにより、シストリックアレイセルに中間層の畳み込み演算を実行させることができる。また、本発明の演算処理装置は、複数の入力スイッチを第1入力用接続状態に切り替えるとともに複数の出力スイッチを第1出力用接続状態に切り替えることにより、シストリックアレイセルに全結合層の全結合演算を実行させることができる。
このように本発明の演算処理装置は、複数の入力スイッチと複数の出力スイッチを追加することにより、換言すると、複数のシストリックアレイセルの構成を変えることなく、複数のシストリックアレイセルに中間層の畳み込み演算と全結合層の全結合演算の両方を複数のシストリックアレイセルに実行させることができる。
このため、本発明の演算処理装置は、畳み込み演算と全結合演算の共有化を図るために、畳み込み演算のための回路と、全結合演算のための回路の少なくとも一方について、他方の回路に合わせた回路構成とすることを必要最低限に抑えることができる。これにより、本発明の演算処理装置は、回路基板の面積の増大と演算処理速度の低下の両方を抑制して、中間層の畳み込み演算を行う回路と全結合層の全結合演算を行う回路とを共有化することができる。
運転支援装置1の構成を示すブロック図である。 畳み込みニューラルネットワークCNNの構成を示す図である。 畳み込み演算の方法を説明する図である。 全結合層群G2の処理を説明する図である。 全結合層Lj1が実行する演算を示す図である。 演算処理装置4の構成を示すブロック図である。 第1実施形態のシストリックアレイ11の構成を示す回路図である。 シストリックアレイセル21の構成を示す回路図である。 第1実施形態の全結合演算制御部16によるデータ出力方法を説明する図である。 第2実施形態のシストリックアレイ11の構成を示す回路図である。 第2実施形態の全結合演算制御部16によるデータ出力方法を説明する図である。 第3実施形態のシストリックアレイ11の構成を示す回路図である。 第3実施形態の全結合演算制御部16によるデータ出力方法を説明する図である。
(第1実施形態)
以下に本発明の第1実施形態を図面とともに説明する。
本実施形態の運転支援装置1は、車両に搭載され、図1に示すように、カメラ2と、記憶装置3と、演算処理装置4と、画像処理装置5と、表示装置6とを備える。
運転支援装置1は、車両の前方に歩行者が存在する場合に、歩行者が存在する位置を示す画像を表示装置6に表示させることにより、歩行者の存在を運転者に報知する。
カメラ2は、運転者がウインドシールド越しに視認可能な自車両前方の風景(以下、前景ともいう)を連続して撮影する。
記憶装置3は、カメラ2により撮影された画像データを一時的に記憶する。
演算処理装置4は、記憶装置3から画像データを取得し、画像データが示す前景内に歩行者が存在するか否かを検出するための演算処理を実行する。
画像処理装置5は、記憶装置3からの画像データと、演算処理装置4による検出結果とに基づいて、表示装置6に表示させる表示データを生成する。
表示装置6は、液晶ディスプレイ等の表示画面を有するカラー表示装置であり、画像処理装置5からの表示データの入力に応じて各種画像を表示画面に表示する。
演算処理装置4は、畳み込みニューラルネットワーク(Convolutional Neural Network)を利用して、カメラ2により撮影された画像内の歩行者を検出する。
畳み込みニューラルネットワークCNNは、図2に示すように、中間層群G1と全結合層群G2を備える。中間層群G1は、複数の中間層Lm1,Lm2,・・・・を備える。全結合層群G2は、1以上の全結合層Lj1,Lj2,・・・・を備える。さらに、複数の中間層Lm1,Lm2,・・・・はそれぞれ、畳み込み層Lcおよびプーリング層Lpを備える。
次に、中間層群G1が3個の中間層Lm1,Lm2,Lm3で構成されている場合を例として、中間層群G1の処理を説明する。
図3に示すように、中間層群G1の中間層Lm1は、入力画像D0に対して、予め設定された特徴抽出フィルタFc1で走査(例えばラスタスキャン)することにより、周知の畳み込み演算を行う。特徴抽出フィルタFc1は、歩行者の特徴を抽出するために、2次元行列状に重み係数を配列して構成されている。特徴抽出フィルタFc1は、抽出する特徴の数に応じて、1または複数(図3では4つ)設けられる。
畳み込み演算は、例えば下式(1)に示す関数を用いて行われる。なお、下式(1)のWp,qは、N×N画素の特徴抽出フィルタFc1において第p行の第q列に位置する重み係数を示す(p,q,Nは正の整数)。また、下式(1)のXi,jは、入力画像において第(i+p−1)行の第(j+q−1)列に位置する画素の値を示す(i,jは正の整数)。
この畳み込み演算によって、第i行の第j列に位置する要素を式(1)のYijとして二次元行列状に配列した特徴マップMc1が特徴抽出フィルタFc1毎に生成される。図3では、4つの特徴抽出フィルタFc1が用いられているため、4つの特徴マップMc1が生成される。
さらに、中間層群G1の中間層Lm1は、畳み込み演算後の特徴マップMc1の各要素Yijに対して、周知の活性化処理を行う。活性化処理は、例えは下式(2)に示すReLU(Rectified Linear Unit)関数などを用いて行われる。なお、上記の畳み込み演算と活性化処理は、中間層Lm1の畳み込み層Lcで行われる。
さらに、中間層Lm1は、活性化処理後の特徴マップMc1に対して、周知のプーリング処理を行うことにより、特徴マップMc1のサイズを縮小する。プーリング処理は、特徴マップMc1を例えば2×2画素の領域に分割し、下式(3)に示す最大プーリング関数などを用いて、分割された領域毎に値を算出する処理である。なお、上記のプーリング処理は、中間層Lm1のプーリング層Lpで行われる。
また、中間層群G1の中間層Lm2は、プーリング処理後の特徴マップMc1に対して、予め設定された特徴抽出フィルタFc2で走査することにより、周知の畳み込み演算を行う。特徴抽出フィルタFc2は、特徴抽出フィルタFc1よりも複雑な歩行者の特徴を抽出するために、2次元行列状に重み係数を配列して構成されている。特徴抽出フィルタFc2は、抽出する特徴の数に応じて、1個または複数個(図3では3個)設けられる。なお、図3では中間層Lm1は4つの特徴マップMc1を生成している。このため、4つの特徴マップMc1のそれぞれに対して1つの特徴抽出フィルタFc2で走査することにより上式(1)の畳み込み演算を行った4つの演算結果を累積加算し、1つの特徴マップMc2を生成する。図3では、3つの特徴抽出フィルタFc2が用いられているため、3つの特徴マップMc2が生成される。
さらに、中間層群G1の中間層Lm2は、畳み込み演算後の特徴マップMc2の各要素に対して、周知の活性化処理を行う。なお、上記の畳み込み演算と活性化処理は、中間層Lm2の畳み込み層Lcで行われる。
さらに、中間層Lm2は、活性化処理後の特徴マップMc2に対して、周知のプーリング処理を行うことにより、特徴マップMc2のサイズを縮小する。なお、上記のプーリング処理は、中間層Lm2のプーリング層Lpで行われる。
また、中間層群G1の中間層Lm3は、プーリング処理後の特徴マップMc2に対して、予め設定された特徴抽出フィルタFc3で走査することにより、周知の畳み込み演算を行う。特徴抽出フィルタFc3は、特徴抽出フィルタFc2よりも複雑な歩行者の特徴を抽出するために、2次元行列状に重み係数を配列して構成されている。特徴抽出フィルタFc3は、抽出する特徴の数に応じて、1個または複数個(図3では1個)設けられる。なお、図3では中間層Lm2は3つの特徴マップMc2を生成している。このため、3つの特徴マップMc2のそれぞれに対して1つの特徴抽出フィルタFc3で走査することにより上式(1)の畳み込み演算を行った3つの演算結果を累積加算し、1つの特徴マップMc3を生成する。図3では、1つの特徴抽出フィルタFc3が用いられているため、1つの特徴マップMc3が生成される。
さらに、中間層群G1の中間層Lm3は、畳み込み演算後の特徴マップMc3の各要素に対して、周知の活性化処理を行う。なお、上記の畳み込み演算と活性化処理は、中間層Lm3の畳み込み層Lcで行われる。
さらに中間層Lm3は、活性化処理後の特徴マップMc3に対して、周知のプーリング処理を行うことにより、特徴マップMc3のサイズを縮小する。なお、上記のプーリング処理は、中間層Lm3のプーリング層Lpで行われる。
そして中間層Lm3は、プーリング処理後の特徴マップMc3を全結合層群G2へ出力する。
次に、全結合層群G2が2つの全結合層Lj1,Lj2で構成されている場合を例として、全結合層群G2の処理を説明する。
図4に示すように、カメラ2により撮影された画像の撮影領域Rs内に、歩行者を検出するためのs枚(sは整数)の検出ウインドウWd1,Wd2,Wd3,Wd4,・・・,Wdsが設定されている。検出ウインドウWd1,Wd2,Wd3,Wd4,・・・,Wdsは、互いに同一の形状を有する矩形状に形成されており、s枚の検出ウインドウで撮影領域Rs全体を覆うことができるようにして、互いに異なる領域に配置される。
全結合層群G2へ出力された特徴マップMc3について検出ウインドウWdi(i=1,2,3,4,・・・,s)の領域に対応する要素を下式(4)に示すように表記する。この場合に、全結合層Lj1は、下式(5)および図5に示す演算を行う。
次に、全結合層Lj2は、下式(6)に示す演算を行い、この演算結果を最終的な演算結果として出力する。
演算処理装置4は、図6に示すように、シストリックアレイ11、活性化処理部12、プーリング処理部13、記憶部14、畳込演算制御部15、全結合演算制御部16および検出部17を備える。
シストリックアレイ11は、中間層Lm1,Lm2,・・・・の畳み込み演算と、全結合層Lj1,Lj2,・・・・の演算(以下、全結合演算という)を行い、畳み込み演算の演算結果データ(以下、畳込演算結果データという)と、全結合演算の演算結果データ(以下、全結合演算結果データという)を出力する。
活性化処理部12は、シストリックアレイ11から出力された畳込演算結果データに対して上記の活性化処理を行う。プーリング処理部13は、活性化処理部12から出力された畳込演算結果データに対して上記のプーリング処理を行う。記憶部14は、プーリング処理部13から出力された畳込演算結果データを記憶する。
畳込演算制御部15は、記憶装置3から画像データを取得するとともに、記憶部14から畳込演算結果データを取得する。そして畳込演算制御部15は、シストリックアレイ11に畳み込み演算を実行させるために、シストリックアレイ11へデータを出力するタイミングの制御と、シストリックアレイ11の重み係数(後述)の設定と、シストリックアレイ11のスイッチ22,23(後述)の切り替えを行う。
全結合演算制御部16は、記憶部14から畳込演算結果データを取得する。そして全結合演算制御部16は、シストリックアレイ11に全結合演算を実行させるために、シストリックアレイ11へデータを出力するタイミングの制御と、シストリックアレイ11の重み係数(後述)の設定と、シストリックアレイ11のスイッチ22,23(後述)の切り替えを行う。
なお、畳込演算制御部15が動作している間は、全結合演算制御部16は動作しない。同様に、全結合演算制御部16が動作している間は、畳込演算制御部15は動作しない。
検出部17は、シストリックアレイ11から出力された全結合演算結果データに基づいて、カメラ2により撮影された画像内の歩行者を検出し、検出結果を示す検出データを画像処理装置5へ出力する。
シストリックアレイ11は、図7に示すように、(k+1)行×(l+1)列で二次元行列状に配列された複数のシストリックアレイセル21と、複数のシストリックアレイセル21のそれぞれに対応して設けられた複数の入力スイッチ22および出力スイッチ23とを備える(k,lは1以上の整数)。
入力スイッチ22は、2つの入力端子22a,22bと1つの出力端子22cとを備える。出力端子22cは、対応するシストリックアレイセル21に接続される。
出力スイッチ23は、1つの入力端子23aと2つの出力端子23b,23cとを備える。入力端子23aは、対応するシストリックアレイセル21に接続される。
第1行の第j列(j=1,2,・・・,l+1)に位置するシストリックアレイセル21(図7のシストリックアレイセルa0,0,a0,1,a0,2,・・・,a0,lを参照)に対応する入力スイッチ22の入力端子22aは、全結合演算制御部16に接続され、全結合演算制御部16から畳込演算結果データが入力される。
第i行(i=2,・・・,k+1)の第j列(j=1,2,・・・,l+1)に位置するシストリックアレイセル21(図7のシストリックアレイセルa1,0,a1,1,a1,2,・・・,a1,l,・・・,ak,0,ak,1,ak,2,・・・,ak,lを参照)の入力端子22aは、第(i−1)行の第j列に位置するシストリックアレイセル21の出力スイッチ23の出力端子23bに接続される。
第i行(i=1,2,・・・,k+1)の第1列に位置するシストリックアレイセル21(図7のシストリックアレイセルa0,0,a1,0,・・・,ak,0を参照)に対応する入力スイッチ22の入力端子22bは、畳込演算制御部15に接続され、畳込演算制御部15から画像データと畳込演算結果データが入力される。
第i行(i=1,2,・・・,k+1)の第j列(j=2,・・・,l+1)に位置するシストリックアレイセル21(図7のシストリックアレイセルa0,1,a0,2,・・・,a0,l,a1,1,a1,2,・・・,a1,l,・・・,ak,1,ak,2,・・・,ak,lを参照)に対応する入力スイッチ22の入力端子22bは、第i行の第(j−1)列に位置するシストリックアレイセル21の出力スイッチ23の出力端子23cに接続される。
またシストリックアレイ11は、(k+1)個の加算器24と、(k+1)個のフリップフロップ回路25とを備える。
(k+1)個の加算器24はそれぞれ、第(l+1)列に位置する(k+1)個のシストリックアレイセル21に対応して設けられており、対応するシストリックアレイセル21からのデータが入力される。
また、第1行の第(l+1)列に位置するシストリックアレイセル21(図7のシストリックアレイセルa0,lを参照)に対応する加算器24には、予め設定された初期値を示すデータが入力される。さらに、第i行(i=2,・・・,k+1)の第(l+1)列に位置するシストリックアレイセル21(図7のシストリックアレイセルa1,l,・・・,ak,lを参照)に対応する加算器24には、第(i−1)行の加算器24からの加算結果を示すデータが入力される。
(k+1)個のフリップフロップ回路25はそれぞれ、(k+1)個の加算器24に対応して設けられており、対応する加算器24からの加算結果を示すデータを出力するタイミングを調整する。
シストリックアレイセル21は、図8に示すように、タイミング調整部30と演算部40を備える。
タイミング調整部30は、入力スイッチ22から入力されたデータのタイミングを調整して出力スイッチ23へ出力するためのものであり、フリップフロップ回路31,32を備える。フリップフロップ回路31,32は、データ入力端子にデータが入力されると、この入力データを予め設定された出力タイミングでデータ出力端子から出力する。
フリップフロップ回路31のデータ入力端子は、入力スイッチ22の出力端子22cに接続され、フリップフロップ回路31のデータ出力端子は、フリップフロップ回路32のデータ入力端子に接続される。フリップフロップ回路32のデータ出力端子は、出力スイッチ23の入力端子23aに接続される。
演算部40は、レジスタ41、乗算器42、加算器43およびフリップフロップ回路44を備える。
レジスタ41は、畳込演算制御部15により畳み込み演算の重み係数が設定される。またレジスタ41は、全結合演算制御部16により全結合演算の重み係数が設定される。
乗算器42は、タイミング調整部30から出力されるデータと、レジスタ41に設定されているデータとの乗算値を算出して、この乗算値を示すデータを出力する。
加算器43は、乗算器42から出力されるデータと、前段のシストリックアレイセル21から出力されるデータとの加算値を算出して、この加算値を示すデータを出力する。なお、第i行の第j列に位置するシストリックアレイセル21における前段のシストリックアレイセル21とは、第i行の第(j−1)列に位置するシストリックアレイセル21である。
フリップフロップ回路44は、データ入力端子にデータが入力されると、この入力データを予め設定された出力タイミングでデータ出力端子から出力する。フリップフロップ回路44のデータ入力端子は加算器43に接続される。フリップフロップ回路44のデータ出力端子は、後段のシストリックアレイセル21の加算器43に接続される。なお、第i行の第j列に位置するシストリックアレイセル21における後段のシストリックアレイセル21とは、第i行の第(j+1)列に位置するシストリックアレイセル21である。
畳込演算制御部15は、畳み込み演算を実行する場合に、シストリックアレイ11のスイッチ22,23に対して、畳み込み演算を実行するための切り替えを行う。具体的には、畳込演算制御部15は、入力スイッチ22に対して、2つの入力端子22a,22bのうち入力端子22bを選択し、入力端子22bから入力されたデータを出力端子22cから出力するようにデータ入出力経路を切り替える。さらに畳込演算制御部15は、出力スイッチ23に対して、2つの出力端子23b,23cのうち出力端子23cを選択し、入力端子23aから入力されたデータを出力端子23cから出力するようにデータ入出力経路を切り替える。
また畳込演算制御部15は、畳み込み演算を実行する場合に、畳み込み演算の重み係数をシストリックアレイセル21のレジスタ41に設定する。そして畳込演算制御部15は、画像データまたは畳込演算結果データを、第i行(i=1,2,・・・,k+1)の第1列に位置するシストリックアレイセル21に対応するスイッチ22の入力端子22bへ出力する。
例えば、畳込演算制御部15が、第i行(i=1,2,・・・,k+1)の第j列(j=1,2,・・・,l+1)に位置するシストリックアレイセル21のレジスタ41に重み係数Wi−1,j−1を設定したとする。さらに、第i行(i=1,2,・・・,k+1)の第1列に位置するシストリックアレイセル21のスイッチ22の入力端子22bへデータXi−1,0,Xi−1,1,Xi−1,2,・・・,Xi−1,lを順次出力するとする。
この場合には、第i行(i=1,2,・・・,k+1)の第(l+1)列に位置するシストリックアレイセル21の演算部40から、下式(7)に示すデータRi−1が出力される。
そして、第(k+1)行の第(l+1)列に位置するシストリックアレイセル21(図7のシストリックアレイセルak,lを参照)に対応する加算器24から下式(8)に示す畳込演算出力データRが出力される。
一方、全結合演算制御部16は、全結合演算を実行する場合に、シストリックアレイ11のスイッチ22,23に対して、全結合演算を実行するための切り替えを行う。具体的には、全結合演算制御部16は、入力スイッチ22に対して、2つの入力端子22a,22bのうち入力端子22aを選択し、入力端子22aから入力されたデータを出力端子22cから出力するようにデータ入出力経路を切り替える。さらに全結合演算制御部16は、出力スイッチ23に対して、2つの出力端子23b,23cのうち出力端子23bを選択し、入力端子23aから入力されたデータを出力端子23bから出力するようにデータ入出力経路を切り替える。
また全結合演算制御部16は、全結合演算を実行する場合に、全結合演算の重み係数をシストリックアレイセル21のレジスタ41に設定する。
例えば、全結合層群G2が全結合層Lj1,Lj2,・・・・,Ljvを備えているとする(vは1以上の整数)。また、全結合層Lj1,Lj2,・・・・,Ljvはそれぞれ、行列W,W,・・・・,Wvを用いて全結合演算を実行するとする。行列W,W,・・・・,Wvはそれぞれ、(m×m)行列、(m×m)行列、・・・・,(mv−1×m)行列である。そして全結合演算制御部16は、第(i+1)行(i=0,1,2,・・・,k)の第(j+1)列(j=0,1,2,・・・,l)に位置するシストリックアレイセル21のレジスタ41に、下式(9)に示す重み係数wi,jを設定する。なお、式(9)において、Wは、行列Wの転置行列であることを示す。
そして全結合演算制御部16は、中間層群G1から全結合層群G2へ出力された畳込演算結果データを、第1行の第j列(i=1,2,・・・,l+1)に位置するシストリックアレイセル21に対応するスイッチ22の入力端子22aへ出力する。
例えば図9に示すように、全結合演算制御部16は、予め設定された出力周期Δtが経過する毎に、畳込演算結果データをシストリックアレイ11へ出力する。畳込演算結果データの出力を開始した時点からの経過時間tがn×Δt(nは0以上の整数)であるときに、第1行の第j列(j=1,2,・・・,l+1)に位置するシストリックアレイセル21へ出力される畳込演算結果データは、xn+1−j,j−1である。但し、(n+1−j)<0である場合には、xn+1−j,j−1=0である。
この場合には、第i行(i=1,2,・・・,k+1)の第(l+1)列に位置するシストリックアレイセル21の演算部40から、下式(10)に示すデータRi−1が出力される。
このように構成された演算処理装置4は、複数のシストリックアレイセル21と、複数の入力スイッチ22と、複数の出力スイッチ23と、畳込演算制御部15と、全結合演算制御部16とを備える。
複数の入力スイッチ22は、複数のシストリックアレイセル21のそれぞれに対応して設けられ、入力端子22a,22bと出力端子22cを有する。そして、複数の入力スイッチ22は、入力端子22aと出力端子22cとが接続された状態(以下、第1入力用接続状態という)と、入力端子22bと出力端子22cとが接続された状態(以下、第2入力用接続状態という)との何れか一方に切り替わる。
複数の出力スイッチ23は、複数のシストリックアレイセル21のそれぞれに対応して設けられ、入力端子23aと出力端子23b,23cを有する。そして、複数の出力スイッチ23は、入力端子23aと出力端子23bとが接続された状態(以下、第1出力用接続状態という)と、入力端子23aと出力端子23cとが接続された状態(以下、第2出力用接続状態という)との何れか一方に切り替わる。
畳込演算制御部15は、中間層Lm1,Lm2,・・・・の畳み込み演算が実行される場合に、第2入力用接続状態となるように入力スイッチ22を切り替えるとともに第2出力用接続状態となるように出力スイッチ23を切り替え、中間層の畳み込み演算を実行するために複数のシストリックアレイセル21へのデータ入力を制御する。
全結合演算制御部16は、全結合層Lj1,Lj2,・・・・の全結合演算が実行される場合に、第1入力用接続状態となるように入力スイッチ22を切り替えるとともに第1出力用接続状態となるように出力スイッチ23を切り替え、全結合演算を実行するために複数のシストリックアレイセル21へのデータ入力を制御する。
シストリックアレイセル21は、タイミング調整部30と、演算部40とを備える。
タイミング調整部30は、入力スイッチ22の出力端子22cから入力されるデータの出力タイミングを調整して、出力スイッチ23の入力端子23aへ出力する。
演算部40は、入力スイッチ22の出力端子22cから入力されるデータと予め設定された重み係数とを乗算した乗算値と、入力スイッチ22を介することなく入力されるデータとを加算した加算値を、出力スイッチ23を介することなく出力する。
このように構成された演算処理装置4は、複数の入力スイッチ22を第2入力用接続状態に切り替えるとともに複数の出力スイッチ23を第2出力用接続状態に切り替えることにより、シストリックアレイセル21に中間層Lm1,Lm2,・・・・の畳み込み演算を実行させることができる。また演算処理装置4は、複数の入力スイッチ22を第1入力用接続状態に切り替えるとともに複数の出力スイッチ23を第1出力用接続状態に切り替えることにより、シストリックアレイセル21に全結合層Lj1,Lj2,・・・・の全結合演算を実行させることができる。
このように演算処理装置4は、複数の入力スイッチ22と複数の出力スイッチ23を追加することにより、換言すると、複数のシストリックアレイセル21の構成を変えることなく、複数のシストリックアレイセル21に中間層Lm1,Lm2,・・・・の畳み込み演算と全結合層Lj1,Lj2,・・・・の全結合演算の両方を複数のシストリックアレイセル21に実行させることができる。
このため、演算処理装置4は、畳み込み演算と全結合演算の共有化を図るために、畳み込み演算のための回路と、全結合演算のための回路の少なくとも一方について、他方の回路に合わせた回路構成とすることを必要最低限に抑えることができる。これにより、演算処理装置4は、回路基板の面積の増大と演算処理速度の低下の両方を抑制して、中間層Lm1,Lm2,・・・・の畳み込み演算を行う回路と全結合層Lj1,Lj2,・・・・の全結合演算を行う回路とを共有化することができる。
また、全結合層群G2が全結合層Lj1,Lj2,・・・・,Ljvを備えており、全結合層Lj1,Lj2,・・・・,Ljvはそれぞれ、行列W,W,・・・・,Wvを用いて全結合演算を実行するとする。そして、複数のシストリックアレイセル21は、二次元行列状に配列されている。この場合に、第(i+1)行(i=0,1,2,・・・,k)の第(j+1)列(j=0,1,2,・・・,l)に位置するシストリックアレイセル21のレジスタ41に、上式(9)に示す重み係数wi,jが設定される。
これにより、演算処理装置4は、全結合層Lj1,Lj2,・・・・,Ljvの全結合演算を全結合層Lj1,Lj2,・・・・,Ljvの順に実行する必要がなく、全結合層Lj1,Lj2,・・・・,Ljvの全結合演算をまとめて実行することができる。このため、演算処理装置4は、全結合層Lj1,Lj2,・・・・,Ljvの全結合演算を実行するために必要な計算量を低減することができる。
例えば、全結合層群G2が2つの全結合層Lj1,Lj2で構成されている場合に、全結合層Lj1が、s行×m列の行列Xと、m行×m列の行列Wとの行列積Yを算出し、全結合層Lj2が、s行×m列の行列Yと、m行×m列の行列Wとの行列積Zを算出するとする。
全結合層Lj1の全結合演算では、Y=X×Wを算出するために、(s×m×m)回の乗算を行う必要がある。また、全結合層Lj2の全結合演算では、Z=Y×Wを算出するために、(s×m×m)回の乗算を行う必要がある。このため、全結合層Lj1,Lj2の全結合演算を全結合層Lj1,Lj2の順に実行すると、(s×m×m+s×m×m)回の乗算を行う必要がある。
一方、Z=Y×W=(X×W)×W=X×(W×W)である。このため、W=(W×W)を事前に計算することで、Z=X×Wの計算を行い、Zを算出することができる。Wは、m行×m列の行列Wと、m行×m列の行列Wとの行列積であるため、m行×m列の行列である。このため、Z=X×Wの計算では、(s×m×m)回の乗算を行う必要がある。
したがって、Z=X×Wを算出する場合の乗算回数と、Y=X×WとZ=Y×Wを算出する場合の乗算回数との比は、(s×m×m)/(s×m×m+s×m×m)=(m×m)/{m×(m+m)}である。
例えば、s=200×100、m=1000、m=1000、m=100の場合には、(m×m)/{m×(m+m)}=1/11であり、計算量を11分の1に低減することができる。
また、第1行に位置するシストリックアレイセル21の入力スイッチ22の入力端子22aは、全結合演算制御部16に接続されている。また、第2行以上に位置するシストリックアレイセル21の入力スイッチ22の入力端子22aは、行が1つ小さく且つ列が同じ位置に配置されたシストリックアレイセル21における出力スイッチ23の出力端子23bに接続される。
そして、全結合演算制御部16は、経過時間tがn×Δt(nは0以上の整数)であるときに、第1行の第j列に位置するシストリックアレイセル21の入力スイッチ22の入力端子22aへ、2次元行列で表される畳込演算結果データとして、(n−j+1)が0未満のときには値が0となるxn−j+1,j−1が入力されるように制御する。これにより、シストリックアレイ11は、上式(10)に示すデータRi−1を、全結合演算結果データとして算出することができる。
以上説明した実施形態において、入力端子22aは本発明における第1入力用端子、入力端子22bは本発明における第2入力用端子、出力端子22cは本発明における第3入力用端子、入力端子23aは本発明における第1出力用端子、出力端子23bは本発明における第2出力用端子、出力端子23cは本発明における第3出力用端子である。
(第2実施形態)
以下に本発明の第2実施形態を図面とともに説明する。なお第2実施形態では、第1実施形態と異なる部分を説明する。
第2実施形態の運転支援装置1は、シストリックアレイ11の構成が第1実施形態と異なる。
第2実施形態のシストリックアレイ11は、図10に示すように、2つのアレイセル群61,62を備える。アレイセル群61は、3行×3列で二次元行列状に配列された9個のシストリックアレイセル21(シストリックアレイセルa0,0,a0,1,a0,2,・・・,a2,2を参照)を備える。アレイセル群62は、3行×3列で二次元行列状に配列された9個のシストリックアレイセル21(シストリックアレイセルb0,0,b0,1,b0,2を参照)を備える。なお、図10では、アレイセル群62が備える9個のシストリックアレイセル21のうち、シストリックアレイセルb0,0,b0,1,b0,2を示している。
アレイセル群61の第1,3行の第j列(j=1,2,3)に位置するシストリックアレイセル21(図10のシストリックアレイセルa0,0,a0,1,a0,2,a2,0,a2,1,a2,2を参照)に対応する入力スイッチ22の入力端子22aは、全結合演算制御部16に接続される。そして、全結合演算制御部16から畳込演算結果データが入力される。
アレイセル群61の第2行の第j列(j=1,2,3)に位置するシストリックアレイセル21(図10のシストリックアレイセルa1,0,a1,1,a1,2を参照)の入力端子22aは、第1行の第j列に位置するシストリックアレイセル21の出力スイッチ23の出力端子23bに接続される。
アレイセル群61,62の第i行(i=1,2,3)の第1列に位置するシストリックアレイセル21に対応する入力スイッチ22の入力端子22bは、畳込演算制御部15に接続される。そして、畳込演算制御部15から画像データと畳込演算結果データが入力される。
アレイセル群62の第1行の第j列(j=1,2,3)に位置するシストリックアレイセル21(図10のシストリックアレイセルb0,0,b0,1,b0,2を参照)の入力端子22aは、アレイセル群61の第3行の第j列に位置するシストリックアレイセル21の出力スイッチ23の出力端子23bに接続される。
またシストリックアレイ11は、スイッチ71,72,73,74と、加算器81,82,83,84と、フリップフロップ回路91,92,93,94と、スイッチ101,102,103,104とを備える。
スイッチ71,72,73,74はそれぞれ、入力端子71a,72a,73a,74aおよび入力端子71b,72b,73b,74bと、出力端子71c,72c,73c,74cとを備える。
スイッチ101,102,103,104はそれぞれ、入力端子101a,102a,103a,104aと、出力端子101b,102b,103b,104bおよび出力端子101c,102c,103c,104cとを備える。
スイッチ71の2つの入力端子71a,71bには、予め設定された初期値を示すデータが入力される。加算器81は、スイッチ71の出力端子71cからのデータと、アレイセル群61の第1行の第3列に位置するシストリックアレイセル21(図10のシストリックアレイセルa0,2を参照)からのデータとを加算し、この加算結果を示すデータを出力する。フリップフロップ回路91は、加算器81からの加算結果を示すデータを出力するタイミングを調整する。スイッチ101の入力端子101aには、加算器81からの加算結果を示すデータがフリップフロップ回路91を介して入力される。そして、スイッチ101の出力端子101bと出力端子101cはそれぞれ、スイッチ73の入力端子73aとスイッチ72の入力端子72aに接続される。
スイッチ72の入力端子72bには、予め設定された初期値を示すデータが入力される。加算器82は、スイッチ72の出力端子72cからのデータと、アレイセル群61の第2行の第3列に位置するシストリックアレイセル21(図10のシストリックアレイセルa1,2を参照)からのデータとを加算し、この加算結果を示すデータを出力する。フリップフロップ回路92は、加算器82からの加算結果を示すデータを出力するタイミングを調整する。スイッチ102の入力端子102aには、加算器82からの加算結果を示すデータがフリップフロップ回路92を介して入力される。そして、スイッチ102の出力端子102bと出力端子102cはそれぞれ、スイッチ73の入力端子73bとスイッチ74の入力端子74bに接続される。
加算器83は、スイッチ73の出力端子73cからのデータと、アレイセル群61の第3行の第3列に位置するシストリックアレイセル21(図10のシストリックアレイセルa2,2を参照)からのデータとを加算し、この加算結果を示すデータを出力する。フリップフロップ回路93は、加算器83からの加算結果を示すデータを出力するタイミングを調整する。スイッチ103の入力端子103aには、加算器83からの加算結果を示すデータがフリップフロップ回路93を介して入力される。そして、スイッチ103の出力端子103cは、スイッチ74の入力端子74aに接続される。
加算器84は、スイッチ74の出力端子74cからのデータと、アレイセル群62の第1行の第3列に位置するシストリックアレイセル21(図10のシストリックアレイセルb0,2を参照)からのデータとを加算し、この加算結果を示すデータを出力する。フリップフロップ回路94は、加算器84からの加算結果を示すデータを出力するタイミングを調整する。スイッチ104の入力端子104aには、加算器84からの加算結果を示すデータがフリップフロップ回路94を介して入力される。
畳込演算制御部15は、畳み込み演算を実行する場合に、スイッチ71〜74とスイッチ101〜104に対して切り替えを行う。具体的には、畳込演算制御部15は、スイッチ71に対して、2つの入力端子71a,71bのうち入力端子71aを選択し、入力端子71aから入力されたデータを出力端子71cから出力するようにデータ入出力経路を切り替える。また畳込演算制御部15は、スイッチ101に対して、2つの出力端子101b,101cのうち出力端子101cを選択し、入力端子101aから入力されたデータを出力端子101cから出力するようにデータ入出力経路を切り替える。同様にして畳込演算制御部15は、スイッチ72,73,74に対してそれぞれ、入力端子72a,73b,74aを選択する。また畳込演算制御部15は、スイッチ102,103,104に対してそれぞれ、出力端子102b,103c,104bを選択する。
この場合に、第i行(i=1,2,3,4)の第3列に位置するシストリックアレイセル21の演算部40から出力されるデータをRi−1と表記すると、スイッチ104の出力端子104bから(R+R+R+R)が出力される。
全結合演算制御部16は、全結合演算を実行する場合に、スイッチ71〜74とスイッチ101〜104に対して切り替えを行う。具体的には、全結合演算制御部16は、スイッチ71,72,73,74に対してそれぞれ、入力端子71b,72b,73a,74bを選択する。また全結合演算制御部16は、スイッチ101,102,103,104に対してそれぞれ、出力端子101b,102c,103b,104cを選択する。
この場合に、第i行(i=1,2,3,4)の第3列に位置するシストリックアレイセル21の演算部40から出力されるデータをRi−1と表記すると、スイッチ103の出力端子103bから(R+R)が出力され、スイッチ104の出力端子104cから(R+R)が出力される。
また全結合演算制御部16は、シストリックアレイセル21のレジスタ41に、上式(9)に示す重み係数wi,jを設定する。具体的には、重み係数w0,0,w0,1,w0,2をそれぞれ、アレイセル群61の第1行の第1列、第2列、第3列に位置するシストリックアレイセル21(図10のシストリックアレイセルa0,0,a0,1,a0,2)のレジスタ41に設定する。また、重み係数w0,3,w0,4,w0,5をそれぞれ、アレイセル群61の第3行の第1列、第2列、第3列に位置するシストリックアレイセル21(図10のシストリックアレイセルa2,0,a2,1,a2,2)のレジスタ41に設定する。また、重み係数w1,0,w1,1,w1,2をそれぞれ、アレイセル群61の第2行の第1列、第2列、第3列に位置するシストリックアレイセル21(図10のシストリックアレイセルa1,0,a1,1,a1,2)のレジスタ41に設定する。また、重み係数w1,3,w1,4,w1,5をそれぞれ、アレイセル群62の第1行の第1列、第2列、第3列に位置するシストリックアレイセル21(図10のシストリックアレイセルb0,0,b0,1,b0,2)のレジスタ41に設定する。
そして全結合演算制御部16は、中間層群G1から全結合層群G2へ出力された畳込演算結果データを、第1,3行の第j列(i=1,2,3)に位置するシストリックアレイセル21に対応するスイッチ22の入力端子22aへ出力する。
例えば図11に示すように、全結合演算制御部16は、予め設定された出力周期Δtが経過する毎に、畳込演算結果データをシストリックアレイ11へ出力する。
畳込演算結果データの出力を開始した時点からの経過時間tがn×Δt(nは0以上の整数)であるときに、アレイセル群61の第1行の第j列(j=1,2,3)に位置するシストリックアレイセル21へ出力される畳込演算結果データは、xn+1−j,j−1である。但し、(n+1−j)<0である場合には、xn+1−j,j−1=0である。
また、アレイセル群61の第3行の第j列(j=1,2,3)に位置するシストリックアレイセル21へ出力される畳込演算結果データは、xn−j,j+2である。但し、(n−j)<0である場合には、xn−j,j+2=0である。
この場合には、スイッチ103の出力端子103bから、下式(11)に示すデータ(R+R)が出力される。また、スイッチ104の出力端子104cから、下式(12)に示すデータ(R+R)が出力される。
このように構成された演算処理装置4では、複数のシストリックアレイセル21が、行数が6で列数が3となるようにして二次元行列状に配列されている。また全結合演算は、行数が6で列数が2となる行列である全結合演算行列を用いた演算を行う。
全結合演算行列の行数である6を、複数のシストリックアレイセル21の列数である3で除算することにより得られる除算値について小数点以下を切り上げた値は2である。そして全結合演算制御部16は、複数のシストリックアレイセル21の6個の行のうち、2個の行に配置されている6個のシストリックアレイセル21へ、全結合演算のための6個の畳込演算結果データが入力されるように制御する。
これにより、演算処理装置4は、シストリックアレイ11を構成する複数のシストリックアレイセル21が畳み込み演算用に配列されている場合であっても、シストリックアレイ11を用いて全結合演算を実行することができる。
また、複数のシストリックアレイセル21のレジスタ41に、行列W,W,・・・・,Wvの行列積により算出された値が重み係数wi,jとして設定される。これにより、演算処理装置4は、全結合層Lj1,Lj2,・・・・,Ljvの全結合演算を実行するために必要な計算量を低減することができる。
また、二次元行列状に配列された複数のシストリックアレイセル21は、互いに隣接する2行分の行を1個の行集合として、2個の行集合に分割される。また、行集合を構成する行の中で最も行番号が小さい行に位置するシストリックアレイセル21の入力スイッチ22の入力端子22aは、全結合演算制御部16に接続される。
行集合を構成する行の中で最も行番号が小さい行以外に位置するシストリックアレイセル21の入力スイッチ22の入力端子22aは、行が1つ小さく且つ列が同じ位置のシストリックアレイセル21における出力スイッチ23の出力端子23bに接続される。
2個の行集合に対して、分割番号1,2を付すと、分割番号1の行集合は、アレイセル群61の第1,2行に位置するシストリックアレイセル21である。また、分割番号2の行集合は、アレイセル群61の第3行とアレイセル群62の第1行に位置するシストリックアレイセル21である。
そして全結合演算制御部16は、経過時間tがn×Δt(nは0以上の整数)であるときに、分割番号がw(w=1,2)である行集合を構成する行の中で最も行番号が小さい行の第j列に位置するシストリックアレイセル21の入力スイッチ22の入力端子22aへ、xn−j−w+2,3×(w−1)+j−1が入力されるように制御する。xn−j−w+2,3×(w−1)+j−1は、2次元行列で表される畳込演算結果データであり、(n−j−w+2)が0未満のときには値が0となる。これにより、シストリックアレイ11は、上式(11)に示すデータ(R+R)と、上式(12)に示すデータ(R+R)を、全結合演算結果データとして算出することができる。
(第3実施形態)
以下に本発明の第3実施形態を図面とともに説明する。なお第3実施形態では、第1実施形態と異なる部分を説明する。
第3実施形態の運転支援装置1は、シストリックアレイ11の構成が第1実施形態と異なる。
第3実施形態のシストリックアレイ11は、図12に示すように、2つのアレイセル群61,62を備える。アレイセル群61は、3行×3列で二次元行列状に配列された9個のシストリックアレイセル21(シストリックアレイセルa0,0,a0,1,a0,2,・・・,a2,2を参照)を備える。アレイセル群62は、3行×3列で二次元行列状に配列された9個のシストリックアレイセル21(シストリックアレイセルb0,0,b0,1,b0,2を参照)を備える。なお、図12では、アレイセル群62が備える9個のシストリックアレイセル21のうち、シストリックアレイセルb0,0,b0,1,b0,2を示している。
アレイセル群61のシストリックアレイセル21に対応する入力スイッチ22の入力端子22aは、全結合演算制御部16に接続される。また、アレイセル群62の第1行に位置するシストリックアレイセル21に対応する入力スイッチ22の入力端子22aは、全結合演算制御部16に接続される。そして、全結合演算制御部16から畳込演算結果データが入力される。
アレイセル群61,62の第i行(i=1,2,3)の第1列に位置するシストリックアレイセル21に対応する入力スイッチ22の入力端子22bは、畳込演算制御部15に接続される。そして、畳込演算制御部15から画像データと畳込演算結果データが入力される。
またシストリックアレイ11は、スイッチ111,112と、加算器121,122と、フリップフロップ回路131,132と、加算器141,142と、フリップフロップ回路151,152とを備える。
スイッチ111,112はそれぞれ、入力端子111a,112aおよび入力端子111b,112bと、出力端子111c,112cとを備える。
スイッチ111の2つの入力端子111a,111bには、予め設定された初期値を示すデータが入力される。加算器121は、スイッチ111の出力端子111cからのデータと、アレイセル群61の第1行の第3列に位置するシストリックアレイセル21(図12のシストリックアレイセルa0,2を参照)からのデータとを加算し、この加算結果を示すデータを出力する。フリップフロップ回路131は、加算器121からの加算結果を示すデータを出力するタイミングを調整する。加算器141は、フリップフロップ回路131を介して加算器121から入力される加算結果を示すデータと、アレイセル群61の第2行の第3列に位置するシストリックアレイセル21(図12のシストリックアレイセルa1,2を参照)からのデータとを加算し、この加算結果を示すデータを出力する。フリップフロップ回路151は、加算器141からの加算結果を示すデータを出力するタイミングを調整する。
スイッチ112の入力端子112aには、加算器141からの加算結果を示すデータがフリップフロップ回路151を介して入力される。スイッチ112の入力端子112bには、予め設定された初期値を示すデータが入力される。加算器122は、スイッチ112の出力端子112cからのデータと、アレイセル群61の第3行の第3列に位置するシストリックアレイセル21(図12のシストリックアレイセルa2,2を参照)からのデータとを加算し、この加算結果を示すデータを出力する。フリップフロップ回路132は、加算器122からの加算結果を示すデータを出力するタイミングを調整する。加算器142は、フリップフロップ回路132を介して加算器122から入力される加算結果を示すデータと、アレイセル群62の第1行の第3列に位置するシストリックアレイセル21(図12のシストリックアレイセルb0,2を参照)からのデータとを加算し、この加算結果を示すデータを出力する。フリップフロップ回路152は、加算器142からの加算結果を示すデータを出力するタイミングを調整する。
畳込演算制御部15は、畳み込み演算を実行する場合に、スイッチ111,112に対して切り替えを行う。具体的には、畳込演算制御部15は、スイッチ111に対して、2つの入力端子111a,111bのうち入力端子111aを選択し、入力端子111aから入力されたデータを出力端子111cから出力するようにデータ入出力経路を切り替える。また畳込演算制御部15は、スイッチ112に対して、2つの入力端子112a,112bのうち入力端子112aを選択し、入力端子112aから入力されたデータを出力端子112cから出力するようにデータ入出力経路を切り替える。
この場合に、第i行(i=1,2,3,4)の第3列に位置するシストリックアレイセル21の演算部40から出力されるデータをRi−1と表記すると、フリップフロップ回路152から(R+R+R+R)が出力される。
全結合演算制御部16は、全結合演算を実行する場合に、スイッチ111,112に対して切り替えを行う。具体的には、全結合演算制御部16は、スイッチ111に対して、2つの入力端子111a,111bのうち入力端子111bを選択し、入力端子111bから入力されたデータを出力端子111cから出力するようにデータ入出力経路を切り替える。また全結合演算制御部16は、スイッチ112に対して、2つの入力端子112a,112bのうち入力端子112bを選択し、入力端子112bから入力されたデータを出力端子112cから出力するようにデータ入出力経路を切り替える。
この場合に、第i行(i=1,2,3,4)の第3列に位置するシストリックアレイセル21の演算部40から出力されるデータをRi−1と表記すると、フリップフロップ回路151から(R+R)が出力され、フリップフロップ回路152から(R+R)が出力される。
また全結合演算制御部16は、シストリックアレイセル21のレジスタ41に、上式(9)に示す重み係数wi,jを設定する。具体的には、重み係数w0,0,w0,1,w0,2をそれぞれ、アレイセル群61の第1行の第1列、第2列、第3列に位置するシストリックアレイセル21(図12のシストリックアレイセルa0,0,a0,1,a0,2)のレジスタ41に設定する。また、重み係数w0,3,w0,4,w0,5をそれぞれ、アレイセル群61の第2行の第1列、第2列、第3列に位置するシストリックアレイセル21(図12のシストリックアレイセルa1,0,a1,1,a1,2)のレジスタ41に設定する。また、重み係数w1,0,w1,1,w1,2をそれぞれ、アレイセル群61の第3行の第1列、第2列、第3列に位置するシストリックアレイセル21(図12のシストリックアレイセルa2,0,a2,1,a2,2)のレジスタ41に設定する。また、重み係数w1,3,w1,4,w1,5をそれぞれ、アレイセル群62の第1行の第1列、第2列、第3列に位置するシストリックアレイセル21(図12のシストリックアレイセルb0,0,b0,1,b0,2)のレジスタ41に設定する。
そして全結合演算制御部16は、中間層群G1から全結合層群G2へ出力された畳込演算結果データを、アレイセル群61の第1,2,3行およびアレイセル群62の第1行の第j列(i=1,2,3)に位置するシストリックアレイセル21に対応するスイッチ22の入力端子22aへ出力する。
例えば図13に示すように、全結合演算制御部16は、予め設定された出力周期Δtが経過する毎に、畳込演算結果データをシストリックアレイ11へ出力する。
畳込演算結果データの出力を開始した時点からの経過時間tがn×Δt(nは0以上の整数)であるときに、アレイセル群61の第1,3行の第j列(j=1,2,3)に位置するシストリックアレイセル21へ出力される畳込演算結果データは、xn+1−j,j−1である。但し、(n+1−j)<0である場合には、xn+1−j,j−1=0である。
また、アレイセル群61の第2行およびアレイセル群62の第1行の第j列(j=1,2,3)に位置するシストリックアレイセル21へ出力される畳込演算結果データは、xn−j,j+2である。但し、(n−j)<0である場合には、xn−j,j+2=0である。
この場合には、フリップフロップ回路151から、下式(13)に示すデータ(R+R)が出力される。また、フリップフロップ回路152から、下式(14)に示すデータ(R+R)が出力される。
このように構成された演算処理装置4では、複数のシストリックアレイセル21が、行数が6で列数が3となるようにして二次元行列状に配列されている。また全結合演算は、行数が6で列数が2となる行列である全結合演算行列を用いた演算を行う。
全結合演算行列の行数である6を、複数のシストリックアレイセル21の列数である3で除算することにより得られる除算値について小数点以下を切り上げた値は2である。そして、全結合演算制御部16は、全結合演算のための6個の畳込演算結果データに対して、それぞれ2個のシストリックアレイセル21を割り当て、割り当てられた2個のシストリックアレイセル21に対して、対応する1個の畳込演算結果データが入力されるように制御する。
これにより、演算処理装置4は、シストリックアレイ11を構成する複数のシストリックアレイセル21が畳み込み演算用に配列されている場合であっても、シストリックアレイ11を用いて全結合演算を実行することができる。
また、複数のシストリックアレイセル21のレジスタ41に、行列W,W,・・・・,Wvの行列積により算出された値が重み係数wi,jとして設定される。これにより、演算処理装置4は、全結合層Lj1,Lj2,・・・・,Ljvの全結合演算を実行するために必要な計算量を低減することができる。
全結合演算行列の行数である6を、複数のシストリックアレイセル21の列数である3で除算することにより得られる除算値について小数点以下を切り上げた値は2である。二次元行列状に配列された複数のシストリックアレイセル21の6個の行のうち、2行分の行を1個の行集合として、2個の行集合に分割される。2個の行集合に対して、分割番号1,2を付すと、分割番号1の行集合は、アレイセル群61の第1,3行に位置するシストリックアレイセル21である。また、分割番号2の行集合は、アレイセル群61の第2行とアレイセル群62の第1行に位置するシストリックアレイセル21である。
そして全結合演算制御部16は、経過時間tがn×Δt(nは0以上の整数)であるときに、分割番号がw(w=1,2)である行集合を構成する行の第j列に位置するシストリックアレイセル21の入力スイッチ22の入力端子22aへ、xn−j−w+2,q×(w−1)+j−1が入力されるように制御する。xn−j−w+2,q×(w−1)+j−1は、2次元行列で表される畳込演算結果データであり、(n−j−w+2)が0未満のときには値が0となる。これにより、シストリックアレイ11は、上式(13)に示すデータ(R+R)と、上式(14)に示すデータ(R+R)を、全結合演算結果データとして算出することができる。
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採ることができる。
(変形例1)
例えば上記実施形態では、行列W,W,・・・・,Wvの行列積により算出された値を重み係数wi,jとしてシストリックアレイセル21のレジスタ41に設定するものを示した。しかし、行列W,W,・・・・,Wvの重み係数を順次、シストリックアレイセル21のレジスタ41に設定することにより、全結合層Lj1,Lj2,・・・・,Ljvの全結合演算を順次、シストリックアレイ11に実行させるようにしてもよい。
また、上記実施形態における1つの構成要素が有する機能を複数の構成要素として分散させたり、複数の構成要素が有する機能を1つの構成要素に統合させたりしてもよい。また、上記実施形態の構成の少なくとも一部を、同様の機能を有する公知の構成に置き換えてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加または置換してもよい。なお、特許請求の範囲に記載した文言のみによって特定される技術思想に含まれるあらゆる態様が本発明の実施形態である。
4…演算処理装置、15…畳込演算制御部、16…全結合演算制御部、21…シストリックアレイセル、22…入力スイッチ、22a…入力端子、22b…入力端子、22c…出力端子、23…出力スイッチ、23a…入力端子、23b…出力端子、23c…出力端子、30…タイミング調整部、40…演算部

Claims (9)

  1. 中間層と全結合層とを有する畳み込みニューラルネットワークの演算を実行する演算処理装置(4)であって、
    複数のシストリックアレイセル(21)と、
    複数の前記シストリックアレイセルのそれぞれに対応して設けられ、第1入力用端子(22a)、第2入力用端子(22b)および第3入力用端子(22c)を有し、前記第1入力用端子と前記第3入力用端子とが接続された第1入力用接続状態と、前記第2入力用端子と前記第3入力用端子とが接続された第2入力用接続状態との何れか一方に切り替わる複数の入力スイッチ(22)と、
    複数の前記シストリックアレイセルのそれぞれに対応して設けられ、第1出力用端子(23a)、第2出力用端子(23b)および第3出力用端子(23c)を有し、前記第1出力用端子と前記第2出力用端子とが接続された第1出力用接続状態と、前記第1出力用端子と前記第3出力用端子とが接続された第2出力用接続状態との何れか一方に切り替わる複数の出力スイッチ(23)と、
    前記中間層の畳み込み演算が実行される場合に、前記第2入力用接続状態となるように前記入力スイッチを切り替えるとともに前記第2出力用接続状態となるように前記出力スイッチを切り替え、前記畳み込み演算を実行するために複数の前記シストリックアレイセルへのデータ入力を制御する畳込演算制御部(15)と、
    前記全結合層の全結合演算が実行される場合に、前記第1入力用接続状態となるように前記入力スイッチを切り替えるとともに前記第1出力用接続状態となるように前記出力スイッチを切り替え、前記全結合演算を実行するために複数の前記シストリックアレイセルへのデータ入力を制御する全結合演算制御部(16)とを備え、
    前記シストリックアレイセルは、
    前記シストリックアレイセルに対応して設けられた前記入力スイッチである対応入力スイッチの前記第3入力用端子から入力されるデータの出力タイミングを調整して、前記シストリックアレイセルに対応して設けられた前記出力スイッチである対応出力スイッチの前記第1出力用端子へ出力するタイミング調整部(30)と、
    前記対応入力スイッチの前記第3入力用端子から入力されるデータと予め設定された重み係数とを乗算した乗算値と、前記対応入力スイッチを介することなく入力されるデータとを加算した加算値をセル出力データとして、前記対応出力スイッチを介することなく前記セル出力データを出力する演算部(40)とを備える
    ことを特徴とする演算処理装置。
  2. 前記全結合層の第1層、第2層、・・・、第v層はそれぞれ、行列W,W,・・・・,Wを用いて前記全結合演算を実行するものであり、
    複数の前記シストリックアレイセルは、二次元行列状に配列され、第i行(iは1以上の整数)の第j列(jは1以上の整数)に位置する前記シストリックアレイセルの前記重み係数には、下式に示すwi,jが設定される
    ことを特徴とする請求項1に記載の演算処理装置。
  3. 複数の前記シストリックアレイセルは、二次元行列状に配列され、
    第1行に位置する前記シストリックアレイセルの前記入力スイッチの前記第1入力用端子は、前記全結合演算のための入力データである全結合演算用入力データが入力されるように接続され、
    第2行以上に位置する前記シストリックアレイセルの前記入力スイッチの前記第1入力用端子は、行が1つ小さく且つ列が同じ位置に配置された前記シストリックアレイセルにおける前記出力スイッチの前記第2出力用端子に接続され、
    予め設定されたデータ周期をΔtとし、前記全結合演算用入力データの入力の開始時点からの経過時間をtとして、前記全結合演算制御部は、前記経過時間がt=n×Δt(nは0以上の整数)であるときに、第1行の第j列に位置する前記シストリックアレイセルの前記入力スイッチの前記第1入力用端子へ、2次元行列で表される前記全結合演算用入力データとして、(n−j+1)が0未満のときには値が0となるxn−j+1,j−1が入力されるように制御する
    ことを特徴とする請求項1または請求項2に記載の演算処理装置。
  4. 複数の前記シストリックアレイセルは、行数がpで列数がqとなるようにして二次元行列状に配列され(p,qは2以上の整数)、
    前記全結合演算は、行数がrで列数がsとなる行列である全結合演算行列を用いた演算を行い(r,sは1以上の整数)、
    前記全結合演算制御部は、rをqで除算することにより得られる除算値について小数点以下を切り上げた値をuとして、前記二次元行列状に配列された複数の前記シストリックアレイセルのp個の行のうち、u個の行に配置されているr個の前記シストリックアレイセルへ、前記全結合演算のためのr個の入力データが入力されるように制御する
    ことを特徴とする請求項1に記載の演算処理装置。
  5. 前記全結合層の第1層、第2層、・・・、第v層はそれぞれ、行列W,W,・・・・,Wを用いて前記全結合演算を実行するものであり、
    複数の前記シストリックアレイセルの前記重み係数には、前記行列W,W,・・・・,Wの行列積により算出された値が設定される
    ことを特徴とする請求項4に記載の演算処理装置。
  6. 二次元行列状に配列された複数の前記シストリックアレイセルは、互いに隣接するs行分の行を1個の行集合として、u個の前記行集合に分割され、
    前記行集合を構成する行の中で最も行番号が小さい行に位置する前記シストリックアレイセルの前記入力スイッチの前記第1入力用端子は、前記全結合演算のための前記入力データである全結合演算用入力データが入力されるように接続され、
    前記行集合を構成する行の中で最も行番号が小さい行以外に位置する前記シストリックアレイセルの前記入力スイッチの前記第1入力用端子は、行が1つ小さく且つ列が同じ位置の前記シストリックアレイセルにおける前記出力スイッチの前記第2出力用端子に接続され、
    予め設定されたデータ周期をΔtとし、前記全結合演算用入力データの入力の開始時点からの経過時間をtとし、u個の前記行集合に対して分割番号1,2,・・・,uを付すと、
    前記全結合演算制御部は、前記経過時間がt=n×Δt(nは0以上の整数)であるときに、分割番号がw(w=1,2,・・・,u)である前記行集合を構成する行の中で最も行番号が小さい行の第j列に位置する前記シストリックアレイセルの前記入力スイッチの前記第1入力用端子へ、2次元行列で表される前記全結合演算用入力データとして(n−j−w+2)が0未満のときには値が0となるxn−j−w+2,q×(w−1)+j−1が入力されるように制御する
    ことを特徴とする請求項4または請求項5に記載の演算処理装置。
  7. 複数の前記シストリックアレイセルは、行数がpで列数がqとなるようにして二次元行列状に配列され(p,qは2以上の整数)、
    前記全結合演算は、行数がrで列数がsとなる行列である全結合演算行列を用いた演算を行い(r,sは1以上の整数)、
    前記全結合演算制御部は、前記全結合演算のための前記入力データであるr個の全結合演算用入力データに対して、それぞれs個の前記シストリックアレイセルを割り当て、割り当てられたs個の前記シストリックアレイセルに対して、対応する1個の前記全結合演算用入力データが入力されるように制御する
    ことを特徴とする請求項1に記載の演算処理装置。
  8. 前記全結合層の第1層、第2層、・・・、第v層はそれぞれ、行列W,W,・・・・,Wを用いて前記全結合演算を実行するものであり、
    複数の前記シストリックアレイセルの前記重み係数には、前記行列W,W,・・・・,Wの行列積により算出された値が設定される
    ことを特徴とする請求項7に記載の演算処理装置。
  9. rをqで除算することにより得られる除算値について小数点以下を切り上げた値をuとし、二次元行列状に配列された複数の前記シストリックアレイセルのp個の行のうちs行分の行を1個の行集合として、複数の前記シストリックアレイセルがu個の前記行集合に分割され、
    予め設定されたデータ周期をΔtとし、前記全結合演算用入力データの入力の開始時点からの経過時間をtとし、u個の前記行集合に対して分割番号1,2,・・・,uを付すと、
    前記全結合演算制御部は、前記経過時間がt=n×Δt(nは0以上の整数)であるときに、分割番号がw(w=1,2,・・・,u)である前記行集合を構成する行の第j列に位置する前記シストリックアレイセルの前記入力スイッチの前記第1入力用端子へ、2次元行列で表される前記全結合演算用入力データとして(n−j−w+2)が0未満のときには値が0となるxn−j−w+2,q×(w−1)+j−1が入力されるように制御する
    ことを特徴とする請求項7または請求項8に記載の演算処理装置。
JP2015137102A 2015-07-08 2015-07-08 演算処理装置 Active JP6387913B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015137102A JP6387913B2 (ja) 2015-07-08 2015-07-08 演算処理装置
PCT/JP2016/002680 WO2017006512A1 (ja) 2015-07-08 2016-06-02 演算処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015137102A JP6387913B2 (ja) 2015-07-08 2015-07-08 演算処理装置

Publications (2)

Publication Number Publication Date
JP2017021483A JP2017021483A (ja) 2017-01-26
JP6387913B2 true JP6387913B2 (ja) 2018-09-12

Family

ID=57684937

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015137102A Active JP6387913B2 (ja) 2015-07-08 2015-07-08 演算処理装置

Country Status (2)

Country Link
JP (1) JP6387913B2 (ja)
WO (1) WO2017006512A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11423291B2 (en) 2019-06-26 2022-08-23 Kabushiki Kaisha Toshiba Arithmetic device and arithmetic method

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107578095B (zh) * 2017-09-01 2018-08-10 中国科学院计算技术研究所 神经网络计算装置及包含该计算装置的处理器
CN107832841B (zh) * 2017-11-14 2020-05-05 福州瑞芯微电子股份有限公司 一种神经网络芯片的功耗优化方法及电路
US10796198B2 (en) 2018-02-08 2020-10-06 Western Digital Technologies, Inc. Adjusting enhancement coefficients for neural network engine
US11164072B2 (en) * 2018-02-08 2021-11-02 Western Digital Technologies, Inc. Convolution engines for systolic neural network processor
WO2019215907A1 (ja) * 2018-05-11 2019-11-14 オリンパス株式会社 演算処理装置
JP7038608B2 (ja) 2018-06-15 2022-03-18 ルネサスエレクトロニクス株式会社 半導体装置
KR20200107295A (ko) * 2019-03-07 2020-09-16 에스케이하이닉스 주식회사 시스톨릭 어레이 및 프로세싱 시스템
US10929058B2 (en) 2019-03-25 2021-02-23 Western Digital Technologies, Inc. Enhanced memory device architecture for machine learning
US11783176B2 (en) 2019-03-25 2023-10-10 Western Digital Technologies, Inc. Enhanced storage device memory architecture for machine learning
KR102393916B1 (ko) * 2019-06-27 2022-05-02 주식회사 사피온코리아 위노그라드 알고리즘에 기반한 행렬 곱셈 방법 및 장치
JP7253468B2 (ja) * 2019-07-26 2023-04-06 株式会社メガチップス ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム
US20210150311A1 (en) * 2019-11-19 2021-05-20 Alibaba Group Holding Limited Data layout conscious processing in memory architecture for executing neural network model
TWI788795B (zh) * 2021-02-26 2023-01-01 威強電工業電腦股份有限公司 電源管理電路及其系統

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11423291B2 (en) 2019-06-26 2022-08-23 Kabushiki Kaisha Toshiba Arithmetic device and arithmetic method

Also Published As

Publication number Publication date
WO2017006512A1 (ja) 2017-01-12
JP2017021483A (ja) 2017-01-26

Similar Documents

Publication Publication Date Title
JP6387913B2 (ja) 演算処理装置
JP6987860B2 (ja) ハードウェアにおけるカーネルストライドの実行
US11455370B2 (en) Flattened input stream generation for convolution with expanded kernel
EP3557484B1 (en) Neural network convolution operation device and method
KR102325602B1 (ko) 데이터를 병렬적으로 처리하는 장치 및 방법
US20180173676A1 (en) Adaptive execution engine for convolution computing systems
US20180197067A1 (en) Methods and apparatus for matrix processing in a convolutional neural network
EP3872747A1 (en) Video super resolution method
JP7014393B2 (ja) データ処理装置、及びこれにおけるデータ処理方法
CN110188869B (zh) 一种基于卷积神经网络算法的集成电路加速计算的方法及系统
CN112215345B (zh) 一种基于Tensorcore的卷积神经网络运转方法和装置
CN111133455A (zh) 处理器及其控制方法
US10154205B2 (en) Electronic device and image processing method thereof
CN1198206C (zh) 时分型矩阵计算器
JP2016057831A (ja) 浮動小数点演算装置、及び情報処理システム
US20100303383A1 (en) Systems and methods for the efficient computation of image transforms
CN112132914B (zh) 一种图像尺度空间建立方法及图像处理芯片
JP5939572B2 (ja) データ処理装置
JP2001195564A (ja) 画像検出処理装置
CN104317352B (zh) 一种自适应光学控制系统快速去倾斜分量处理方法
JPWO2018135088A1 (ja) データ処理装置、畳み込み演算装置および畳み込みニューラルネットワーク装置
JPH0364279A (ja) 画像ブレ検知装置
JP5045652B2 (ja) 相関処理装置及びその相関処理装置で読みとり可能な媒体
JP2007233934A (ja) 演算回路および演算方法
WO2023112581A1 (ja) 推論装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170613

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180717

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180730

R151 Written notification of patent or utility model registration

Ref document number: 6387913

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250