JP7241563B2 - neural network circuit - Google Patents
neural network circuit Download PDFInfo
- Publication number
- JP7241563B2 JP7241563B2 JP2019025269A JP2019025269A JP7241563B2 JP 7241563 B2 JP7241563 B2 JP 7241563B2 JP 2019025269 A JP2019025269 A JP 2019025269A JP 2019025269 A JP2019025269 A JP 2019025269A JP 7241563 B2 JP7241563 B2 JP 7241563B2
- Authority
- JP
- Japan
- Prior art keywords
- input data
- sum
- adder
- multiplier
- multipliers
- 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
Links
Images
Landscapes
- Complex Calculations (AREA)
Description
本発明は、ニューラルネットワーク回路に関する。 The present invention relates to neural network circuits.
ニューラルネットワークは、一般的に、積和演算回路を用いて構成される。また、ニューラルネットワークは、学習又は推論する対象(以下、学習又は推論対象)に応じて異なった構成となるため、学習又は推論対象を変更する場合には、ニューラルネットワークの構成の変更に伴って、ニューラルネットワーク回路の構成を変更する必要がある。そこで、従来では、ニューラルネットワークの学習又は推論対象を変更する際に、FPGA(field-programmable gate array)のリコンフィグレーション機能を利用し、FPGA内の論理回路を書き換える方法が用いられている(例えば、特許文献1参照)。なお、FPGAのリコンフィグレーション機能とは、FPGAに変更後の設計データを書き込むことで、例えば、FPGAが備えている複数のロジックセル間の配線の接続を変更することにより、FPGAの論理回路を書き換える機能を意味する。 A neural network is generally configured using a sum-of-products operation circuit. In addition, since the neural network has a different configuration depending on the object to be learned or inferred (hereinafter referred to as the object to be learned or inferred), when changing the object to be learned or inferred, the neural network configuration changes, It is necessary to change the configuration of the neural network circuit. Therefore, conventionally, when changing the learning or inference target of the neural network, the reconfiguration function of FPGA (field-programmable gate array) is used to rewrite the logic circuit in FPGA (for example, , see Patent Document 1). Note that the reconfiguration function of FPGA is to write changed design data into FPGA. Means the ability to rewrite.
従来のリコンフィグレーション機能を利用してFPGAの論理回路を書き換える手法では、FPGAのリコンフィグレーション機能を動作させるのに時間を要するため、ニューラルネットワークの学習又は推論対象を変更する際に、新たな学習又は推論対象に対応したニューラルネットワーク回路の構成を構築しなおすまでに時間を要するという問題がある。
この発明は、上記のような問題点を解決するためになされたものであり、FPGAのリコンフィグレーション機能よりも、ニューラルネットワーク回路の構成を短時間で変更することができる技術を提供することを目的とする。
In the conventional method of rewriting the FPGA logic circuit using the reconfiguration function, it takes time to operate the reconfiguration function of the FPGA. There is a problem that it takes time to rebuild the configuration of the neural network circuit corresponding to the learning or inference target.
SUMMARY OF THE INVENTION The present invention has been made to solve the above-described problems, and aims to provide a technique capable of changing the configuration of a neural network circuit in a shorter time than the reconfiguration function of FPGA. aim.
この発明に係るニューラルネットワーク回路は、入力データに対して演算処理を行い、当該演算処理の結果である出力データを出力する演算回路と、演算回路への入力データの供給を制御する入力データ制御部とを備え、演算回路は、重みパラメータ及び選択パラメータを格納する格納部と、それぞれが、入力データ制御部が供給した入力データと、格納部が格納する重みパラメータとの積を算出する複数の乗算器と、複数の乗算器がそれぞれ算出した積の和を算出する加算器と、格納部が格納する選択パラメータに応じて、加算器が算出した和を加算器にフィードバックする選択部と、を備え、入力データ制御部は、複数の乗算器のうちの一部又は全ての乗算器に入力データを供給し、複数の乗算器のうちの一部又は全ての乗算器は、それぞれ、入力データ制御部が供給した入力データと、格納部が格納する重みパラメータとの積を算出し、加算器は、複数の乗算器のうちの一部又は全ての乗算器がそれぞれ入力データを用いて算出した積の和である第1の和を算出し、入力データ制御部は、複数の乗算器のうちの一部又は全ての乗算器に入力データとは別の入力データを供給し、複数の乗算器のうちの一部又は全ての乗算器は、それぞれ、入力データ制御部が供給した別の入力データと、格納部が格納する重みパラメータとの積を算出し、加算器は、複数の乗算器のうちの一部又は全ての乗算器がそれぞれ別の入力データを用いて算出した積の和である第2の和を算出し、選択部は、選択パラメータに応じて、加算器が算出した第1の和を加算器にフィードバックし、加算器は、選択部がフィードバックした第1の和と、算出した第2の和との和である第3の和を算出する。
この発明に係るニューラルネットワーク回路は、入力データに対して演算処理を行い、当該演算処理の結果である出力データを出力する演算回路と、演算回路への入力データの供給を制御する入力データ制御部とを備え、演算回路は、重みパラメータ及び選択パラメータを格納する格納部と、それぞれが、入力データ制御部が供給した入力データと、格納部が格納する重みパラメータとの積を算出する複数の乗算器と、複数の乗算器がそれぞれ算出した積の和を算出する加算器と、格納部が格納する選択パラメータに応じて、加算器が算出した和を加算器にフィードバックする選択部と、を備え、入力データ制御部は、第1の入力データを、複数の乗算器のうちの第1の乗算器に供給し、第2の入力データを、複数の乗算器のうちの第2の乗算器に供給し、第1の乗算器は、入力データ制御部が供給した第1の入力データと、格納部が格納する重みパラメータとの積である第1の積を算出し、第2の乗算器は、入力データ制御部が供給した第2の入力データと、格納部が格納する重みパラメータとの積である第2の積を算出し、加算器は、第1の積と第2の積との和である第1の和を算出し、入力データ制御部は、第3の入力データを、複数の乗算器のうちの第1の乗算器に供給し、第4の入力データを、複数の乗算器のうちの第2の乗算器に供給し、第1の乗算器は、入力データ制御部が供給した第3の入力データと、格納部が格納する重みパラメータとの積である第3の積を算出し、第2の乗算器は、入力データ制御部が供給した第4の入力データと、格納部が格納する重みパラメータとの積である第4の積を算出し、加算器は、第3の積と第4の積との和である第2の和を算出し、選択部は、選択パラメータに応じて、加算器が算出した第1の和を加算器にフィードバックし、加算器は、選択部がフィードバックした第1の和と、算出した第2の和との和である第3の和を算出する。
この発明に係るニューラルネットワーク回路は、入力データに対して演算処理を行い、当該演算処理の結果である出力データを出力する演算回路と、演算回路への入力データの供給を制御する入力データ制御部とを備え、演算回路は、重みパラメータ及び選択パラメータを格納する格納部と、それぞれが、入力データ制御部が供給した入力データと、格納部が格納する重みパラメータとの積を算出する複数の乗算器と、複数の乗算器がそれぞれ算出した積の和を算出する加算器と、格納部が格納する選択パラメータに応じて、加算器が算出した和を加算器にフィードバックする選択部と、を備え、演算回路を複数備え、複数の演算回路のうちの第1の演算回路が備えている選択部は、格納部が格納する選択パラメータに応じて、複数の演算回路のうちの第2の演算回路が備えている加算器が算出した和を、第1の演算回路が備えている加算器にさらに出力し、第1の演算回路が備えている加算器は、算出した和と、第2の演算回路が備えている加算器が算出した和との和を算出する。
A neural network circuit according to the present invention includes an arithmetic circuit that performs arithmetic processing on input data and outputs output data that is the result of the arithmetic processing, and an input data control unit that controls the supply of input data to the arithmetic circuit. and a plurality of multiplication units each calculating a product of the input data supplied by the input data control unit and the weight parameter stored in the storage unit. an adder that calculates the sum of the products calculated by the plurality of multipliers; and a selection unit that feeds back the sum calculated by the adder to the adder according to a selection parameter stored in the storage unit. , the input data control unit supplies input data to some or all of the multiple multipliers, and some or all of the multiple multipliers each have an input data control unit calculates the product of the input data supplied by and the weight parameter stored in the storage unit, and the adder calculates the products calculated by some or all of the multiple multipliers using the input data, respectively. The input data control unit supplies input data different from the input data to some or all of the multiple multipliers, and A part or all of the multipliers of each of the multipliers calculates a product of another input data supplied by the input data control unit and a weight parameter stored in the storage unit, and an adder of the plurality of multipliers Some or all of the multipliers calculate a second sum that is a sum of products calculated using different input data, and the selection unit selects the first sum calculated by the adders according to the selection parameter is fed back to the adder, and the adder calculates the third sum that is the sum of the first sum fed back by the selector and the calculated second sum.
A neural network circuit according to the present invention includes an arithmetic circuit that performs arithmetic processing on input data and outputs output data that is the result of the arithmetic processing, and an input data control unit that controls the supply of input data to the arithmetic circuit. and a plurality of multiplication units each calculating a product of the input data supplied by the input data control unit and the weight parameter stored in the storage unit. an adder that calculates the sum of the products calculated by the plurality of multipliers; and a selection unit that feeds back the sum calculated by the adder to the adder according to a selection parameter stored in the storage unit. , the input data control unit supplies first input data to a first multiplier of the plurality of multipliers and supplies second input data to a second multiplier of the plurality of multipliers; a first multiplier for calculating a first product of the first input data supplied by the input data control unit and a weight parameter stored by the storage unit; and a second multiplier for , the second input data supplied by the input data control unit and the weight parameter stored in the storage unit to calculate a second product, the adder calculating the product of the first product and the second product; The input data control unit supplies the third input data to a first multiplier of the plurality of multipliers, and the fourth input data to the plurality of multiplications. The first multiplier supplies the third product which is the product of the third input data provided by the input data control unit and the weight parameter stored in the storage unit. , the second multiplier calculates a fourth product of the fourth input data supplied by the input data control unit and the weight parameter stored in the storage unit, and the adder calculates the fourth Calculate a second sum that is the sum of the product of 3 and the fourth product, the selection unit feeds back the first sum calculated by the adder to the adder according to the selection parameter, and the adder , a third sum that is the sum of the first sum fed back by the selector and the second sum calculated.
A neural network circuit according to the present invention includes an arithmetic circuit that performs arithmetic processing on input data and outputs output data that is the result of the arithmetic processing, and an input data control unit that controls the supply of input data to the arithmetic circuit. and a plurality of multiplication units each calculating a product of the input data supplied by the input data control unit and the weight parameter stored in the storage unit. an adder that calculates the sum of the products calculated by the plurality of multipliers; and a selection unit that feeds back the sum calculated by the adder to the adder according to a selection parameter stored in the storage unit. , a plurality of arithmetic circuits, wherein a selection unit included in a first arithmetic circuit among the plurality of arithmetic circuits selects a second arithmetic circuit among the plurality of arithmetic circuits in accordance with a selection parameter stored in the storage unit; further outputs the sum calculated by the adder provided in to the adder provided in the first arithmetic circuit, and the adder provided in the first arithmetic circuit outputs the calculated sum and the second calculation Calculate the sum with the sum calculated by the adder provided in the circuit.
FPGAのリコンフィグレーション機能よりも、ニューラルネットワーク回路の構成を短時間で変更することができる。 The configuration of the neural network circuit can be changed in a shorter time than the reconfiguration function of FPGA.
以下、この発明をより詳細に説明するため、この発明を実施するための形態について、添付の図面に従って説明する。
実施の形態1.
図1は、実施の形態1に係るニューラルネットワーク回路20を含む学習・推論システム1の構成を示すブロック図である。図1が示すように、学習・推論システム1は、情報入力部10、ニューラルネットワーク回路20、制御部30、及び学習・推論結果出力部40を備えている。
Hereinafter, in order to describe the present invention in more detail, embodiments for carrying out the present invention will be described with reference to the accompanying drawings.
Embodiment 1.
FIG. 1 is a block diagram showing the configuration of a learning/inference system 1 including a
情報入力部10は、ユーザによる入力により、ニューラルネットワーク回路20が学習又は推論を行う対象である入力データを取得する。情報入力部10は、入力データを、制御部30を介してニューラルネットワーク回路20に出力する。情報入力部10の例として、カメラ、マイク又はキーボード等が挙げられる。情報入力部10が入力する入力データの例として、画像データ、音声データ、又は文字列データ等が挙げられる。
ニューラルネットワーク回路20は、情報入力部10から取得した入力データを参照して、学習処理及び推論処理を行う。ニューラルネットワーク回路20は、当該学習処理及び推論処理の結果である出力データを制御部30に出力する。ニューラルネットワーク回路20の詳細な説明は後述する。
The
The
制御部30は、情報入力部10から取得した入力データを参照して、学習処理及び推論処理に用いられる重みパラメータ及び選択パラメータを設定又は更新する。次に、制御部30は、当該入力データ、重みパラメータ及び選択パラメータをニューラルネットワーク回路20に出力し、ニューラルネットワーク回路20から出力データを取得する。次に、制御部30は、当該出力データを参照して、ニューラルネットワーク回路20が学習処理及び推論処理に用いた重みパラメータ及び選択パラメータを設定又は更新する。以上の工程により、制御部30は、ニューラルネットワーク回路20による学習処理及び推論処理を制御する。なお、制御部30は、ニューラルネットワーク回路20から取得した出力データを参照して、重みパラメータを更新した後に、当該出力データをニューラルネットワーク回路20に戻してもよい。その場合、ニューラルネットワーク回路20は、当該出力データを用いて、再度、学習処理及び推論処理を行ってもよい。また、制御部30は、ニューラルネットワーク回路20から取得した出力データを、学習・推論結果出力部40による出力に適した形態に変換し、変換後のデータを学習・推論結果出力部40に出力する。当該変換後のデータの例として、画像データ、音声データ又は文字データ等が挙げられる。制御部30の例として、CPUが挙げられる。
学習・推論結果出力部40は、制御部30から取得した変換後のデータを、画像、音声又は文字等の形態として出力する。学習・推論結果出力部40の例として、ディスプレイ、LED又はスピーカ等が挙げられる。
The
The learning/inference
図2は、実施の形態1に係るニューラルネットワーク回路20の構成を示すブロック図である。図2が示すように、ニューラルネットワーク回路20は、入力データ制御部200、バッファ210、第1の演算回路800、及び第1の演算回路800と同様の構成を有する第2の演算回路900を備えている。なお、実施の形態1では、ニューラルネットワーク回路20が2つの演算回路を備えている構成について説明するが、ニューラルネットワーク回路20が備える演算回路の数は、これに限定されず、1以上の任意の数であり得る。
FIG. 2 is a block diagram showing the configuration of
バッファ210は、制御部30から入力データを取得し、当該入力データを一時的に蓄積する。バッファ210は、蓄積した入力データの一部又は全部を入力データ制御部200に出力する。
入力データ制御部200は、バッファ210から複数の入力データを取得し、第1の演算回路800及び第2の演算回路900への各入力データの供給を制御する。入力データ制御部200が入力データの供給を制御する方法の詳細については後述する。また、入力データ制御部200は、後述する格納部700からの重みパラメータ及び選択パラメータの出力を制御することにより、第1の演算回路800及び第2の演算回路900による各演算処理をさらに制御する。
The
The input
第1の演算回路800は、乗算器300、乗算器301、乗算器302、選択部400、加算器500、出力部600、及び格納部700を備えている。なお、本実施形態では、第1の演算回路800及び第2の演算回路900が、それぞれ、3つの乗算器を備えている構成について説明する。しかし、第1の演算回路800及び第2の演算回路900は、それぞれ、複数の乗算器を備えていればよく、第1の演算回路800が備えている乗算器の数と、第2の演算回路900が備えている乗算器の数とは、異なっていてもよく、当該構成に限定されない。
The first
格納部700は、制御部30が出力した重みパラメータ及び選択パラメータを格納する。また、格納部700は、入力データ制御部200の命令に基づいて、格納している重みパラメータを乗算器300、乗算器301、又は乗算器302に出力する。なお、重みパラメータは、出力される乗算器毎に存在し、それらの重みパラメータは、互いに同じ値でもよく、異なる値でもよい。また、格納部700は、入力データ制御部200の命令に基づいて、格納している選択パラメータを選択部400に出力する。なお、本実施形態では、入力データ制御部200が格納部700からの重みパラメータ及び選択パラメータの出力を制御する構成について説明するが、制御部30が格納部700からの重みパラメータ及び選択パラメータの出力を制御してもよい。
The
乗算器300、乗算器301、及び乗算器302は、それぞれ、入力データ制御部200が供給した入力データと、格納部700が出力した重みパラメータとの積を算出する。乗算器300、乗算器301、及び乗算器302は、それぞれ、算出した積を加算器500に出力する。
加算器500は、乗算器300、乗算器301、及び乗算器302がそれぞれ算出した積の和を算出する。加算器500は、算出した和を、後述する選択部400の動作に応じて、選択部400又は出力部600に出力する。
選択部400は、格納部700が出力した選択パラメータに応じて、加算器500が算出した和を加算器500にフィードバックする。
例えば、選択部400は、選択パラメータが、加算器500が算出した和である第1の和を加算器500にフィードバックするように指示する値である場合、当該第1の和を加算器500にフィードバックする。次に、加算器500は、選択部400がフィードバックした第1の和と、当該第1の和を算出した後に算出した和である第2の和とを加算し、当該加算結果である第3の和を、出力部600に出力する。一方で、選択部400は、選択パラメータが、当該第1の和を加算器500にフィードバックしないように指示する値である場合、0値を加算器500に出力する。その場合、加算器500は、算出した和をそのまま出力部600に出力する。つまり、加算器500の出力先は、算出した和が選択部400からフィードバックされた場合、及び、選択部400から0値を取得した場合、出力部600であり、それ以外の場合、選択部400である。
出力部600は、加算器500から取得した和を出力データとして制御部30に出力する。
The
For example, if the selection parameter is a value that instructs the
The
第2の演算回路900は、乗算器310、乗算器311、乗算器312、選択部410、加算器510、出力部610、及び格納部710を備えている。乗算器310、乗算器311、乗算器312、選択部410、加算器510、出力部610、及び格納部710は、それぞれ、上述の乗算器310、乗算器311、乗算器312、選択部400、加算器500、出力部600及び格納部700と同様の機能を有している。
The second
より詳細には、乗算器310は、入力データ制御部200が乗算器300に供給した入力データと同一の入力データと、乗算器300が用いた重みパラメータとは別の重みパラメータとの積を算出する。乗算器311は、入力データ制御部200が乗算器301に供給した入力データと同一の入力データと、乗算器301が用いた重みパラメータとは別の重みパラメータとの積を算出する。乗算器312は、入力データ制御部200が乗算器302に供給した入力データと同一の入力データと、乗算器302が用いた重みパラメータとは別の重みパラメータとの積を算出する。
More specifically, the
加算器510は、乗算器310、乗算器311、及び乗算器312がそれぞれ算出した積の和を算出し、選択部410は、格納部710が出力した選択パラメータに応じて、加算器510が算出した和を加算器510にフィードバックする。出力部610は、加算器510から取得した和を出力データとして制御部30に出力する。以上の構成により、ニューラルネットワーク回路20は、第1の演算回路800が算出した出力データと、第2の演算回路900が算出した出力データとの2つの出力データを出力する。上述の通り、ニューラルネットワーク回路20が備える演算回路の数は、2つに限定されず、任意の数であり得る。そのため、本実施形態に係るニューラルネットワーク回路20は、備えている演算回路の数と同一の数の出力データを出力し得る。
The
次に、実施の形態1に係るニューラルネットワーク回路20の動作について図面を参照して説明する。なお、ニューラルネットワーク回路20は、制御部30から、入力データと、重みパラメータ及び選択パラメータとを取得した時点から、当該動作を開始する。また、第1の演算回路800の動作と、第2の演算回路900の動作とは同じであるため、ニューラルネットワーク回路20が備えている演算回路の動作の説明に関しては、第1の演算回路800の動作についてのみ説明する。
Next, operation of the
まず、ニューラルネットワーク回路20が1つの出力データを算出するために用いる入力データの数が、第1の演算回路800及び第2の演算回路900がそれぞれ備えている乗算器の数以下である場合における、ニューラルネットワーク回路20の動作について説明する。図3は、当該場合における、実施の形態1に係るニューラルネットワーク回路20による演算処理方法を示すフローチャートである。また、本願明細書において、用語「同時」は、厳密に同じ時刻でなくてもよく、実質的に同じ時刻を含むものとする。
First, when the number of input data used by the
図3が示すように、入力データ制御部200は、乗算器300、乗算器301、及び乗算器302に各入力データを供給する(ステップST1)。また、入力データ制御部200は、格納部700が乗算器300、乗算器301、及び乗算器302にそれぞれ重みパラメータを出力するように格納部700に命令する。また、入力データ制御部200は、格納部700が選択部400に選択パラメータを出力するように格納部700に命令する。
As shown in FIG. 3, the input
乗算器300、乗算器301、及び乗算器302は、それぞれ、入力データ制御部200が供給した入力データと、格納部700から取得した重みパラメータとの積を算出する(ステップST2)。乗算器300、乗算器301、及び乗算器302は、算出した各積を加算器500に出力する。
The
加算器500は、乗算器300、乗算器301、及び乗算器302がそれぞれ算出した積の和を算出する(ステップST3)。
選択部400は、格納部700から取得した選択パラメータに基づき、加算器500に0値を出力する(ステップST4)。次に、加算器500は、ステップST3で算出した和をそのまま出力部600に出力する。
出力部600は、加算器500から取得した和を出力データとして制御部30に出力する(ステップST5)。
The
The
The
次に、ニューラルネットワーク回路20が1つの出力データを算出するために用いる入力データの数が、第1の演算回路800及び第2の演算回路900がそれぞれ備えている乗算器の数以下である場合における、ニューラルネットワーク回路20の動作の具体例について説明する。図4は、当該具体例を説明するための図である。図4では、同一の行に記載されている各ブロックは、ニューラルネットワーク回路20が備えている何れかの構成が処理する各データを示し、同一の列に記載されている各データは、ニューラルネットワーク回路20が備えている何れかの構成が同時に処理する各データを示している。なお、図4において網掛けされたブロックは、当該ブロックに対応するニューラルネットワーク回路20の構成が処理を行わないことを示しているか、又は、当該ブロックに対応するニューラルネットワーク回路20の構成が処理を行っても処理結果を別の構成に出力しないことを示す。また、以下の具体例では、ニューラルネットワーク回路20が1つの出力データを算出するために用いる入力データの数が3であり、第1の演算回路800及び第2の演算回路900がそれぞれ備えている乗算器の数が3である場合の例を説明するが、ニューラルネットワーク回路20が1つの出力データを算出するために用いる入力データの数は、第1の演算回路800又は第2の演算回路900がそれぞれ備えている乗算器の数以下であればよく、当該例に限定されない。
Next, when the number of input data used by the
まず、図4のAの列が示すように、入力データ制御部200は、上述のステップST1において、同時に、乗算器300に入力データD11を供給し、乗算器301に入力データD12を供給し、乗算器302に入力データD13を供給する。また、入力データ制御部200は、格納部700が乗算器300に重みパラメータM11を出力し、乗算器301に重みパラメータM12を出力し、乗算器302に重みパラメータM13を出力するように、これらの入力データの供給と同時に格納部700に命令する。そして、これらの工程の後に、乗算器300は、上述のステップST2において、入力データD11と重みパラメータM11との積を算出し、乗算器301は、入力データD12と重みパラメータM12との積を算出し、乗算器302は、入力データD13と重みパラメータM13との積を算出する。
First, as shown in column A of FIG. 4, in step ST1 described above, input
次に、図4のBの列が示すように、加算器500は、上述のステップST3において、乗算器300が算出した積であるD11×M11と、乗算器301が算出した積であるD12×M12と、乗算器302が算出した積であるD13×M13との和を算出する。加算器500による当該和の算出の次に、又は、当該和の算出と並行して、選択部400は、上述のステップST4において、選択パラメータに基づき加算器500に0値を出力する。次に、加算器500は、算出した和であるD11×M11+D12×M12+D13×M13をそのまま出力部600に出力し、出力部600は、上述のステップST5において、当該和を出力データとして制御部30に出力する。
加算器500による上記工程の実行と並行して、入力データ制御部200は、上述のステップST1において、同時に、乗算器300に入力データD21を供給し、乗算器301に入力データD22を供給し、及び乗算器302に入力データD23を供給する。また、入力データ制御部200は、これらの入力データの供給と同時に、格納部700が乗算器300に重みパラメータM21を出力し、乗算器301に重みパラメータM22を出力し、乗算器302に重みパラメータM23を出力するように、格納部700に命令する。次に、乗算器300は、上述のステップST2において、入力データD21と重みパラメータM21との積を算出し、乗算器301は、入力データD22と重みパラメータM22との積を算出し、乗算器302は、入力データD23と重みパラメータM23との積を算出する。
Next, as shown in the column of B in FIG. 4, the
In parallel with the execution of the above steps by the
次に、図4のCの列が示すように、加算器500は、上述のステップST3において、乗算器300が算出した積であるD21×M21と、乗算器301が算出した積であるD22×M22と、乗算器302が算出した積であるD23×M23との和を算出する。加算器500による当該和の算出の次に、又は当該和の算出と並行して、選択部400は、上述のステップST4において、格納部700から取得した選択パラメータに基づき、加算器500に0値を出力する。次に、加算器500は、算出した和であるD21×M21+D22×M22+D23×M23をそのまま出力部600に出力し、出力部600は、上述のステップST5において、当該和を出力データとして制御部30に出力する。
加算器500による上記工程の実行と並行して、入力データ制御部200は、上述のステップST1において、同時に、乗算器300に入力データD31を供給し、乗算器301に入力データD32を供給し、及び乗算器302に入力データD33を供給する。また、入力データ制御部200は、これらの入力データの供給と同時に、格納部700が乗算器300に重みパラメータM31を出力し、乗算器301に重みパラメータM32を出力し、乗算器302に重みパラメータM33を出力するように、格納部700に命令する。次に、乗算器300は、上述のステップST2において、入力データD31とM31との積を算出し、乗算器301は、入力データD32とM32との積を算出し、乗算器302は、入力データD33とM33との積を算出する。
Next, as shown in column C of FIG. 4,
In parallel with execution of the above steps by
以上のように、ニューラルネットワーク回路20が1つの出力データを算出するために用いる入力データの数が、第1の演算回路800及び第2の演算回路900がそれぞれ備えている乗算器の数以下である場合、上記の具体例のように、選択部400は、加算器500が算出した和を加算器500にフィードバックせずに、加算器500は、当該和を出力部600に出力する。
As described above, the number of input data used by the
次に、ニューラルネットワーク回路20が1つの出力データを算出するために用いる入力データの数が、第1の演算回路800及び第2の演算回路900がそれぞれ備えている乗算器の数よりも多い場合における、ニューラルネットワーク回路20の動作について説明する。図5は、当該場合における、実施の形態1に係るニューラルネットワーク回路20による演算処理方法を示すフローチャートである。
Next, when the number of input data used by the
入力データ制御部200は、第1の入力データを、第1の乗算器である乗算器300に供給し、第2の入力データを、第2の乗算器である乗算器301に供給する(ステップST10)。また、入力データ制御部200は、格納部700が乗算器300及び乗算器301にそれぞれ重みパラメータを出力するように格納部700に命令する。
The input
乗算器300は、入力データ制御部200から取得した第1の入力データと、格納部700から取得した重みパラメータとの積である第1の積を算出し、乗算器301は、入力データ制御部200から取得した第2の入力データと、格納部700から取得した重みパラメータとの積である第2の積を算出する(ステップST11)。乗算器300は、算出した第1の積を加算器500に出力し、乗算器301は、算出した第2の積を加算器500に出力する。
The
加算器500は、乗算器300が算出した第1の積と、乗算器301が算出した第2の積との和である第1の和を算出する(ステップST12)。加算器500は、算出した第1の和を選択部400に出力する。
The
入力データ制御部200は、第3の入力データを、乗算器300に供給し、第4の入力データを、乗算器301に供給する(ステップST13)。また、入力データ制御部200は、格納部700が乗算器300及び乗算器301にそれぞれ重みパラメータを出力するように格納部700に命令する。なお、当該重みパラメータは、ステップST10及びステップST11における重みパラメータとは別の重みパラメータであり、値が異なっていてもよく、同一であってもよい。また、入力データ制御部200は、格納部700が選択部400に選択パラメータを出力するように格納部700に命令する。
The input
乗算器300は、入力データ制御部200から取得した第3の入力データと、格納部700から取得した重みパラメータとの積である第3の積を算出し、乗算器301は、入力データ制御部200から取得した第4の入力データと、格納部700から取得した重みパラメータとの積である第4の積を算出する(ステップST14)。乗算器300は、算出した第3の積を加算器500に出力し、乗算器301は、算出した第4の積を加算器500に出力する。
加算器500は、乗算器300が算出した第3の積と、乗算器301が算出した第4の積との和である第2の和を算出する(ステップST15)。
選択部400は、格納部700から取得した選択パラメータに基づき、加算器500から取得した第1の和を加算器500にフィードバックする(ステップST16)。
加算器500は、選択部400がフィードバックした第1の和と、算出した第2の和との和である第3の和を算出する(ステップST17)。加算器500は、算出した第3の和を出力部600に出力する。
出力部600は、加算器500から取得した第3の和を出力データとして制御部30に出力する(ステップST18)。
The
The
The
The
次に、ニューラルネットワーク回路20が1つの出力データを算出するために用いる入力データの数が、第1の演算回路800及び第2の演算回路900がそれぞれ備えている乗算器の数よりも多い場合における、ニューラルネットワーク回路20の動作の具体例について説明する。図6は、当該具体例を説明するための図である。図6では、同一の行に記載されている各ブロックは、ニューラルネットワーク回路20が備えている何れかの構成が処理する各データを示し、同一の列に記載されている各データは、ニューラルネットワーク回路20が備えている何れかの構成が同時に処理する各データを示している。なお、図6において網掛けされたブロックは、当該ブロックに対応するニューラルネットワーク回路20の構成が処理を行わないことを示しているか、又は、当該ブロックに対応するニューラルネットワーク回路20の構成が処理を行っても処理結果を別の構成に出力しないことを示す。また、以下の具体例では、ニューラルネットワーク回路20が1つの出力データを算出するために用いる入力データの数が4であり、第1の演算回路800及び第2の演算回路900がそれぞれ備えている乗算器の数が3である場合の例を説明するが、ニューラルネットワーク回路20が1つの出力データを算出するために用いる入力データの数は、第1の演算回路800又は第2の演算回路900がそれぞれ備えている乗算器の数よりも多ければよく、当該例に限定されない。
Next, when the number of input data used by the
図6のDの列が示すように、入力データ制御部200は、上述のステップST10において、同時に、乗算器300に入力データD11(第1の入力データ)を供給し、乗算器301に入力データD12(第2の入力データ)を供給する。また、入力データ制御部200は、これらの入力データの供給と同時に、格納部700が乗算器300に重みパラメータM11を出力し、乗算器301に重みパラメータM12を出力するように、格納部700に命令する。そして、上記の各工程の後に、乗算器300は、上述のステップST11において、入力データD11と重みパラメータM11との積(第1の積)を算出し、乗算器301は、入力データD12と重みパラメータM12との積(第2の積)を算出する。
As shown in column D in FIG. 6, input
図6のEの列が示すように、加算器500は、上述のステップST12において、乗算器300が算出した積であるD11×M11と、乗算器301が算出した積であるD12×M12との和(第1の和)を算出する。加算器500による当該和の算出の次に、又は、当該和の算出と並行して、入力データ制御部200は、上述のステップST13において、乗算器300に入力データD13(第3の入力データ)を供給し、乗算器301に入力データD14(第4の入力データ)を供給する。また、入力データ制御部200は、格納部700が乗算器300に重みパラメータM13を出力し、乗算器301に重みパラメータM14を出力するように、これらの入力データの供給と同時に格納部700に命令する。次に、乗算器300は、上述のステップST14において、入力データD13と重みパラメータM13との積(第3の積)を算出し、乗算器301は、入力データD14と重みパラメータM14との積(第4の積)を算出する。
As shown in column E in FIG. 6, the
図6のFの列が示すように、加算器500は、上述のステップST15において、乗算器300が算出した積であるD13×M13と、乗算器301が算出した積であるD14×M14との和(第2の和)を算出する。加算器500による当該和の算出の次に、又は、当該和の算出と並行して、選択部400は、上述のステップST16において、格納部700から取得した選択パラメータに基づき、加算器500が算出した和であるD11×M11+D12×M12を加算器500に出力する。そして、加算器500は、上述のステップST17において、選択部400から取得した第1の和D11×M11+D12×M12と、算出した第2の和D13×M13+D14×M14との和(第3の和)を算出する。次に、加算器500は、算出した第3の和であるD11×M11+D12×M12+D13×M13+D14×M14をそのまま出力部600に出力し、出力部600は、上述のステップST18において、当該第3の和を出力データとして制御部30に出力する。一方で、入力データ制御部200は、上述のステップST10の工程に戻り、乗算器300に入力データD21(第1の入力データ)を供給し、乗算器301に入力データD22(第2の入力データ)を供給する。また、入力データ制御部200は、格納部700が乗算器300に重みパラメータM21を出力し、乗算器301に重みパラメータM22を出力するように、これらの入力データの供給と同時に、格納部700に命令する。なお、図6のGの列及びHの列に関する構成は、Eの列及びFの列に関する構成と同様のため、説明を省略する。
As shown in column F in FIG. 6, the
以上のように、上記の具体例では、ニューラルネットワーク回路20が1つの出力データを算出するために用いる入力データの数が、第1の演算回路800及び第2の演算回路900がそれぞれ備えている乗算器の数よりも多い。その場合、選択部400が、加算器500が算出した和を加算器500にフィードバックすることにより、加算器500は、それぞれ異なる時刻に算出した2つの和同士を加算する。上記の具体例では、入力データ制御部200がステップST10において第1の演算回路が備えている複数の乗算器のうちの第1の乗算器300及び第2の乗算器301に入力データを供給し、第1の乗算器300及び第2の乗算器301がそれぞれステップST11で第1の積及び第2の積を算出する構成を説明したが、当該構成に限定されない。入力データ制御部200は、第1の演算回路が備えている複数の乗算器のうちの一部又は全ての乗算器に供給し得る。また、当該複数の乗算器のうちの一部又は全ての乗算器は、それぞれ、入力データ制御部200が供給した入力データと、格納部700が格納する重みパラメータとの積を算出し得る。
As described above, in the above specific example, the first
以上の、実施の形態1に係るニューラルネットワーク回路20の動作の説明において、ニューラルネットワーク回路20が1つの出力データを算出するために用いる入力データの数が、第1の演算回路800及び第2の演算回路900がそれぞれ備えている乗算器の数以下である場合における、ニューラルネットワーク回路20の動作と、ニューラルネットワーク回路20が1つの出力データを算出するために用いる入力データの数が、第1の演算回路800及び第2の演算回路900がそれぞれ備えている乗算器の数よりも多い場合における、ニューラルネットワーク回路20の動作とについて説明した。このように、ニューラルネットワーク回路20の動作は、ニューラルネットワーク回路20が1つの出力データを算出するために用いる入力データの数と、第1の演算回路800及び第2の演算回路900がそれぞれ備えている乗算器の数とによって異なる。これを一般化すると、入力データ制御部200は、入力データ制御部200が各乗算器に同時に供給する入力データの数をmとし、第1の演算回路800及び第2の演算回路900がそれぞれ備えている乗算器の数をnとして、一時的にバッファ210にm個のデータを蓄積し、バッファ210から、ceil(m/ceil(m/n))個ずつ入力データを取得し、n個の乗算器のうちのceil(m/ceil(m/n))個の乗算器に、ceil(m/ceil(m/n))個ずつ入力データを供給する。なお、「ceil(m/ceil(m/n))」における「ceil()」は、引数に対して小数点第一位を切り上げる関数を示す。
In the above description of the operation of the
以上のように、実施の形態1に係るニューラルネットワーク回路20は、入力データに対して演算処理を行い、当該演算処理の結果である出力データを出力する第1の演算回路800と、演算回路への入力データの供給を制御する入力データ制御部200とを備え、第1の演算回路800は、重みパラメータ及び選択パラメータを格納する格納部700と、それぞれが、入力データ制御部200が供給した入力データと、格納部700が格納する重みパラメータとの積を算出する複数の乗算器の乗算器300、乗算器301及び乗算器302と、複数の乗算器がそれぞれ算出した積の和を算出する加算器500と、格納部700が格納する選択パラメータに応じて、加算器500が算出した和を加算器500にフィードバックする選択部400と、を備えている。
As described above, the
上記の構成によれば、ニューラルネットワーク回路20が1つの出力データを算出するために用いる入力データの数が、第1の演算回路800及び第2の演算回路900がそれぞれ備えている乗算器の数以下である場合、入力データ制御部200が複数の乗算器への各入力データの供給を制御することにより、入力データの数と同一の数の乗算器が入力データを並列に処理することができる。また、上記の構成によれば、ニューラルネットワーク回路20が1つの出力データを算出するために用いる入力データの数が、第1の演算回路及び第2の演算回路がそれぞれ備えている乗算器の数よりも多い場合、入力データ制御部200が入力データを分割して、分割された入力データをそれぞれ異なるタイミングで複数の乗算器に供給することにより入力データの時分割を行い、複数の乗算器と、加算器500とが、分割された入力データを順に処理し、選択部400が、加算器500が過去に処理した入力データを当該加算器500にフィードバックする。これにより、入力データの時分割処理を行うことができる。このような入力データ制御部200による複数の乗算器への入力データの供給の制御と、選択部400による加算器500へのフィードバックとにより、ニューラルネットワークの学習又は推論対象を変更する際に、FPGAのリコンフィグレーション機能のようには論理回路を書き換えずに、ニューラルネットワーク回路の構成を変更することができる。よって、FPGAのリコンフィグレーション機能よりも、ニューラルネットワーク回路の構成を短時間で変更することができる。
According to the above configuration, the number of input data used by the
また、上記の構成によれば、上述の通り、入力データを並列に処理することができるため、演算処理に要する時間を抑制することができる。また、上記の構成によれば、上述の通り、入力データの時分割処理を行うことができるため、並列に処理を行う乗算器の数を制限し、回路規模を縮小した状態でも演算処理を行うことができる。これにより、ニューラルネットワーク回路の演算処理時間と回路規模とのバランスを動的に変更することができる。よって、学習又は推論対象を変更しても、変更後の学習又は推論対象に最適なニューラルネットワーク回路を、時間を要することなく構築できる。 Moreover, according to the above configuration, as described above, the input data can be processed in parallel, so the time required for arithmetic processing can be reduced. In addition, according to the above configuration, as described above, input data can be time-divisionally processed. Therefore, the number of multipliers that perform parallel processing is limited, and arithmetic processing is performed even when the circuit scale is reduced. be able to. As a result, it is possible to dynamically change the balance between the arithmetic processing time of the neural network circuit and the circuit scale. Therefore, even if the object of learning or inference is changed, the optimal neural network circuit for the changed object of learning or inference can be constructed without taking much time.
また、実施の形態1に係るニューラルネットワーク回路20は、入力データ制御部200は、複数の乗算器のうちの一部又は全ての乗算器に入力データを供給し、複数の乗算器のうちの一部又は全ての乗算器は、それぞれ、入力データ制御部200が供給した入力データと、格納部700が格納する重みパラメータとの積を算出し、加算器500は、複数の乗算器のうちの一部又は全ての乗算器がそれぞれ入力データを用いて算出した積の和である第1の和を算出し、入力データ制御部200は、複数の乗算器のうちの一部又は全ての乗算器に入力データとは別の入力データを供給し、複数の乗算器のうちの一部又は全ての乗算器は、それぞれ、入力データ制御部200が供給した別の入力データと、格納部700が格納する重みパラメータとの積を算出し、加算器500は、複数の乗算器のうちの一部又は全ての乗算器がそれぞれ別の入力データを用いて算出した積の和である第2の和を算出し、選択部400は、選択パラメータに応じて、加算器500が算出した第1の和を加算器500にフィードバックし、加算器500は、選択部400がフィードバックした第1の和と、算出した第2の和との和である第3の和を算出する。
In the
上記の構成によれば、実施の形態1に係るニューラルネットワーク回路は、入力データ制御部200が入力データを分割して、分割された入力データを複数の乗算器のうちの一部又は全ての乗算器にそれぞれ供給し、複数の乗算器のうちの一部又は全ての乗算器と、加算器500とが、分割された入力データを順に処理し、選択部400が、加算器500が過去に処理したデータを当該加算器500にフィードバックする。加算器500は、現行の処理済みのデータと、選択部400がフィードバックしたデータとを加算する。これにより、入力データの時分割処理を行うことができる。
According to the above configuration, in the neural network circuit according to Embodiment 1, the input
また、実施の形態1に係るニューラルネットワーク回路20は、入力データ制御部200は、第1の入力データを、複数の乗算器のうちの第1の乗算器300に供給し、第2の入力データを、複数の乗算器のうちの第2の乗算器301に供給し、第1の乗算器300は、入力データ制御部200が供給した第1の入力データと、格納部700が格納する重みパラメータとの積である第1の積を算出し、第2の乗算器301は、入力データ制御部200が供給した第2の入力データと、格納部700が格納する重みパラメータとの積である第2の積を算出し、加算器500は、第1の積と第2の積との和である第1の和を算出し、入力データ制御部200は、第3の入力データを、複数の乗算器のうちの第1の乗算器300に供給し、第4の入力データを、複数の乗算器のうちの第2の乗算器301に供給し、第1の乗算器300は、入力データ制御部200が供給した第3の入力データと、格納部700が格納する重みパラメータとの積である第3の積を算出し、第2の乗算器301は、入力データ制御部200が供給した第4の入力データと、格納部700が格納する重みパラメータとの積である第4の積を算出し、加算器500は、第3の積と第4の積との和である第2の和を算出し、選択部400は、選択パラメータに応じて、加算器500が算出した第1の和を加算器500にフィードバックし、加算器500は、選択部400がフィードバックした第1の和と、算出した第2の和との和である第3の和を算出する。
Further, in the
上記の構成によれば、実施の形態1に係るニューラルネットワーク回路は、入力データ制御部200が第1の入力データ、第2の入力データ、第3の入力データ及び第4の入力データの複数の入力データを分割して、分割された入力データを第1の乗算器300及び第2の乗算器301にそれぞれ供給し、第1の乗算器300及び第2の乗算器301と、加算器500とが、分割された入力データを順に処理し、選択部400が、加算器500が過去に処理したデータを当該加算器500にフィードバックする。加算器500は、現行の処理済みのデータと、選択部400がフィードバックしたデータとを加算する。これにより、入力データの時分割処理を行うことができる。
According to the above configuration, in the neural network circuit according to Embodiment 1, the input
また、実施の形態1に係るニューラルネットワーク回路20は、入力データ制御部200は、入力データの数をmとし、複数の乗算器の数をnとして、複数の乗算器のうちのceil(m/ceil(m/n))個の乗算器にceil(m/ceil(m/n))個ずつ入力データを供給する。
上記の構成によれば、ニューラルネットワーク回路20が1つの出力データを算出するために用いる入力データの数が、第1の演算回路800及び第2の演算回路900がそれぞれ備えている乗算器の数以下である場合に、上述のように、入力データを並列に処理することができる。また、ニューラルネットワーク回路20が1つの出力データを算出するために用いる入力データの数が、第1の演算回路800及び第2の演算回路900がそれぞれ備えている乗算器の数よりも多い場合に、入力データの時分割処理を行うことができる。
Further, in the
According to the above configuration, the number of input data used by the
実施の形態2.
実施の形態1では、第1の演算回路800が入力データに対して演算処理を行い、演算処理の結果として出力データを出力する構成について説明した。また、実施の形態1では、説明を省略したが、第2の演算回路900も第1の演算回路800と同様に入力データに対して演算処理を行い、演算処理の結果として出力データを出力する。つまり、実施の形態1では、第1の演算回路800及び第2の演算回路900は、それぞれ独立に、入力データに対して演算処理を行い、演算処理の結果として出力データを出力する。一方、実施の形態2では、第1の演算回路800の加算器501が、第2の演算回路901の加算器511が算出した和を、さらに用いて演算処理を行うことができる構成について説明する。
Embodiment 2.
In Embodiment 1, the configuration in which the first
以下で、実施の形態2について図面を参照して説明する。なお、実施の形態1で説明した構成と同様の機能を有する構成については同一の符号を付し、その説明を省略する。
図7は、実施の形態2に係るニューラルネットワーク回路21の構成を示すブロック図である。図7が示すように、実施の形態2に係るニューラルネットワーク回路21が実施の形態1に係るニューラルネットワーク回路20と異なる点は、入力データ制御部201が、乗算器300、乗算器301、乗算器302、乗算器310、乗算器311及び乗算器312にそれぞれ個別に接続している点である。これにより、入力データ制御部201は、乗算器300に供給する入力データと、乗算器310に供給する入力データとを同一のものとすることも、異なるものとすることもできる。また、入力データ制御部201は、乗算器301に供給する入力データと、乗算器311に供給する入力データとを異ならせることができる。また、入力データ制御部201は、乗算器302に供給する入力データと、乗算器312に供給する入力データとを異ならせることができる。
Embodiment 2 will be described below with reference to the drawings. In addition, the same reference numerals are given to the configurations having the same functions as the configurations described in the first embodiment, and the description thereof will be omitted.
FIG. 7 is a block diagram showing the configuration of
さらに、実施の形態2に係るニューラルネットワーク回路21が実施の形態1に係るニューラルネットワーク回路20と異なる点は、第2の演算回路901の加算器511の出力側が、第1の演算回路801の選択部401に接続されている点である。これにより、加算器511は、算出した和を選択部401に出力する。選択部401は、格納部700から取得した選択パラメータに応じて、加算器511が算出した和を加算器501に出力する。加算器501は、算出した和と、選択部401から取得した和との和を算出し、当該和を出力部600に出力する。
Further, the
次に、実施の形態2に係るニューラルネットワーク回路21による演算処理方法について図面を参照して説明する。図8は、実施の形態2に係るニューラルネットワーク回路21による演算処理方法を示すフローチャートである。なお、実施の形態2に係るニューラルネットワーク回路21による演算処理方法のステップST20からステップST22は、それぞれ、実施の形態1に係る演算処理方法のステップST1からステップST3と同様である。そのため、ステップST20からステップST22についての説明については省略する。
Next, an arithmetic processing method by the
また、ステップST21及びステップST22の各工程は、第1の演算回路801と第2の演算回路901とで、並行して行われるものとする。また、以下で説明する演算処理方法は、入力データ制御部201が、乗算器300及び乗算器310にそれぞれ異なる入力データを供給し、乗算器301及び乗算器311にそれぞれ異なる入力データを供給し、乗算器302及び乗算器312にそれぞれ異なる入力データを供給し、出力部600のみが出力データを出力する場合の例である。
Moreover, each process of step ST21 and step ST22 shall be performed in parallel by the 1st
まず、ステップST22の工程の後に、加算器511は、ステップST22で算出した和を、第1の演算回路801の選択部401に出力する。次に、第1の演算回路801の選択部401は、格納部700から取得した選択パラメータに基づき、第2の演算回路901の加算器511がステップST22で算出した和を、第1の演算回路801の加算器501に出力する(ステップST23)。
First, after the process of step ST22, the
次に、第1の演算回路801の加算器501は、ステップST22で算出した和と、加算器511が算出した和との和を算出する(ステップST24)。加算器501は、算出した当該和を出力部600に出力する。
次に、出力部600は、加算器501がステップST24で算出した和を出力データとして制御部30に出力する(ステップST25)。
Next, the
Next, the
なお、実施の形態2に係るニューラルネットワーク回路21の第1の演算回路801及び第2の演算回路901のいずれか又は両方は、上記のステップST20からステップST22の代わりに、実施形態1で説明したステップST10からステップST17を行ってもよい。第2の演算回路901が、実施形態1で説明したステップST10からステップST17を行った場合、ステップST17で加算器511が算出した第3の和が、ステップST23で、第2の演算回路901の加算器511がステップST22で算出した和の代わりに用いられる。
Either or both of the first
また、上記の演算処理方法の説明では、入力データ制御部201が、乗算器300及び乗算器310にそれぞれ異なる入力データを供給し、乗算器301及び乗算器311にそれぞれ異なる入力データを供給し、乗算器302及び乗算器312にそれぞれ異なる入力データを供給し、出力部600が出力データを出力する場合の例について説明した。一方で、入力データ制御部201が、乗算器300及び乗算器310にそれぞれ同一の入力データを供給し、乗算器301及び乗算器311にそれぞれ同一の入力データを供給し、乗算器302及び乗算器312にそれぞれ同一の入力データを供給し、出力部600及び出力部610がそれぞれ出力データを出力する場合、実施の形態1に係る演算処理方法と同様の方法を行うことができる。より詳細には、上述のステップST23の代わりに、第1の演算回路801の選択部401は、格納部700から取得した選択パラメータに基づき、第2の演算回路901の加算器511がステップST22で算出した和の代わりに、ゼロ値を第1の演算回路801の加算器501に出力する。次に、ステップST24及びステップST25の代わりに、出力部600は、加算器501が算出した和をそのまま出力データとして制御部30に出力し、出力部610は、加算器511がステップST22で算出した和をそのまま出力データとして制御部30に出力する。
Further, in the above description of the arithmetic processing method, the input
次に、実施の形態2に係るニューラルネットワーク回路21の動作の具体例について説明する。図9は、当該具体例を説明するための図である。図9では、同一の行に記載されている各ブロックは、ニューラルネットワーク回路21が備えている何れかの構成が処理する各データを示し、同一の列に記載されている各データは、ニューラルネットワーク回路21が備えている何れかの構成が同時に処理する各データを示している。なお、図9において網掛けされたブロックは、当該ブロックに対応するニューラルネットワーク回路20の構成が処理を行わないことを示しているか、又は、当該ブロックに対応するニューラルネットワーク回路20の構成が処理を行っても処理結果を別の構成に出力しないことを示す。
Next, a specific example of operation of the
図9のIの列が示すように、入力データ制御部201は、上述のステップST20において、同時に、乗算器310に入力データD14を供給し、乗算器311に入力データD15を供給し、乗算器312に入力データD16を供給する。また、入力データ制御部201は、これらの入力データの供給と同時に、格納部710が乗算器310に重みパラメータM14を出力し、乗算器311に重みパラメータM15を出力し、乗算器312に重みパラメータM16を出力するように、格納部700に命令する。そして、これらの工程の後に、乗算器310は、上述のステップST21において、入力データD14と重みパラメータM14との積を算出し、乗算器301は、入力データD15と重みパラメータM15との積を算出し、乗算器302は、入力データD16と重みパラメータM16との積を算出する。
As shown in column I in FIG. 9, input
次に、図9のJの列が示すように、加算器511は、上述のステップST22において、乗算器310が算出した積であるD14×M14と、乗算器301が算出した積であるD15×M15と、乗算器302が算出した積であるD16×M16との和を算出する。次に、第1の演算回路801の選択部401は、上述のステップST23において、格納部700から取得した選択パラメータに基づき、第2の演算回路901の加算器511がステップST22で算出した和であるD14×M14+D15×M15+D16×M16を、第1の演算回路801の加算器501に出力する。一方、入力データ制御部201は、上述のステップST20において、同時に、乗算器300に入力データD11を供給し、乗算器301に入力データD12を供給し、及び乗算器302に入力データD13を供給する。入力データ制御部201は、上述のステップST20において、これらの入力データの供給と同時に、乗算器310に入力データD24を供給し、乗算器311に入力データD25を供給し、及び乗算器312に入力データD26を供給する。また、入力データ制御部201は、格納部700が乗算器300に重みパラメータM11を出力し、乗算器301に重みパラメータM12を出力し、乗算器302に重みパラメータM13を出力するように、これらの入力データの供給と同時に、格納部700に命令する。また、入力データ制御部201は、格納部710が乗算器310に重みパラメータM24を出力し、乗算器311に重みパラメータM25を出力し、乗算器302に重みパラメータM26を出力するように、これらの入力データの供給と同時に、格納部700に命令する。次に、乗算器300は、上述のステップST21において、入力データD11と重みパラメータM11との積を算出し、乗算器301は、入力データD12と重みパラメータM12との積を算出し、乗算器302は、入力データD13と重みパラメータM13との積を算出する。また、乗算器310は、上述のステップST21において、入力データD24と重みパラメータM24との積を算出し、乗算器311は、入力データD25と重みパラメータM25との積を算出し、乗算器312は、入力データD26と重みパラメータM26との積を算出する。
Next, as shown in column J in FIG. 9,
次に、図9のKの列が示すように、第1の演算回路801の加算器501は、上述のステップST22において、乗算器300が算出した積であるD11×M11と、乗算器301が算出した積であるD12×M12と、乗算器302が算出した積であるD13×M13との和を算出する。次に、加算器501は、上述のステップST24において、当該和と、選択部401がステップST23で加算器501に出力した和であるD14×M14+D15×M15+D16×M16との和を算出する。出力部600は、上述のステップST25において、加算器501がステップST24で算出した和であるD11×M11+D12×M12+D13×M13+D14×M14+D15×M15+D16×M16を出力データとして制御部30に出力する。一方、入力データ制御部201は、上述のステップST20において、同時に、乗算器300に入力データD21を供給し、乗算器301に入力データD22を供給し、及び乗算器302に入力データD23を供給する。入力データ制御部201は、上述のステップST20において、これらの入力データの供給と同時に、乗算器310に入力データD34を供給し、乗算器311に入力データD35を供給し、及び乗算器312に入力データD36を供給する。また、入力データ制御部201は、格納部700が乗算器300に重みパラメータM21を出力し、乗算器301に重みパラメータM22を出力し、乗算器302に重みパラメータM23を出力するように、これらの入力データの供給と同時に、格納部700に命令する。また、入力データ制御部201は、格納部710が乗算器310に重みパラメータM34を出力し、乗算器311に重みパラメータM35を出力し、乗算器302に重みパラメータM36を出力するように、これらの入力データの供給と同時に、格納部700に命令する。また、加算器510は、上述のステップST22において、上記の入力データ制御部201による入力データの供給と格納部700への命令と同時に、乗算器310が算出した積であるD24×M24と、乗算器311が算出した積であるD25×M25と、乗算器312が算出した積であるD26×M26との和を算出する。なお、図9のLの列に関する構成は、Kの列に関する構成と同様のため、説明を省略する。
Next, as shown in column K in FIG. 9, the
以上のように、実施の形態1に係るニューラルネットワーク回路20は、演算回路を複数備え、入力データ制御部201は、複数の演算回路への各入力データの供給を制御し、複数の演算回路のうちの第1の演算回路801が備えている選択部401は、格納部700が格納する選択パラメータに応じて、複数の演算回路のうちの第2の演算回路901が備えている加算器511が算出した和を、第1の演算回路801が備えている加算器501にさらに出力し、第1の演算回路801が備えている加算器501は、算出した和と、第2の演算回路901が備えている加算器511が算出した和との和を算出する。
As described above, the
上記の構成によれば、第1の演算回路801と第2の演算回路901とが、入力データを並列に処理することによって、演算処理時間を短縮するようにニューラルネットワーク回路21を動作させることができる。また、選択部401が選択パラメータに応じて加算器511が算出した和を加算器501に出力し、第1の演算回路801の加算器501が、算出した和と、第2の演算回路901の加算器511が算出した和との和を算出することにより、1つの出力データを出力するために並列に演算処理を行う入力データの数を増やすことができる。これにより、学習又は推論対象の性能を向上させることができる。
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
According to the above configuration, the first
In addition, within the scope of the present invention, it is possible to freely combine each embodiment, modify any component of each embodiment, or omit any component in each embodiment. .
1 学習・推論システム、10 情報入力部、20 ニューラルネットワーク回路、21 ニューラルネットワーク回路、30 制御部、40 学習・推論結果出力部、200 入力データ制御部、201 入力データ制御部、210 バッファ、300 乗算器、301 乗算器、302 乗算器、310 乗算器、311 乗算器、312 乗算器、400 選択部、401 選択部、410 選択部、500 加算器、501 加算器、510 加算器、511 加算器、600 出力部、610 出力部、700 格納部、710 格納部、800 第1の演算回路、801 第1の演算回路、900 第2の演算回路、901 第2の演算回路。
1 learning/
Claims (4)
前記演算回路への入力データの供給を制御する入力データ制御部とを備え、
前記演算回路は、
重みパラメータ及び選択パラメータを格納する格納部と、
それぞれが、前記入力データ制御部が供給した入力データと、前記格納部が格納する重みパラメータとの積を算出する複数の乗算器と、
前記複数の乗算器がそれぞれ算出した積の和を算出する加算器と、
前記格納部が格納する選択パラメータに応じて、前記加算器が算出した和を前記加算器にフィードバックする選択部と、を備え、
前記入力データ制御部は、前記複数の乗算器のうちの一部又は全ての乗算器に前記入力データを供給し、
前記複数の乗算器のうちの一部又は全ての乗算器は、それぞれ、前記入力データ制御部が供給した入力データと、前記格納部が格納する重みパラメータとの積を算出し、
前記加算器は、前記複数の乗算器のうちの一部又は全ての乗算器がそれぞれ前記入力データを用いて算出した積の和である第1の和を算出し、
前記入力データ制御部は、前記複数の乗算器のうちの一部又は全ての乗算器に前記入力データとは別の入力データを供給し、
前記複数の乗算器のうちの一部又は全ての乗算器は、それぞれ、前記入力データ制御部が供給した別の入力データと、前記格納部が格納する重みパラメータとの積を算出し、
前記加算器は、前記複数の乗算器のうちの一部又は全ての乗算器がそれぞれ前記別の入力データを用いて算出した積の和である第2の和を算出し、
前記選択部は、前記選択パラメータに応じて、前記加算器が算出した第1の和を前記加算器にフィードバックし、
前記加算器は、前記選択部がフィードバックした第1の和と、算出した第2の和との和である第3の和を算出することを特徴とする、ニューラルネットワーク回路。 an arithmetic circuit that performs arithmetic processing on input data and outputs output data that is the result of the arithmetic processing;
an input data control unit that controls supply of input data to the arithmetic circuit;
The arithmetic circuit is
a storage unit for storing weight parameters and selection parameters;
a plurality of multipliers each calculating a product of input data supplied by the input data control unit and a weight parameter stored by the storage unit;
an adder that calculates the sum of the products calculated by the plurality of multipliers;
a selection unit that feeds back the sum calculated by the adder to the adder according to the selection parameter stored in the storage unit ;
The input data control unit supplies the input data to some or all of the multiple multipliers,
Some or all of the multiple multipliers calculate the product of the input data supplied by the input data control unit and the weight parameter stored in the storage unit, respectively;
the adder calculates a first sum that is a sum of products calculated by some or all of the multipliers using the input data;
The input data control unit supplies input data different from the input data to some or all of the multiple multipliers,
Some or all of the multiple multipliers each calculate a product of another input data supplied by the input data control unit and a weight parameter stored in the storage unit;
the adder calculates a second sum that is a sum of products calculated by some or all of the multipliers using the different input data;
The selection unit feeds back the first sum calculated by the adder to the adder according to the selection parameter,
The neural network circuit, wherein the adder calculates a third sum that is the sum of the first sum fed back by the selector and the calculated second sum.
前記演算回路への入力データの供給を制御する入力データ制御部とを備え、 an input data control unit that controls supply of input data to the arithmetic circuit;
前記演算回路は、 The arithmetic circuit is
重みパラメータ及び選択パラメータを格納する格納部と、 a storage unit for storing weight parameters and selection parameters;
それぞれが、前記入力データ制御部が供給した入力データと、前記格納部が格納する重みパラメータとの積を算出する複数の乗算器と、 a plurality of multipliers each calculating a product of input data supplied by the input data control unit and a weight parameter stored by the storage unit;
前記複数の乗算器がそれぞれ算出した積の和を算出する加算器と、 an adder that calculates the sum of the products calculated by the plurality of multipliers;
前記格納部が格納する選択パラメータに応じて、前記加算器が算出した和を前記加算器にフィードバックする選択部と、を備え、 a selection unit that feeds back the sum calculated by the adder to the adder according to the selection parameter stored in the storage unit;
前記入力データ制御部は、第1の入力データを、前記複数の乗算器のうちの第1の乗算器に供給し、第2の入力データを、前記複数の乗算器のうちの第2の乗算器に供給し、 The input data control unit supplies first input data to a first multiplier of the plurality of multipliers, and supplies second input data to a second multiplier of the plurality of multipliers. supply to the vessel,
前記第1の乗算器は、前記入力データ制御部が供給した第1の入力データと、前記格納部が格納する重みパラメータとの積である第1の積を算出し、 The first multiplier calculates a first product of the first input data supplied by the input data control unit and a weight parameter stored in the storage unit;
前記第2の乗算器は、前記入力データ制御部が供給した第2の入力データと、前記格納部が格納する重みパラメータとの積である第2の積を算出し、 the second multiplier calculates a second product of the second input data supplied by the input data control unit and the weight parameter stored in the storage unit;
前記加算器は、前記第1の積と前記第2の積との和である第1の和を算出し、 The adder calculates a first sum that is the sum of the first product and the second product;
前記入力データ制御部は、第3の入力データを、前記複数の乗算器のうちの第1の乗算器に供給し、第4の入力データを、前記複数の乗算器のうちの第2の乗算器に供給し、 The input data control unit supplies third input data to a first multiplier among the plurality of multipliers, and supplies fourth input data to a second multiplier among the plurality of multipliers. supply to the vessel,
前記第1の乗算器は、前記入力データ制御部が供給した第3の入力データと、前記格納部が格納する重みパラメータとの積である第3の積を算出し、 the first multiplier calculates a third product of the third input data supplied by the input data control unit and the weight parameter stored in the storage unit;
前記第2の乗算器は、前記入力データ制御部が供給した第4の入力データと、前記格納部が格納する重みパラメータとの積である第4の積を算出し、 the second multiplier calculates a fourth product of the fourth input data supplied by the input data control unit and a weight parameter stored in the storage unit;
前記加算器は、前記第3の積と前記第4の積との和である第2の和を算出し、 The adder calculates a second sum that is the sum of the third product and the fourth product;
前記選択部は、前記選択パラメータに応じて、前記加算器が算出した第1の和を前記加算器にフィードバックし、 The selection unit feeds back the first sum calculated by the adder to the adder according to the selection parameter,
前記加算器は、前記選択部がフィードバックした第1の和と、算出した第2の和との和である第3の和を算出することを特徴とする、ニューラルネットワーク回路。 The neural network circuit, wherein the adder calculates a third sum that is the sum of the first sum fed back by the selector and the calculated second sum.
前記演算回路への入力データの供給を制御する入力データ制御部とを備え、 an input data control unit that controls supply of input data to the arithmetic circuit;
前記演算回路は、 The arithmetic circuit is
重みパラメータ及び選択パラメータを格納する格納部と、 a storage unit for storing weight parameters and selection parameters;
それぞれが、前記入力データ制御部が供給した入力データと、前記格納部が格納する重みパラメータとの積を算出する複数の乗算器と、 a plurality of multipliers each calculating a product of input data supplied by the input data control unit and a weight parameter stored by the storage unit;
前記複数の乗算器がそれぞれ算出した積の和を算出する加算器と、 an adder that calculates the sum of the products calculated by the plurality of multipliers;
前記格納部が格納する選択パラメータに応じて、前記加算器が算出した和を前記加算器にフィードバックする選択部と、を備え、 a selection unit that feeds back the sum calculated by the adder to the adder according to the selection parameter stored in the storage unit;
前記演算回路を複数備え、 comprising a plurality of the arithmetic circuits,
前記複数の演算回路のうちの第1の演算回路が備えている選択部は、前記格納部が格納する選択パラメータに応じて、前記複数の演算回路のうちの第2の演算回路が備えている加算器が算出した和を、前記第1の演算回路が備えている加算器にさらに出力し、 The selection unit provided in the first arithmetic circuit among the plurality of arithmetic circuits is provided in the second arithmetic circuit among the plurality of arithmetic circuits according to the selection parameter stored in the storage unit. further outputting the sum calculated by the adder to the adder included in the first arithmetic circuit;
前記第1の演算回路が備えている加算器は、算出した和と、第2の演算回路が備えている加算器が算出した和との和を算出することを特徴とする、ニューラルネットワーク回路。 The neural network circuit, wherein the adder provided in the first arithmetic circuit calculates the sum of the calculated sum and the sum calculated by the adder provided in the second arithmetic circuit.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019025269A JP7241563B2 (en) | 2019-02-15 | 2019-02-15 | neural network circuit |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019025269A JP7241563B2 (en) | 2019-02-15 | 2019-02-15 | neural network circuit |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020135175A JP2020135175A (en) | 2020-08-31 |
JP7241563B2 true JP7241563B2 (en) | 2023-03-17 |
Family
ID=72278754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019025269A Active JP7241563B2 (en) | 2019-02-15 | 2019-02-15 | neural network circuit |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7241563B2 (en) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018185765A1 (en) | 2017-04-04 | 2018-10-11 | Hailo Technologies Ltd. | Neural network processor incorporating inter-device connectivity |
JP2020513637A (en) | 2016-12-09 | 2020-05-14 | ベイジン ホライズン インフォメーション テクノロジー カンパニー リミテッド | System and method for data management |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0484264A (en) * | 1990-07-26 | 1992-03-17 | Fujitsu Ltd | Product sum arithmetic unit |
JPH05242065A (en) * | 1992-02-28 | 1993-09-21 | Hitachi Ltd | Information processor and its system |
-
2019
- 2019-02-15 JP JP2019025269A patent/JP7241563B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020513637A (en) | 2016-12-09 | 2020-05-14 | ベイジン ホライズン インフォメーション テクノロジー カンパニー リミテッド | System and method for data management |
WO2018185765A1 (en) | 2017-04-04 | 2018-10-11 | Hailo Technologies Ltd. | Neural network processor incorporating inter-device connectivity |
Also Published As
Publication number | Publication date |
---|---|
JP2020135175A (en) | 2020-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107657316B (en) | Design of cooperative system of general processor and neural network processor | |
JP6635265B2 (en) | Prediction device, prediction method, and prediction program | |
JP6610278B2 (en) | Machine learning apparatus, machine learning method, and machine learning program | |
US20180284703A1 (en) | Machine learning device, servo control apparatus, servo control system, and machine learning method | |
KR102655950B1 (en) | High speed processing method of neural network and apparatus using thereof | |
EP3754503A1 (en) | Allocation system, method and apparatus for machine learning, and computer device | |
JPH0944356A (en) | Processor and data processor | |
KR20190065144A (en) | Processing element and operating method thereof in neural network | |
JP7241563B2 (en) | neural network circuit | |
US20200226201A1 (en) | Methods and Apparatus for Constructing Digital Circuits for Performing Matrix Operations | |
JP2022000891A5 (en) | ||
US11900577B2 (en) | Processing apparatus for performing processing using a convolutional neural network | |
JPH07191950A (en) | Calculation network | |
CN115203383A (en) | Method and apparatus for querying similarity vectors in a set of candidate vectors | |
CN109634556B (en) | Multiply-accumulator and accumulation output method | |
JPWO2019168088A1 (en) | Inference device, convolution operation execution method and program | |
JP7104183B2 (en) | Neural network contraction device | |
US11475311B2 (en) | Neural network instruction streaming | |
CN108858194B (en) | Control method and device of Boolean network robot | |
JP2009223437A (en) | New signal generation device and new signal generation method | |
WO2023037882A1 (en) | Machine learning device | |
CN109144470B (en) | Computing device and method | |
CN112394640A (en) | Parameter setting method and device, storage medium and parameter setting unit | |
JP4436412B2 (en) | Adder, synthesizing apparatus, synthesizing method, synthesizing program, synthesizing program recording medium | |
CN115906917B (en) | Neural network model deployment method and device based on model algorithm division |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20211210 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20211210 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20221026 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20221122 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230120 |
|
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: 20230207 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230307 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7241563 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |