IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 株式会社メガチップスの特許一覧

特許7253468ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム
<>
  • 特許-ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム 図1
  • 特許-ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム 図2
  • 特許-ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム 図3
  • 特許-ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム 図4
  • 特許-ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-29
(45)【発行日】2023-04-06
(54)【発明の名称】ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム
(51)【国際特許分類】
   G06F 17/16 20060101AFI20230330BHJP
   G06F 17/10 20060101ALI20230330BHJP
   G06N 3/063 20230101ALI20230330BHJP
   G06T 1/40 20060101ALI20230330BHJP
【FI】
G06F17/16 B
G06F17/10 S
G06N3/063
G06T1/40
【請求項の数】 6
(21)【出願番号】P 2019137468
(22)【出願日】2019-07-26
(65)【公開番号】P2021022087
(43)【公開日】2021-02-18
【審査請求日】2022-01-17
(73)【特許権者】
【識別番号】591128453
【氏名又は名称】株式会社メガチップス
(74)【代理人】
【識別番号】100143498
【弁理士】
【氏名又は名称】中西 健
(74)【代理人】
【識別番号】100136319
【弁理士】
【氏名又は名称】北原 宏修
(74)【代理人】
【識別番号】100148275
【弁理士】
【氏名又は名称】山内 聡
(74)【代理人】
【識別番号】100142745
【弁理士】
【氏名又は名称】伊藤 世子
(72)【発明者】
【氏名】松本 真人
【審査官】坂東 博司
(56)【参考文献】
【文献】特開2018-116469(JP,A)
【文献】特開2017-021483(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/16
G06F 17/10
G06N 3/063
G06T 1/40
(57)【特許請求の範囲】
【請求項1】
特徴抽出層の処理と判定層の処理とを含むニューラルネットワーク用処理を実行するためのニューラルネットワーク用プロセッサであって、
前記特徴抽出層の処理用のデータを記憶保持する読み出し専用メモリと、
データの読み出し、および、データ書き込みを行うことができ、前記判定層の処理用のデータを記憶保持するランダムアクセスメモリと、
前記読み出し専用メモリと、前記ランダムアクセスメモリとを制御する制御部と、
前記読み出し専用メモリから前記特徴抽出層の処理用のデータを第1データとして読み出し、前記第1データを用いて、前記特徴抽出層の処理を実行するとともに、前記ランダムアクセスメモリから前記判定層の処理用のデータを第2データとして読み出し、前記第2データを用いて、前記判定層の処理を実行する内積処理部と、
を備えるニューラルネットワーク用プロセッサ。
【請求項2】
前記読み出し専用メモリは、
前記特徴抽出層の処理用のデータの読み出し時間を特定するためのデータを含むヘッダデータと、
前記特徴抽出層の処理を実行するときに必要となる順番に、前記特徴抽出層の処理用のデータとを出力できるように、前記特徴抽出層の処理用のデータを記憶保持しており、
前記制御部が前記読み出し専用メモリに対して、読み出し指令信号を出力した場合、前記読み出し専用メモリは、前記特徴抽出層の処理用のデータを、前記特徴抽出層の処理を実行するときに必要となる順番に出力する、
請求項1に記載のニューラルネットワーク用プロセッサ。
【請求項3】
前記制御部は、
前記読み出し専用メモリに記憶されている前記ヘッダデータを読み出し、当該ヘッダデータに基づいて、前記読み出し専用メモリから、前記特徴抽出層の処理用のデータの出力処理が完了する時刻を特定し、
特定した時刻よりも前の時刻において、前記判定層の処理用のデータが前記ランダムアクセスメモリに記憶保持されている状態となるように制御する、
請求項2に記載のニューラルネットワーク用プロセッサ。
【請求項4】
圧縮されたデータに対して伸張処理を実行する伸張部をさらに備え、
前記読み出し専用メモリは、
前記特徴抽出層の処理用のデータを圧縮されたデータとして記憶保持しており、
前記伸張部は、
前記読み出しメモリに記憶保持されている前記圧縮されたデータに対して伸張処理を実行し、
前記内積処理部は、
前記伸張部により伸張されたデータを用いて、前記特徴抽出層の処理を実行する、
請求項1から3のいずれかに記載のニューラルネットワーク用プロセッサ。
【請求項5】
特徴抽出層の処理と判定層の処理とを含むニューラルネットワーク用処理を実行するためのニューラルネットワーク用プロセッサであって、
前記特徴抽出層の処理用のデータを記憶保持する読み出し専用メモリと、
データの読み出し、および、データ書き込みを行うことができ、前記判定層の処理用のデータを記憶保持するランダムアクセスメモリと、
前記読み出し専用メモリと、前記ランダムアクセスメモリとを制御する制御部と、
を備えるニューラルネットワーク用プロセッサを用いて実行するニューラルネットワーク用処理方法であって、
前記読み出し専用メモリから前記特徴抽出層の処理用のデータを第1データとして読み出し、前記第1データを用いて、前記特徴抽出層の処理を実行する第1ステップと、
前記ランダムアクセスメモリから前記判定層の処理用のデータを第2データとして読み出し、前記第2データを用いて、前記判定層の処理を実行する第2ステップと、
を備えるニューラルネットワーク用処理方法。
【請求項6】
請求項5に記載のニューラルネットワーク用処理方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ニューラルネットワークの技術に関する。
【背景技術】
【0002】
近年、ニューラルネットワーク技術の1つである、CNN(Convolutional Neural Network)を用いた多様な技術が開発されている(例えば、特許文献1を参照)。CNNの中でも、中間層を多く設けたDCNN(Deep Convolutional Neural Network)を用いた技術が、多様な分野で成果を上げているため、特に注目を集めている。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2015-197702号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
DCNNは、一般物体認識やセマンティックセグメンテーション等の様々なタスクにおいて高い認識性能を実現している。その一方で、DCNNは、処理を実行するために必要なパラメータ数が非常に多いため、DCNNをハードウェアにより実現する場合、そのハードウェア規模が大きくなる。特に、パラメータ(例えば、重み係数のデータ)を記憶保持するためのメモリを実装するためのハードウェア規模が大きくなるため、DCNNをハードウェアにより実現する場合のコストを低減させることが困難である。
【0005】
そこで、本発明は、上記課題に鑑み、ハードウェア規模の増大を抑えつつ、高性能なニューラルネットワーク処理を実行するニューラルネットワーク用プロセッサ、ニューラルネットワーク用データ処理方法、および、プログラムを実現することを目的とする。
【課題を解決するための手段】
【0006】
上記課題を解決するために、第1の発明は、特徴抽出層の処理と判定層の処理とを含むニューラルネットワーク用処理を実行するためのニューラルネットワーク用プロセッサであって、読み出し専用メモリと、ランダムアクセスメモリと、制御部と、内積処理部と、を備える。
【0007】
読み出し専用メモリは、特徴抽出層の処理用のデータを記憶保持する。
【0008】
ランダムアクセスメモリは、データの読み出し、および、データ書き込みを行うことができ、判定層の処理用のデータを記憶保持する。
【0009】
制御部は、読み出し専用メモリと、ランダムアクセスメモリとを制御する。
【0010】
内積処理部は、読み出し専用メモリから特徴抽出層の処理用のデータを第1データとして読み出し、第1データを用いて、特徴抽出層の処理を実行するとともに、ランダムアクセスメモリから判定層の処理用のデータを第2データとして読み出し、第2データを用いて、判定層の処理を実行する。
【0011】
このニューラルネットワーク用プロセッサでは、ニューラルネットワークのモデルを決定したら確定する特徴抽出層の処理用データ(例えば、重み係数データ)を、ハードウェア化したときのハード規模が小さくてすむ読み出し専用メモリ(ROM)に書き込み、データが変更される可能性のある判定層の処理用データ(例えば、重み係数データ)を、データ書き換えができるランダムアクセスメモリ(RAM)に保持する。そして、このニューラルネットワーク用プロセッサでは、上記の状態により、ニューラルネットワークによる処理を実行する。つまり、このニューラルネットワーク用プロセッサでは、変更されることがない特徴抽出層の処理用データ(例えば、重み係数データ)を、ハードウェア規模が小さくてすむ読み出し専用メモリで保持し、変更する可能性がある判定層の処理用データ(例えば、重み係数データ)をランダムアクセスメモリで保持して、ニューラルネットワーク用処理を実行するので、ハードウェア規模の増大を抑えつつ、高性能なニューラルネットワーク処理を実行することができる。
【0012】
第2の発明は、第1の発明であって、読み出し専用メモリは、特徴抽出層の処理用のデータの読み出し時間を特定するためのデータを含むヘッダデータと、特徴抽出層の処理を実行するときに必要となる順番に、特徴抽出層の処理用のデータとを出力できるように、特徴抽出層の処理用のデータを記憶保持している。
【0013】
そして、制御部が読み出し専用メモリに対して、読み出し指令信号を出力した場合、読み出し専用メモリは、特徴抽出層の処理用のデータを、特徴抽出層の処理を実行するときに必要となる順番に出力する。
【0014】
このニューラルネットワーク用プロセッサでは、特徴抽出層のネットワーク構成にしたがって確定する重み係数データを、予測処理を実行するときに必要となる順番に(予測処理のときの処理順に)読み出されるように、読み出し専用メモリに記憶している。したがって、このニューラルネットワーク用プロセッサでは、予測処理実行時において、読み出し指令信号(例えば、単発のトリガー信号)を読み出し専用メモリに入力するだけで、内積処理部は、予測処理を実行するときに必要となる順番に、特徴抽出層の処理のための重み係数データを取得することができる。つまり、このニューラルネットワーク用プロセッサでは、読み出し指令信号(例えば、単発のトリガー信号)を読み出し専用メモリに入力するだけで、必要な特徴抽出層の処理のための重み係数データが、処理順に取得できるため、従来技術のように、ROMに対する複雑なアドレス指定を行う必要がない。
【0015】
第3の発明は、第2の発明であって、制御部は、読み出し専用メモリに記憶されているヘッダデータを読み出し、当該ヘッダデータに基づいて、読み出し専用メモリから、特徴抽出層の処理用のデータの出力処理が完了する時刻を特定し、特定した時刻よりも前の時刻において、判定層の処理用のデータがランダムアクセスメモリに記憶保持されている状態となるように制御する。
【0016】
このニューラルネットワーク用プロセッサでは、読み出し専用メモリに記憶されているヘッダデータにより、特徴抽出層の処理用のデータ(例えば、重み係数データ)を読み出す時間を特定することができる。したがって、このニューラルネットワーク用プロセッサでは、特定した特徴抽出層の処理用のデータ(例えば、重み係数データ)を読み出す時間に基づいて、判定層の処理用のデータ(重み係数データ)を、例えば、所定のROMからランダムアクセスメモリに予め転送しておくことができる。これにより、このニューラルネットワーク用プロセッサでは、特徴抽出層の処理が完了すると、すぐに、判定層の処理用のデータ(例えば、重み係数データ)をランダムアクセスメモリから取得できる(読み出すことができる)状態にすることができる。つまり、このニューラルネットワーク用プロセッサでは、特徴抽出層の処理が完了すると、すぐに、判定層の処理が実行できる状態にできる。その結果、このニューラルネットワーク用プロセッサでは、ニューラルネットワーク用処理を高速化することができる(判定層の処理が完了するまでの時間を短くすることができる)。
【0017】
第4の発明は、第1から第3のいずれかの発明であって、圧縮されたデータに対して伸張処理を実行する伸張部をさらに備える。
【0018】
読み出し専用メモリは、特徴抽出層の処理用のデータを圧縮されたデータとして記憶保持している。
【0019】
伸張部は、読み出しメモリに記憶保持されている圧縮されたデータに対して伸張処理を実行する。
【0020】
内積処理部は、伸張部により伸張されたデータを用いて、特徴抽出層の処理を実行する。
【0021】
このニューラルネットワーク用プロセッサでは、特徴抽出層のデータを、圧縮したデータとして、読み出し専用メモリに記憶保持するため、さらに、読み出し専用メモリで必要となるメモリ容量が少なくなる。したがって、このニューラルネットワーク用プロセッサでは、読み出し専用メモリのハードウェア規模をさらに小さくすることができる。その結果、このニューラルネットワーク用プロセッサのハードウェア規模を、さらに小さくできる。
【0022】
第5の発明は、特徴抽出層の処理と判定層の処理とを含むニューラルネットワーク用処理を実行するためのニューラルネットワーク用プロセッサであって、
特徴抽出層の処理用のデータを記憶保持する読み出し専用メモリと、
データの読み出し、および、データ書き込みを行うことができ、判定層の処理用のデータを記憶保持するランダムアクセスメモリと、
読み出し専用メモリと、ランダムアクセスメモリとを制御する制御部と、
を備えるニューラルネットワーク用プロセッサを用いて実行するニューラルネットワーク用処理方法である。ニューラルネットワーク用処理方法は、第1ステップと、第2ステップとを備える。
【0023】
第1ステップは、読み出し専用メモリから特徴抽出層の処理用のデータを第1データとして読み出し、第1データを用いて、特徴抽出層の処理を実行する。
【0024】
第2ステップは、ランダムアクセスメモリから判定層の処理用のデータを第2データとして読み出し、第2データを用いて、判定層の処理を実行する。
【0025】
これにより、第1の発明と同様の効果を奏するニューラルネットワーク用処理方法を実現することができる。
【0026】
第6の発明は、第5の発明であるニューラルネットワーク用処理方法をコンピュータに実行させるためのプログラムである。
【0027】
これにより、第1の発明と同様の効果を奏するニューラルネットワーク用処理方法をコンピュータに実行させるためのプログラムを実現することができる。
【発明の効果】
【0028】
本発明によれば、ハードウェア規模の増大を抑えつつ、高性能なニューラルネットワーク処理を実行するニューラルネットワーク用プロセッサ、ニューラルネットワーク用データ処理方法、および、プログラムを実現することができる。
【図面の簡単な説明】
【0029】
図1】第1実施形態に係るニューラルネットワーク用プロセッサ100の概略構成図。
図2】ニューラルネットワーク用プロセッサ100で実行される処理のタイミングチャート。
図3】ニューラルネットワーク用プロセッサ100で実行される処理のフローチャート。
図4】第1実施形態の第1変形例に係るニューラルネットワーク用プロセッサ100Aの概略構成図。
図5】CPUバス構成を示す図。
【発明を実施するための形態】
【0030】
[第1実施形態]
第1実施形態について、図面を参照しながら、以下、説明する。
【0031】
<1.1:ニューラルネットワーク用プロセッサの構成>
図1は、第1実施形態に係るニューラルネットワーク用プロセッサ100の概略構成図である。
【0032】
ニューラルネットワーク用プロセッサ100は、図1に示すように、第1インターフェース部IF1と、制御部1と、第1ROM(Read Only Memory)2と、第2ROM3と、量子化処理部4と、第1RAM(Random Access Memory)5と、第2RAM6と、内積処理部7と、バスB1とを備える。図1に示すように、ニューラルネットワーク用プロセッサ100の各機能部は、バスB1により接続されており、必要なデータ、コマンド等を、バスB1を介して、入出力することができる。なお、上記機能部の一部または全部は、バス接続ではなく、必要に応じて、直接接続されるものであってもよい。
【0033】
第1インターフェース部IF1は、外部から処理対象となるデータDinを入力し、ニューラルネットワーク用プロセッサ100による処理結果を含むデータをデータDoutとして外部に出力する。第1インターフェース部IF1は、入力したデータDinを、バスB1を介して、第1RAM5に出力し(書き込み)、ニューラルネットワーク用プロセッサ100による処理結果を含むデータを、バスB1を介して、第1RAM5から取得する(読み出す)。
【0034】
制御部1は、ニューラルネットワーク用プロセッサ100の全体制御、各機能部の制御およびニューラルネットワーク用処理に必要な処理を行う。制御部CPU1は、CPU(Central Processing Unit)やCPUコアにより実現される。
【0035】
第1ROM2は、読み出し専用メモリであって、特徴抽出層の処理に用いられるデータ(例えば、パラメータのデータ、ニューラルネットワークの重み係数のデータ)を記憶保持する。第1ROM2は、図1に示すように、バスB1に接続されており、また、内積処理部7に接続されている。なお、第1ROM2は、バスB1を介して、内積処理部7に接続されるものであってもよい。第1ROM2は、制御部1からのトリガー信号Sig_trgを受信すると、例えば、ヘッダデータを、バスB1を介して、制御部1に出力するともに、ヘッダデータおよび特徴抽出層の処理に用いられるデータを内積処理部7に連続的に出力する。
【0036】
第2ROM3は、読み出し専用メモリであって、バスB1に接続されている。第2ROM3は、判定層の処理に用いられるデータ(例えば、パラメータのデータ、ニューラルネットワークの重み係数のデータ)を記憶保持する。第2ROM3は、制御部1からの指令に従い、判定層の処理に用いられるデータ(例えば、パラメータのデータ、ニューラルネットワークの重み係数のデータ)を、バスB1を介して、第2RAM6に転送する。
【0037】
量子化処理部4は、第1RAMとデータの送受信ができるように接続されている。量子化処理部4は、特徴抽出層(例えば、DCNN(Deep Convolution Neural Network)の畳み込み層)の入力である特徴マップのデータに対して、量子化処理を行う。また、量子化処理部4は、判定層(例えば、DCNNの全結合層)の入力データに対して、量子化処理を行う。なお、量子化処理部4は、量子化処理の対象のデータを、第1RAM5の所定の領域から読み出し、量子化処理後のデータを、第1RAM5の所定の領域に書き込む。また、量子化処理部4は、図1に示すように、第1RAM5と直接接続されるものであってもよいし、バス(例えば、バスB1)を介して接続されるものであってもよい。
【0038】
第1RAM5は、ニューラルネットワーク用処理を実行するために必要なデータを記憶保持するためのRAM(Random Access Memory)である。第1RAM5は、図1に示すように、バスB1に接続されており、また、量子化処理部4と接続されている。
【0039】
第2RAM6は、ランダムアクセスメモリである。第2RAM6は、図1に示すように、バスB1に接続されており、また、内積処理部7に接続されている。第2RAM6は、第2ROM3から転送される、判定層の処理に用いられるデータ(例えば、パラメータのデータ、ニューラルネットワークの重み係数のデータ)を記憶保持する。第2RAM6は、制御部1からの指令に従い、所定のタイミングで、記憶保持している判定層の処理に用いられるデータを内積処理部7に出力する。
【0040】
内積処理部7は、図1に示すように、第2インターフェース部71と、内積演算処理部72とを備える。内積処理部7は、図1に示すように、第1ROM2、第1RAM5、第2RAM6、および、バスB1に接続されている。内積処理部7は、制御部1から、例えば、バスB1を介して、制御信号Ctr1を受信し、受信した制御信号Ctr1に従い、所定の処理を実行する。
【0041】
第2インターフェース部71は、第1ROM2、第1RAM5、第2RAM6とのインターフェースである。
(1)特徴抽出層の処理が実行される場合、第2インターフェース部71は、第1ROM2から、特徴抽出層の処理用のデータ(例えば、パラメータ、重み係数)D_wij_featureを読み出し、読み出したデータを、データD_wijとして、内積演算処理部72に出力する。また、第2インターフェース部71は、第1RAM5の所定の領域から、量子化処理後のデータD_Qinを読み出し、読み出したデータを、データD_Qinとして、内積演算処理部72に出力する。
(2)判定層の処理が実行される場合、第2インターフェース部71は、第2RAM6から、判定層の処理用のデータ(例えば、パラメータ、重み係数)D_wij_deciを読み出し、読み出したデータを、データD_wijとして、内積演算処理部72に出力する。また、第2インターフェース部71は、第1RAM5の所定の領域から、量子化処理後のデータD_Qinを読み出し、読み出したデータを、データD_Qinとして、内積演算処理部72に出力する。
【0042】
内積演算処理部72は、第2インターフェース部71から出力されるデータD_Qin、および、データD_wijを入力する。内積演算処理部72は、データD_Qin、および、データD_wijを用いて、内積演算処理を実行し、内積演算処理結果のデータをデータDoとして取得する。そして、内積演算処理部72は、取得したデータDoを第1RAM5に出力する。
【0043】
<1.2:ニューラルネットワーク用プロセッサの動作>
以上のように構成されたニューラルネットワーク用プロセッサ100の動作について、以下、説明する。
【0044】
図2は、ニューラルネットワーク用プロセッサ100で実行される処理のタイミングチャートである。
【0045】
図3は、ニューラルネットワーク用プロセッサ100で実行される処理のフローチャートである。
【0046】
以下では、図1図3を参照しながら、ニューラルネットワーク用プロセッサ100の動作について、説明する。
【0047】
一般に、CNNでは、入力層と、畳み込み層(コンボリューション層)と、全結合層とを含む。例えば、ニューラルネットワーク用プロセッサ100の第1インターフェース部IF1に、入力データDinとして、画像データが入力され、CNNによる画像認識処理が実行され、画像認識処理結果が出力データDoutとして外部に出力される。
【0048】
CNNでは、畳み込み層の処理、あるいは、全結合層の処理において、入力データに対して重み演算処理が実行され、当該処理結果に対して活性化関数(例えば、ランプ関数(ReLU:Rectified Linear Unit)、シグモイド関数、Softmax関数等)により処理が実行されることで、畳み込み層あるいは全結合層の出力が得られる。
【0049】
説明便宜のため、ニューラルネットワーク用プロセッサ100において、CNNによる処理が実行される場合(一例)について、以下説明する。なお、CNNの畳み込み層がN層(N:自然数)からなるものとして、以下、説明する。
【0050】
(ステップS1):
ステップS1において、ニューラルネットワーク用プロセッサ100において、処理対象となるデータ(例えば、画像認識処理を行う場合、処理対象の画像データ)の入力処理を実行する。具体的には、ニューラルネットワーク用プロセッサ100において、外部から処理対象となるデータDinを第1インターフェース部IF1により取得(入力)する。そして、データDinは、第1インターフェース部IF1から、バスB1を介して、第1RAM5に転送され、データDinは、第1RAM5の所定の領域に記憶保持される。
【0051】
また、ニューラルネットワーク用プロセッサ100では、量子化処理が実行される。具体的には、量子化処理部4は、データDinを、第1RAM5の所定の領域から読み出し、読み出したデータに対して、量子化処理を実行し、量子化後のデータをデータD_Qinとして取得する。そして、量子化処理部4は、取得した量子化後のデータD_Qinを第1RAM5の所定の領域に書き込む。
【0052】
なお、量子化処理は、データを量子化する処理に加えて、例えば、ダイナミックレンジ調整、二値化処理、オフセット調整処理を含むものであってもよい。
【0053】
(ステップS2、ステップS3):
ステップS2において、制御部1は、バスB1を介して、第1ROM2に対して、トリガー信号Sig_trigを送信する。
【0054】
第1ROM2は、制御部1からのトリガー信号Sig_trigを受信すると、第1ROM2に記憶保持されているヘッダデータD_headを読み出し、当該ヘッダデータD_headを、バスB1を介して、制御部1および内積処理部7の第2インターフェース部71に出力する(ステップS3)。
【0055】
ヘッダデータD_headには、例えば、特徴抽出層を構成する層の数、各層のデータ長、データ数等のデータが含まれている。
【0056】
(ステップS41~S45):
ステップS41~S45では、特徴抽出層の層ごとの処理が、特徴抽出層の層数分、繰り返し実行される。
【0057】
第1ROM2は、ヘッダデータD_headを出力した後、特徴抽出層のデータを、特徴抽出層の第1層のデータから第N層のデータまで、順番に、読み出し、読み出したデータをデータD_wij_featureとして、内積処理部7に出力する(重み係数データ取得処理、ステップS42)。
【0058】
具体的には、(1)特徴抽出層の第1層の重み係数データ、(2)特徴抽出層の第2層の重み係数データ、・・・、(N)特徴抽出層の第N層の重み係数データが、上記順番で、第1ROM2から読み出され、データD_wij_featureとして、内積処理部7に出力される。
【0059】
ステップS43では、内積演算処理が実行される。具体的には、以下のようにして、内積演算処理が実行される。
【0060】
内積処理部7の第2インターフェース部71は、第1ROM2から出力される特徴抽出層の第1層の重み係数データを、データD_wij_featureとして、取得し、当該データをデータD_wijとして、内積演算処理部72に出力する。
【0061】
また、内積処理部7の第2インターフェース部71は、特徴抽出層の第1層に入力するデータの量子化後のデータを、第1RAM5から読み出し、データD_Qinとして取得する。そして、第2インターフェース部71は、取得したデータD_Qinを内積演算処理部72に出力する。
【0062】
内積演算処理部72は、データD_Qin、および、データD_wijを用いて、内積演算処理を実行する。例えば、データD_Qinがn次元ベクトルデータ(n:自然数)であり、データD_wij(重み係数データ)がn次元ベクトルデータであり、下記のように表現される場合、
D_Qin=[x ・・・ x
D_wij=[w ・・・ w
内積演算処理部72は、2つのn次元ベクトルの内積を算出する処理、すなわち、下記数式に相当する処理を実行することで、内積演算結果を取得する。
【数1】

なお、内積演算処理部72は、行列演算処理を行う場合、上記内積演算処理を繰り返し実行することで、行列演算処理結果を取得する。例えば、内積演算処理部72は、2つの行列A、Bの積(行列の積)を求める演算を行う場合、行列Aのi行目の1行に含まれる要素からなる行ベクトルと、行列Bのj列目の1列に含まれる要素からなる列ベクトルとに対して、上記と同様に内積演算処理を実行することで、行列A、Bの積により取得される行列のi行j列目の要素の値(データ)を取得することができる。
【0063】
このように処理することで、内積演算処理部72では、任意の行列演算の処理結果を取得することができる。
【0064】
内積演算処理部72では、上記のようにして、特徴抽出層の第1層の処理(例えば、CNNのコンボリューション処理(データに対する重み付け加算処理))を実行し、特徴抽出層の第1層の各シナプスの出力に相当するデータを取得する。
【0065】
なお、内積演算処理部72には、特徴抽出層の第1層の処理の順番に一致した、重み係数データが当該順番の通りに、データD_wijとして入力される。したがって、内積演算処理部72では、当該データD_wijと、それに対応する量子化後のデータ(処理対象のデータ(第1RAM5から読み出したデータ))とに対して、内積演算処理部72に入力される順番に、上記内積演算処理を繰り返し実行することで、特徴抽出層の第1層の各シナプスの出力に相当するデータを取得することができる。
【0066】
内積演算処理部72では、上記処理により、特徴抽出層の第1層の各シナプスの出力に相当するデータ(このデータを「データD0」とする)を取得したら、当該取得したデータに対して、活性化関数による処理を実行し、データDoを取得する。つまり、内積演算処理部72は、
Do=f_act(D0)
f_act():活性化関数(例えば、ReLU関数、Softmax関数、シグモイド関数等)
に相当する処理を実行することで、データDoを取得する。
【0067】
ステップS44において、内積演算処理部72は、上記により取得したデータDoを第1RAM5に出力し、当該データDoを第1RAM5の所定の領域に書き込む。
【0068】
以上のようにして、ニューラルネットワーク用プロセッサ100では、特徴抽出層の第1層の処理が実行される。図2のタイミングチャートでは、時刻t11から時刻t12の間において、第1ROM2から、特徴抽出層の第1層の処理用のデータ(重み係数データ)D_wij_feature(図2では、特徴抽出層の第1層の処理用のデータをデータDf_1st_Lと表記)が、処理順に読み出され、読み出した当該データ(重み係数データ)D_wij_featureと、処理対象の量子化後のデータD_Qinとを用いて、内積演算処理が実行される。そして、ニューラルネットワーク用プロセッサ100では、上記のように、活性化関数に相当する処理が実行されて、データDoが取得される。
【0069】
そして、ニューラルネットワーク用プロセッサ100では、特徴抽出層の第2層、第3層、・・・、第N層の処理が、上記の第1層の処理と同様に、実行される(ステップS41~S45、図2の時刻t12~t2の間の処理)。
【0070】
そして、上記処理により取得したデータDo(特徴抽出層の処理により取得したデータ)が、第1RAM5に出力される(書き込まれる)。
【0071】
(ステップS51):
ステップS51において、特徴抽出層のデータ読み出し終了時刻を特定する処理が実行される。具体的には、制御部1は、第1ROM2からヘッダデータD_headerを読み出し(図2の時刻t1~t11)、当該ヘッダデータD_headerに含まれるデータから、第1ROM2から内積処理部7に、特徴抽出層の処理用のデータ(重み係数データ)を転送するのに必要な時間T1を算出する。
【0072】
例えば、第1ROM2から取得されるヘッダデータD_headerには、
(1)特徴抽出層に含まれる層の数N(N:自然数)と、
(2)特徴抽出層に含まれる第k層(k:自然数、1≦k≦N)の処理における実数演算に必要な時間と、特徴抽出層に含まれる第k層(k:自然数、1≦k≦N)の処理における実数演算の計算精度と、
(3)特徴抽出層に含まれる第k層(k:自然数、1≦k≦N)の処理における整数演算に必要な時間と、特徴抽出層に含まれる第k層(k:自然数、1≦k≦N)の処理における整数演算の計算精度と、
が含まれる。そして、制御部1は、上記データに基づいて、例えば、下記数式に相当する処理を実行することで、特徴抽出層の処理用のデータ(重み係数データ)を転送するのに必要な時間T1を算出する。
【数2】

L(k).Real_D_time
=L(k).Real_D_num×L(k).Real_D_accuracy
L(k).Int_D_time
=L(k).Int_D_num×L(k).Int_D_accuracy
L(k).Real_D_time:第k層の実数演算に必要な処理時間
L(k).Int_D_time:第k層の整数演算に必要な処理時間
L(k).Real_D_num:第k層の実数演算対象のデータ数
L(k).Real_D_accuracy:第k層の実数演算の計算精度
L(k).Int_D_num:第k層の整数演算対象のデータ数
L(k).Int_D_accuracy:第k層の整数演算の計算精度
そして、制御部1は、上記により取得した時間T1と、特徴抽出層の処理用のデータ(重み係数データ)の転送が開始される時刻t11とから、特徴抽出層の処理用のデータ(重み係数データ)の転送が完了する時刻t2を、
t2=t11+T1
により算出する。これにより、制御部1は、特徴抽出層の処理用のデータ(重み係数データ)の転送が完了する時刻t2を特定する。
【0073】
(ステップS52):
ステップS52において、判定層の重み係数データの転送処理が実行される。具体的には、制御部1は、第2ROM3に記憶保持されている判定層の重み係数データD_wij_deciを第2RAM6に転送するのにかかる時間T2を取得する。そして、制御部1は、時刻t20(=t2-T2)以前の時刻において、第2ROM3に記憶保持されている判定層の重み係数データD_wij_deciを第2RAM6に転送する指令を第2ROM3、第2RAM6に出力し、時刻t20(=t2-T2)以前の時刻において、判定層の重み係数データD_wij_deciのデータ転送処理を開始させる。
【0074】
これにより、判定層の重み係数データD_wij_deciの第2ROM3から第2RAM6への転送処理を、特徴抽出層のデータ読み出し処理が完了する時刻t2までに完了させることができる。
【0075】
ニューラルネットワーク用プロセッサ100では、このように、特徴抽出層の処理(ステップS41~S45)と、並行に、ステップS51、S52の処理を行うことで、特徴抽出層の処理が完了する時刻t2の直後から、判定層の処理を実行することができる。
【0076】
(ステップS6、S7):
ステップS6、S7では、判定層の処理が実行される(図2の時刻t2~t3の処理)。
【0077】
時刻t2(判定層の処理の開始時刻)までに、特徴抽出層の処理が完了しており、かつ、判定層の処理用のデータ(判定層の処理用の重み係数データ)の第2ROM3から第2RAM6へのデータ転送処理が完了している。したがって、ステップS6では、内積処理部7の第2インターフェース部71は、判定層の処理用データ(判定層の処理用の重み係数データ)D_wij_deciを、第2RAM6から取得する(読み出す)。そして、第2インターフェース部71は、取得したデータD_wij_deciを、データD_wijとして、内積演算処理部72に出力する。
【0078】
また、内積処理部7の第2インターフェース部71は、判定層に入力するデータの量子化後のデータを、第1RAM5から読み出し、データD_Qinとして取得する。そして、第2インターフェース部71は、取得したデータD_Qinを内積演算処理部72に出力する。
【0079】
内積演算処理部72は、データD_Qin、および、データD_wijを用いて、内積演算処理を実行する。例えば、データD_Qinがn次元ベクトルデータ(n:自然数)であり、データD_wij(重み係数データ)がn次元ベクトルデータであり、下記のように表現される場合、
D_Qin=[x ・・・ x
D_wij=[w ・・・ w
内積演算処理部72は、2つのn次元ベクトルの内積を算出する処理、すなわち、下記数式に相当する処理を実行することで、内積演算結果を取得する。
【数3】

なお、内積演算処理部72は、行列演算処理を行う場合、上記内積演算処理を繰り返し実行することで、行列演算処理結果を取得する。例えば、内積演算処理部72は、2つの行列A、Bの積(行列の積)を求める演算を行う場合、行列Aのi行目の1行に含まれる要素からなる行ベクトルと、行列Bのj列目の1列に含まれる要素からなる列ベクトルとに対して、上記と同様に内積演算処理を実行することで、行列A、Bの積により取得される行列のi行j列目の要素の値(データ)を取得することができる。
【0080】
このように処理することで、内積演算処理部72では、任意の行列演算の処理結果を取得することができる。
【0081】
内積演算処理部72では、上記のようにして、判定層の処理(例えば、データの次元数を調整するためのアウトマッピング処理(Out Maaping)、全結合層の処理(ベクトル内積処理に相当)、Softmax層の処理等)を実行し、判定層の処理の出力結果に相当するデータをデータDoとして取得する。そして、取得したデータDoは、内積演算処理部72から第1RAM5に出力され、当該データDoは、第1RAM5の所定の領域に書き込まれる。
【0082】
なお、判定層の処理においても、特徴抽出層の処理と同様に、必要に応じて、活性化関数に相当する処理が実行されてもよい。
【0083】
以上の処理により取得された判定層の処理結果のデータは、例えば、第1インターフェース部IF1により、第1RAM5から読み出され、出力データDoutとして、例えば、外部に送信される。
【0084】
以上のように、ニューラルネットワーク用プロセッサ100では、ニューラルネットワークのモデルを決定したら確定する特徴抽出層の処理用データ(重み係数データ)を、ハードウェア化したときのハード規模が小さくてすむROM(本実施形態の場合、第1ROM2)に書き込み、データが変更される可能性のある判定層の処理用データ(重み係数データ)を、データ書き換えができるRAM(本実施形態の場合、第2RAM6)に保持する。そして、ニューラルネットワーク用プロセッサ100では、上記の状態により、ニューラルネットワークによる処理を実行する。つまり、ニューラルネットワーク用プロセッサ100では、変更されることがない特徴抽出層の処理用データ(重み係数データ)を、ハードウェア規模が小さくてすむROMで保持し、変更する可能性がある判定層の処理用データ(重み係数データ)をRAMで保持して、ニューラルネットワーク用処理を実行するので、ハードウェア規模の増大を抑えつつ、高性能なニューラルネットワーク処理を実行することができる。
【0085】
また、ニューラルネットワーク用プロセッサ100では、特徴抽出層のネットワーク構成にしたがって確定する重み係数データを、予測処理を実行するときに必要となる順番に(予測処理のときの処理順に)読み出されるように、ROM(本実施形態では、第1ROM2)に記憶している。したがって、ニューラルネットワーク用プロセッサ100では、予測処理実行時において、単発のトリガー信号(制御部1から第1ROM2に出力されるトリガー信号Sig_trig)を第1ROM2に入力するだけで、内積処理部7は、予測処理を実行するときに必要となる順番に、特徴抽出層の処理のための重み係数データを取得することができる。つまり、ニューラルネットワーク用プロセッサ100では、単発のトリガー信号を第1ROMに入力するだけで、必要な特徴抽出層の処理のための重み係数データが、処理順に取得できるため、従来技術のように、ROMに対する複雑なアドレス指定を行う必要がない。なお、上記実施形態では、単発のトリガー信号により、連続的に、第1ROM2から特徴抽出層の処理に必要なデータが、処理順に、第1ROM2から内積処理部7にデータ転送される場合について、説明したが、これに限定されることはない。例えば、ニューラルネットワーク用プロセッサ100において、第1ROM2の1つのアドレスを指定することで、その後、連続的に、第1ROM2から特徴抽出層の処理に必要なデータが、処理順に、第1ROM2から内積処理部7にデータ転送されるようにしてもよい。
【0086】
また、ニューラルネットワーク用プロセッサ100では、上記で説明したように、第1ROM2に記憶されているヘッダデータにより、特徴抽出層の処理用のデータ(重み係数データ)を読み出す時間を特定することができる。したがって、ニューラルネットワーク用プロセッサ100では、特定した特徴抽出層の処理用のデータ(重み係数データ)を読み出す時間に基づいて、判定層の処理用のデータ(重み係数データ)を、第2ROM3から第2RAM6に予め転送しておくことができる。これにより、ニューラルネットワーク用プロセッサ100では、特徴抽出層の処理が完了すると、すぐに、判定層の処理用のデータ(重み係数データ)を第2RAM6から取得できる(読み出すことができる)状態にすることができる。つまり、ニューラルネットワーク用プロセッサ100では、特徴抽出層の処理が完了すると、すぐに、判定層の処理が実行できる状態にできる。その結果、ニューラルネットワーク用プロセッサ100では、ニューラルネットワーク用処理を高速化することができる(判定層の処理が完了するまでの時間を短くすることができる)。
【0087】
なお、上記では、判定層の処理用のデータ(重み係数データ)が第2ROM3に記憶保持されている場合について、説明したが、これに限定されることはなく、判定層の処理用のデータ(重み係数データ)は、外部からニューラルネットワーク用プロセッサ100に入力されるものであってもよい。この場合、ニューラルネットワーク用プロセッサ100では、以下のように処理が実行される。すなわち、判定層の処理用のデータ(重み係数データ)は、データDinとして、外部から第1インターフェース部IF1に入力される。そして、ニューラルネットワーク用プロセッサ100では、上記で説明したのと同様に、特定した特徴抽出層の処理用のデータ(重み係数データ)を読み出す時間に基づいて、判定層の処理用のデータ(重み係数データ)を、第1インターフェース部IF1から第2RAM6に予め転送しておく。これにより、ニューラルネットワーク用プロセッサ100では、ニューラルネットワーク用プロセッサ100では、判定層の処理用のデータ(重み係数データ)が外部から入力される場合においても、特徴抽出層の処理が完了すると、すぐに、判定層の処理用のデータ(重み係数データ)を第2RAM6から取得できる(読み出すことができる)状態にすることができる。
【0088】
つまり、ニューラルネットワーク用プロセッサ100では、判定層の処理用のデータ(重み係数データ)が外部から入力される場合においても、特徴抽出層の処理が完了すると、すぐに、判定層の処理が実行できる状態にできる。その結果、ニューラルネットワーク用プロセッサ100では、ニューラルネットワーク用処理を高速化することができる(判定層の処理が完了するまでの時間を短くすることができる)。
【0089】
また、第2RAM6には、判定処理(判定層の処理)に必要なデータのみを記憶保持すれば良いので、第2RAM6のメモリ容量を小さくすることができる。
また、ニューラルネットワーク用プロセッサ100において、
(1)1回目の特徴抽出層の処理(例えば、第1層~第N層の処理)を実行し、
(2)1回目の判定層の処理を実行し、
(3)2回目の特徴抽出層の処理(例えば、第1層~第N層の処理)を実行し、
(4)2回目の判定層の処理を実行する、
場合、上記処理(2)の前に、1回目の判定層の処理の実行に必要なデータが第2RAM6に記憶保持され、上記処理(4)の前に、1回目の判定層の処理の実行に必要なデータが第2RAM6に記憶保持される。
【0090】
このとき、第2RAM6において、2回目の判定層の処理(次の判定層の処理)の実行に必要なデータのうち、1回目の判定層の処理の実行に必要なデータと異なるデータのみを更新するようにすればよい。これにより、ニューラルネットワーク用プロセッサ100では、第2RAM6のメモリ容量を小さくすることができるとともに、第2RAM6のデータ転送量(更新するデータの量)を少なくすることができる。
【0091】
≪第1変形例≫
次に、第1実施形態の第1変形例について、説明する。なお、上記実施形態と同様の部分については、同一符号を付し、詳細な説明を省略する。
【0092】
図4は、第1実施形態の第1変形例に係るニューラルネットワーク用プロセッサ100Aの概略構成図である。
【0093】
本変形例のニューラルネットワーク用プロセッサ100Aは、第1実施形態のニューラルネットワーク用プロセッサ100において、伸張部8を追加した構成を有している。それ以外については、本変形例のニューラルネットワーク用プロセッサ100Aは、第1実施形態のニューラルネットワーク用プロセッサ100と同様である。
【0094】
本変形例のニューラルネットワーク用プロセッサ100Aでは、第1ROM2に圧縮されたデータが書き込まれている。
【0095】
伸張部8は、第1ROM2に記憶保持されている圧縮データD1を読み出し、当該圧縮データD1に対して伸張処理を実行し、伸張処理後のデータD_wij_featureを取得する。つまり、伸張部8は、上記伸張処理を実行することで、第1実施形態において、第1ROM2から出力されるデータD_wij_featureを取得する。そして、伸張部8は、伸張処理後のデータD_wij_featureを内積処理部7に出力する。
【0096】
ニューラルネットワーク用プロセッサ100Aでは、第1実施形態の第1ROMから出力されるデータD_wij_featureの代わりに、伸張部8から出力されるデータD_wij_featureを用いて、内積処理部7での処理が実行される。内積処理部7での処理は、第1実施形態と同様である。
【0097】
本変形例のニューラルネットワーク用プロセッサ100Aでは、特徴抽出層のデータを、圧縮したデータとして、第1ROM2に記憶保持するため、第1実施形態に比べて、さらに、第1ROM2で必要となるメモリ容量が少なくなる。したがって、本変形例のニューラルネットワーク用プロセッサ100Aでは、第1ROM2のハードウェア規模をさらに小さくすることができる。その結果、本変形例のニューラルネットワーク用プロセッサ100Aは、第1実施形態のニューラルネットワーク用プロセッサ100に比べて、さらにハードウェア規模を小さくできる。
【0098】
[他の実施形態]
ニューラルネットワーク用プロセッサ100、100Aの各機能部の一部または全部は、マイクロコードにより、あるいは、マイクロコードとともに所定のハードウェアにより実現されるものであってもよい。
【0099】
また、ニューラルネットワーク用プロセッサ100、100Aにおいて、下記先行技術文献Aに開示されているように、Binarized-DCNN(DCNN:Deep Convolution Neural Network)(以下、「BNN」という)によるニューラルネットワークを実現するようにしてもよい。この場合、BNNにより実現される特徴抽出層の重み係数データをROM(例えば、第1ROM2)に、非圧縮データ、あるいは、圧縮データとして記憶させるようにすればよい。
(先行技術文献A):
神谷龍司等 “Binarized-DCNNによる識別計算の高速化とモデル圧縮” 信学技報116(366), 47-52, 2016-12-15 電子情報通信学会
また、ニューラルネットワーク用プロセッサ100、100Aにおいて、BNNのベクトル分解により取得される二値基底行列を多値基底行列としたニューラルネットワーク(これを「多値ニューラルネットワーク」という)を実装するようにしてもよい。この場合、多値ニューラルネットワークにより実現される特徴抽出層の重み係数データをROM(例えば、第1ROM2)に、非圧縮データ、あるいは、圧縮データとして記憶させるようにすればよい。
【0100】
上記実施形態(変形例を含む)では、ニューラルネットワーク用プロセッサ100、100Aが、RAMを第1RAM5、第2RAM6を有する構成である場合について、説明したが、これに限定されることはない。ニューラルネットワーク用プロセッサ100、100Aにおいて、例えば、第1RAM5、第2RAM6を1つのRAMにより実現するようにしてもよい。
【0101】
また、上記実施形態(変形例を含む)における各種のデータ転送、信号の送受信は、上記で説明した形態に限定されるものではなく、各機能部において、直接接続された信号線により、データ転送、信号の送受信が実行されるものであってもよいし、また、バスを介して、データ転送、信号の送受信が実行されるものであってもよい。
【0102】
また、上記実施形態(変形例を含む)において、ROMやRAMの個数については一例として説明したが、これに限定されることはなく、ROM、RAMの個数や配置は、上記以外のものであってもよい。また、ROM、RAMは、ニューラルネットワーク用プロセッサ100、100Aの外部に設けられるものであってもよい。
【0103】
上記実施形態で説明したニューラルネットワーク用プロセッサ100、100Aの各ブロック(各機能部)は、LSIなどの半導体装置により個別に1チップ化されても良いし、一部又は全部を含むように1チップ化されても良い。また、上記実施形態で説明したニューラルネットワーク用プロセッサ100の各ブロック(各機能部)は、複数のLSIなどの半導体装置により実現されるものであってもよい。
【0104】
なお、ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
【0105】
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【0106】
また、上記各実施形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして、上記各実施形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置(CPU)により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ROMなどの記憶装置に格納されており、ROMにおいて、あるいはRAMに読み出されて実行される。
【0107】
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
【0108】
例えば、上記実施形態(変形例を含む)の各機能部を、ソフトウェアにより実現する場合、図5に示したハードウェア構成(例えば、CPU、GPU、ROM、RAM、入力部、出力部等をバスBusにより接続したハードウェア構成)を用いて、各機能部をソフトウェア処理により実現するようにしてもよい。
【0109】
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
【0110】
前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、大容量DVD、次世代DVD、半導体メモリを挙げることができる。
【0111】
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
【0112】
また、文言「部」は、「サーキトリー(circuitry)」を含む概念であってもよい。サーキトリーは、ハードウェア、ソフトウェア、あるいは、ハードウェアおよびソフトウェアの混在により、その全部または一部が、実現されるものであってもよい。
【0113】
ここに開示される要素の機能は、当該開示される要素を実行するように構成された、あるいは当該開示される機能を実行するようにプログラミングされた汎用プロセッサ、専用プロセッサ、集積回路、ASIC(「特定用途向け集積回路」)、従来の回路構成及び/またはそれらの組み合わせを含む回路構成あるいは処理回路構成が用いられて実装されてもよい。プロセッサは、それが、その中にトランジスタ及び他の回路構成を含むとき、処理回路構成あるいは回路構成として見なされる。本開示において、回路構成、ユニットあるいは手段は、挙げられた機能を実行するハードウェア、あるいは当該機能を実行するようにプログラミングされたハードウェアである。ハードウェアは、挙げられた機能を実行するようにプログラミングされた、あるいは当該機能を実行するように構成された、ここで開示されるいかなるハードウェアあるいは既知の他のものであってもよい。ハードウェアが、あるタイプの回路構成として見なされるかもしれないプロセッサであるとき、回路構成、手段あるいはユニットは、ハードウェアとソフトウェアの組み合わせ、ハードウェアを構成するために用いられるソフトウェア及び/またはプロセッサである。
【0114】
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
【符号の説明】
【0115】
100、100A ニューラルネットワーク用プロセッサ
1 制御部
2 第1ROM
3 第2ROM
5 第1RAM
6 第2RAM
7 内積処理部
8 伸張部
図1
図2
図3
図4
図5