JP7033507B2 - ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム - Google Patents

ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム Download PDF

Info

Publication number
JP7033507B2
JP7033507B2 JP2018143466A JP2018143466A JP7033507B2 JP 7033507 B2 JP7033507 B2 JP 7033507B2 JP 2018143466 A JP2018143466 A JP 2018143466A JP 2018143466 A JP2018143466 A JP 2018143466A JP 7033507 B2 JP7033507 B2 JP 7033507B2
Authority
JP
Japan
Prior art keywords
processing
mode
microcode
norm
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
JP2018143466A
Other languages
English (en)
Other versions
JP2020021208A (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.)
MegaChips Corp
Original Assignee
MegaChips 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 MegaChips Corp filed Critical MegaChips Corp
Priority to JP2018143466A priority Critical patent/JP7033507B2/ja
Priority to PCT/JP2019/005465 priority patent/WO2020026475A1/ja
Publication of JP2020021208A publication Critical patent/JP2020021208A/ja
Application granted granted Critical
Publication of JP7033507B2 publication Critical patent/JP7033507B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Description

本発明は、ニューラルネットワークの技術に関する。
近年、ニューラルネットワーク技術の1つである、CNN(Convolutional Neural Network)を用いた多様な技術が開発されている(例えば、特許文献1を参照)。CNNの中でも、中間層を多く設けたDCNN(Deep Convolutional Neural Network)を用いた技術が、多様な分野で成果を上げているため、特に注目を集めている。
特開2015-197702号公報
DCNNは、一般物体認識やセマンティックセグメンテーション等の様々なタスクにおいて高い認識性能を実現している。その一方で、DCNNは、処理を実行するために必要な計算量とパラメータ数が非常に多いため、処理を実行するときに、膨大な処理時間と多大なメモリ量が必要となる。
また、DCNNでは、層をより深くすることで認識精度が向上する傾向が見られ、これに伴い識別時間(処理時間)に加えモデルサイズも増加するという問題が発生する。組み込み機器やモバイル機器等の低スペックのデバイスでDCNNを使用するには、識別計算の高速化とモデルサイズの圧縮が大きな課題となる。
つまり、組み込み機器やモバイル機器等の低スペックのデバイス(例えば、エッジ端末)において、大規模システムで学習し取得した学習済みモデルをそのまま搭載することは困難であり、低スペックのデバイスにおいて、コンパクト化したモデルを構築する必要がある。
組み込み機器やモバイル機器等の低スペックのデバイス(例えば、エッジ端末)に、大規模システムで学習し取得した学習済みモデルを搭載するためには、低スペックのデバイスにおいて、当該学習済みモデルのコンパクト化したモデルを構築し、当該学習済みモデルに用いた学習用データを用いて、再度、コンパクト化したモデルにおいて、学習させる必要がある(この学習を「再学習」という)。
つまり、組み込み機器やモバイル機器等の低スペックのデバイス(例えば、エッジ端末)で、大規模システムで学習し取得した学習済みモデルを搭載するためには、再学習が必要となるという課題がある。
そこで、本発明は、上記課題に鑑み、再学習を必要とせず、組み込み機器やモバイル機器等の低スペックのデバイス(例えば、エッジ端末)において、高性能なコンパクト化したモデルを搭載することができるニューラルネットワーク用プロセッサ、ニューラルネットワーク用データ処理方法、および、プログラムを実現することを目的とする。
上記課題を解決するために、第1の発明は、畳み込み層の処理と全結合層の処理とを含む多値化ニューラルネットワーク用処理を実行するためのニューラルネットワーク用プロセッサであって、制御部と、量子化処理部と、内積処理部と、を備える。
制御部は、実数ベクトルデータであるスケーリング係数ベクトルを設定するとともに、多値データを要素とする多値基底行列を設定する。
量子化処理部は、畳み込み層に入力される特徴マップおよび全結合層に入力される特徴ベクトルに対して量子化処理を実行する。また、量子化処理部は、特徴マップの最小値および特徴ベクトルの最小値が所定の値よりも小さい値となるようにオフセット値を設定し、特徴マップおよび特徴ベクトルの最大値および最小値に基づいて取得される量子化幅を用いて量子化処理を実行する。
内積処理部は、(1)特徴マップおよび特徴ベクトルのノルムを算出するノルムモードと、(2)多値基底行列と量子化処理後の特徴マップまたは特徴ベクトルとを用いた内積演算処理を実行する内積演算モードとを有する。内積処理部は、ノルムモードの処理、および、内積演算モードを組み合わせた処理を実行することで、畳み込み層の処理と全結合層の処理とを実行する。
このニューラルネットワーク用プロセッサでは、畳み込み層の処理と、全結合層の処理において、同様の処理が実行される部分を共通化し、2つのモード((1)ノルムモード、(2)内積演算モード)の処理を組み合わせた処理を実行することで、畳み込み層の処理と全結合層の処理とを実行することができる。したがって、このニューラルネットワーク用プロセッサでは、ハードウェア規模の増大を抑制しつつ、ニューラルネットワーク用処理を高速に実行することができる。
第2の発明は、第1の発明であって、内積処理部は、ノルムモード用マイクロコードと、内積演算モード用マイクロコードとを取得するマイクロコード取得部と、マイクロコードに基づいて、算術演算処理を実行する算術演算処理部と、を備える。
(1)ノルムモードに設定されている場合、
マイクロコード取得部は、ノルムモード用マイクロコードを取得し、算術演算処理部は、ノルムモード用マイクロコードに基づいて、算術演算処理を実行する。
(2)内積演算モードに設定されている場合、
マイクロコード取得部は、内積演算モード用マイクロコードを取得し、算術演算処理部は、内積演算モード用マイクロコードに基づいて、算術演算処理を実行する。
このニューラルネットワーク用プロセッサでは、畳み込み層の処理と、全結合層の処理において、同様の処理が実行される部分を共通化し、2つのモード((1)ノルムモード、(2)内積演算モード)の処理を、各モードに対応するマイクロコードにより処理することで実行する。そして、このニューラルネットワーク用プロセッサでは、畳み込み層の処理と全結合層の処理とにおいて、相違する部分の処理を、上記の2つのモードの処理を適切な順序で組み合わせることで実現する。したがって、このニューラルネットワーク用プロセッサでは、ハードウェア規模の増大を抑制しつつ、ニューラルネットワーク用処理を高速に実行することができる。
第3の発明は、第1または第2の発明であって、内積処理部は、畳み込み層の処理を実行する場合、
(1)ノルムモードの処理を、処理対象の畳み込み層の特徴マップ数分繰り返し実行し、
(2)内積演算モードの処理を、各特徴マップについてノルムモードの処理が実行されるごとに、処理対象の畳み込み層の出力数分繰り返し実行する。
これにより、このニューラルネットワーク用プロセッサでは、2つのモードによる処理を組み合わせることで、畳み込み層の処理を実行することができる。
第4の発明は、第1から第3のいずれかの発明であって、内積処理部は、全結合層の処理を実行する場合、
(1)処理対象の全結合層につき、ノルムモードの処理を1回実行し、
(2)内積演算モードの処理を、処理対象の全結合層の出力数分繰り返し実行する。
これにより、このニューラルネットワーク用プロセッサでは、2つのモードによる処理を組み合わせることで、全結合層の処理を実行することができる。
第5の発明は、畳み込み層の処理と全結合層の処理とを含む多値化ニューラルネットワーク用処理を実行するためのニューラルネットワーク用処理方法であって、制御ステップと、量子化処理ステップと、内積処理ステップと、を備える。
制御ステップは、実数ベクトルデータであるスケーリング係数ベクトルを設定するとともに、多値データを要素とする多値基底行列を設定する。
量子化処理ステップは、畳み込み層に入力される特徴マップおよび全結合層に入力される特徴ベクトルに対して量子化処理を実行する。また、量子化処理ステップは、特徴マップの最小値および特徴ベクトルの最小値が所定の値よりも小さい値となるようにオフセット値を設定し、前記特徴マップおよび前記特徴ベクトルの最大値および最小値に基づいて取得される量子化幅を用いて量子化処理を実行する。
内積処理ステップは、(1)特徴マップおよび特徴ベクトルのノルムを算出するノルムモードと、(2)多値基底行列と量子化処理後の特徴マップまたは特徴ベクトルとを用いた内積演算処理を実行する内積演算モードとを有する。内積処理ステップは、ノルムモードの処理、および、内積演算モードを組み合わせた処理を実行することで、畳み込み層の処理と全結合層の処理とを実行する。
これにより、第1の発明と同様の効果を奏するニューラルネットワーク用処理方法を実現させることができる。
第6の発明は、第5の発明であるニューラルネットワーク用処理方法をコンピュータに実行させるためのプログラムである。
これにより、第1の発明と同様の効果を奏するニューラルネットワーク用処理方法をコンピュータに実行させるためのプログラムを実現させることができる。
本発明によれば、再学習を必要とせず、組み込み機器やモバイル機器等の低スペックのデバイス(例えば、エッジ端末)において、高性能なコンパクト化したモデルを搭載することができるニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラムを実現することができる。
第1実施形態に係る二値化ニューラルネットワーク用プロセッサ100の概略構成図。 第1実施形態に係る内積処理部3の概略構成図。 Offsetモードの処理を説明するための図。 Normモードの処理を説明するための図。 DPモード(内積演算処理モード)の処理を説明するための図。 CPUバス構成を示す図。
[第1実施形態]
第1実施形態について、図面を参照しながら、以下、説明する。
<1.1:二値化ニューラルネットワーク用プロセッサの構成>
図1は、第1実施形態に係る二値化ニューラルネットワーク用プロセッサ100の概略構成図である。
図2は、第1実施形態に係る内積処理部3の概略構成図である。
二値化ニューラルネットワーク用プロセッサ100は、図1に示すように、入出力インターフェースIF1と、制御部CPU1と、演算処理部PL1と、バスB1とを備える。入出力インターフェースIF1と、制御部CPU1と、演算処理部PL1とは、図1に示すように、バスB1により接続されており、必要なデータ、コマンド等を、バスB1を介して、入出力することができる。なお、上記機能部の一部または全部は、バス接続ではなく、必要に応じて、直接接続されるものであってもよい。
入出力インターフェースIF1は、外部から処理対象となるデータDinを入力し、二値化ニューラルネットワーク用プロセッサにより処理結果を含むデータをデータDoutとして外部に出力する。
制御部CPU1は、二値化ニューラルネットワーク用プロセッサ100の全体制御、各機能部の制御および二値化ニューラルネットワーク用処理に必要な処理を行う。制御部CPU1は、CPU(Central Processing Unit)やCPUコアにより実現される。
制御部CPU1は、例えば、大規模システムでの学習済みモデルのパラメータ(重み付けデータ)を近似するスケーリング係数ベクトルv_cおよび二値基底行列Mを取得(設定)し、取得(設定)したスケーリング係数ベクトルv_cおよび二値基底行列Mを、それぞれ、内部RAM R1の領域CV、および領域BinMtx0/1に記憶保持させる。
なお、上記スケーリング係数ベクトルv_cおよび二値基底行列Mは、入出力インターフェースIF1を介して、外部から、二値化ニューラルネットワーク用プロセッサ100に入力されるものであってもよい。
演算処理部PL1は、図1に示すように、DMA制御部1と、量子化処理部2と、内積処理部3と、内部RAM R1と、を備える。
DMA制御部1は、DMA転送処理(DMA:Direct Memory Access)を行う。
量子化処理部2は、DCNN(Deep Convolution Neural Network)の畳み込み層の入力である特徴マップのデータに対して、量子化処理を行う。また、量子化処理部2は、DCNNの全結合層の入力データに対して、量子化処理を行う。
内積処理部3は、図2に示すように、AND処理部31と、セレクタ32と、カウント処理部33と、マイクロコード取得部34と、ALU35(ALU:Arithmetic Logic Unit)と、を備える。
AND処理部31は、データD2(例えば、内部RAM R1(領域BinMtx0/1)から取得される重みベクトルの整数部のデータ)とデータD3(例えば、内部RAM R1(領域BinInT)から取得されるデータであって、ビット分解され、さらに量子化処理が実行されたデータ)とを入力し、データD2とデータD3とに対してAND処理を実行し、実行結果を含むデータをデータD4としてセレクタ32に出力する。
セレクタ32は、データD2とデータD4と、モードを指示する信号dp_modeとを入力する。セレクタ32は、信号dp_modeに基づいて、データD2およびデータD4のいずれか一方を選択し、選択したデータをデータD5としてカウント処理部33に出力する。
カウント処理部33は、セレクタ32から出力されるデータD5を入力し、データD5に対してカウント処理を実行する。そして、カウント処理部33は、処理結果を含むデータをデータD6として、ALU35に出力する。
マイクロコード取得部34は、マイクロコードμCode(例えば、モードに応じたマイクロコード)を取得し、取得したマイクロコードμCodeをALU35に出力する。モードとして、例えば、(1)Offsetモード、(2)Normモード、(3)DPモードが設定される。
なお、「Offsetモード」は、畳み込み層に入力される特徴マップおよび全結合層に入力される特徴ベクトルに対して量子化処理を実行する場合において、特徴マップの最小値および特徴ベクトルの最小値が所定の値よりも小さい値となるように設定されるオフセット値を取得する処理を実行するためのモードである。
「Normモード」は、特徴マップおよび特徴ベクトルのノルムを算出する処理を実行するためのモードである。
「DPモード」は、多値基底行列と量子化処理後の特徴マップまたは特徴ベクトルとを用いた内積演算処理を実行するためのモードである。
ALU35は、データD1(例えば、内部RAM R1(領域CV)から取得される重みベクトルの実数部のデータ(スケール係数ベクトル))と、カウント処理部33から出力されるデータD6と、マイクロコード取得部34から出力されるマイクロコードμCodeとを入力する。ALU35は、マイクロコードμCodeに基づいて、算術演算を行い、当該算術演算の結果を含むデータをデータDoとして出力する。
内部RAM R1は、二値化ニューラルネットワーク用処理を実行するために必要なデータを記憶保持するためのRAM(Random Access Memory)である。
<1.2:二値化ニューラルネットワーク用プロセッサの動作>
以上のように構成された二値化ニューラルネットワーク用プロセッサ100の動作について、以下、説明する。
一般に、CNNでは、入力層と、畳み込み層(コンボリューション層)と、全結合層とを含む。例えば、二値化ニューラルネットワーク用プロセッサ100の入出力インターフェースIF1に、入力データDinとして、画像データが入力され、CNNによる画像認識処理が実行され、画像認識処理結果が出力データDoutとして外部に出力される。
CNNでは、畳み込み層の処理、あるいは、全結合層の処理において、入力データに対して重み演算処理が実行され、当該処理結果に対して活性化関数(例えば、ランプ関数(ReLU:Rectified Linear Unit)、シグモイド関数、Softmax関数等)により処理が実行されることで、畳み込み層あるいは全結合層の出力が得られる。
また、下記先行技術文献Aに開示されているように、Binarized-DCNN(DCNN:Deep Convolution Neural Network)(以下、「BNN」という)では、Quantization sub-layerと結合係数の二値分解を導入し、実数同士の内積計算を二値同士の内積計算に置換することで、既存のネットワークモデルに対して再学習なしに識別計算の高速化およびモデルサイズの圧縮を実現することができる。BNNの二値同士の演算は、XORやAND等の論理演算とビットカウントにより高速な演算が可能となる。
(先行技術文献A):
神谷龍司等 “Binarized-DCNNによる識別計算の高速化とモデル圧縮” 信学技報 116(366), 47-52, 2016-12-15 電子情報通信学会
上記先行技術文献Aの開示に基づいて、BNNの識別計算の基本式を、下記(数式1)のように導出することができる。
(数式1):
ijn=c ijij+min(x)Offset
ijn:n番目の特徴マップの出力(特徴マップの座標(i,j)の出力値)
:n番目の特徴マップのスケール係数ベクトルcの転置行列
:n番目の特徴マップの二値基底行列の転置行列
ijij:二値特徴マップ(量子化後の二値特徴マップ)
min(x):n番目の特徴マップの各要素の値のうちの最小値
Offset:Offsetモードで取得される結果
また、M ∈{-1,1}とBijij∈{-1,1}とは二値であるため、下記(数式2)を用いて論理演算とビットカウントで計算することができる。
(数式2):
ijij
=2×BITCNT(AND(M ,Bijij))-Norm(z)
z=Bijij
Norm(z):zのノルムを取得する関数
BITCNT(x):バイナリコードxにおいて、「1」であるビット数をカウントする関数
二値化ニューラルネットワーク用プロセッサ100では、畳み込み層の処理と、全結合層の処理において、同様の処理が実行される部分を共通化することで、ハードウェア規模の増大を抑制しつつ、高速処理を実現させる。
以下では、「畳み込み層の処理」と「全結合層の処理」とに分けて、二値化ニューラルネットワーク用プロセッサ100の動作について説明する。
図3は、Offsetモードの処理を説明するための図である。
図4は、Normモードの処理を説明するための図である。
図5は、DPモード(内積演算処理モード)の処理を説明するための図である。
二値化ニューラルネットワーク用プロセッサ100では、(1)Offsetモード、(2)Normモード、(3)DPモードの3つのモードを用いて、処理が実行される。
(1.2.1:畳み込み層の処理)
まず、畳み込み層の処理について、説明する。
二値化ニューラルネットワーク用プロセッサ100の量子化処理部2は、第l層(l:自然数)におけるm番目(m:自然数)の特徴マップz ijmにおける最大値-最小値間の量子化幅Δdを、
Δd={max(z ijm)-min(z ijm)}/(2-1)
max(x):xの最大値を取得する関数
min(x):xの最小値を取得する関数
Q:量子化ビット数
として取得する。
そして、量子化処理部2は、特徴マップの最小値が0となるように値をシフトさせる。つまり、量子化処理部2は、
ijm’={z ijm-min(z ijm)}/Q
に相当する処理を実行し、さらに、上記数式により取得された値を四捨五入して整数値に丸め量子化する。さらに、量子化処理部2は、丸め量子化により取得された値に対して、二値化処理をすることで、バイナリコードz ijm (b)∈{0,1}を取得する。
上記のようにして取得されたバイナリコードz ijm (b)∈{0,1}(量子化処理後の特徴マップBijij)は、内部RAMの領域BinInTに記憶保持される。
畳み込み層の処理において、以下のことが成り立つ。
(1)量子化処理後の特徴マップBijijは、特徴マップごとに変化する(入れ替わる)。
(2)上記(数式1)の右辺の第2項、すなわち、min(x)Offsetの値は、特徴マップに関わらず、一定である。
二値化ニューラルネットワーク用プロセッサ100では、上記を考慮して、畳み込み層の処理を以下の疑似コードに相当する処理により実行する。
≪畳み込み層の処理の擬似コード≫
For (出力数)
Operate_offset(); // オフセット復元処理
For (特徴マップ数)
Operate_Norm(); // ノルムの計算 (数式2)の右辺の第2項に相当する処理
For (出力数)
Operate_dp(); // 内積計算
二値化ニューラルネットワーク用プロセッサ100は、
(1)上記のオフセット復元処理をOffsetモードの処理で実行し、
(2)上記のノルム計算の処理をNormモードの処理で実行し、
(3)上記の内積計算の処理をDPモード(内積演算処理モード)の処理で実行する。
以下、これについて、説明する。
(1.2.1.1:Offsetモードの処理(畳み込み層の処理))
Offsetモードの処理について、説明する。
図3に示すように、データD2が、セレクタ32に入力される。
セレクタ32では、信号値が「0」に設定されたモード信号dp_modeが入力されており、セレクタ32は、当該モード信号dp_modeに基づいて、データD2を選択し、データD5としてカウント処理部33に出力する。
カウント処理部33は、Offsetモードにおいて、入力データD5を、そのまま、データD6として、ALU35に出力する。
マイクロコード取得部34は、Offsetモード用のマイクロコードμCode(Offset_mode)を取得し、ALU35に出力する。なお、Offsetモード用のマイクロコードμCode(Offset_mode)は、例えば、以下の処理をALU35に実行させるコードである。
(1)min(x)のロード(読み出し)
(2)データD1(=c )と、データD6(=M )と、min(x)との乗算処理
なお、min(x)は、量子化処理が実行されるときに取得した値を、例えば、内部RAM R1に記憶保持しておき、マイクロコード取得部34が、min(x)のデータを、内部RAM R1から読み出すようにしてもよい。
ALU35は、図3に示すように、データD1(=c )とデータD6(=M )とを入力する。なお、データD1(=c )は、内部RAMの領域CVに記憶保持されているスケール係数ベクトルのデータc である。
また、ALU35は、マイクロコード取得部34から出力されるOffsetモード用のマイクロコードμCode(Offset_mode)を入力し、当該Offsetモード用のマイクロコードμCode(Offset_mode)に従って演算を行う。
つまり、ALU35は、
(1)min(x)のロード(読み出し)
(2)データD1(=c )と、データD6(=M )と、min(x)との乗算処理
を実行することで、出力データDo(=min(x)Offset)を取得する。
以上のように処理することで、上記(数式1)の右辺の第2項、すなわち、min(x)Offsetの値(オフセット値)を取得することができる。
畳み込み層の処理では、上記処理(オフセット復元処理)が、畳み込み層の出力数分、実行される。
(1.2.1.2:Normモードの処理(畳み込み層の処理))
Normモードの処理について、説明する。
図4に示すように、データD3(=Bijij)が、AND処理部31に入力される。なお、データD3は、量子化処理後の特徴マップBijijであり、内部RAMの領域BinInTに記憶保持されている。
AND処理部31は、Normモードでは、入力データD3を、そのまま、データD4として、セレクタ32に出力する。
セレクタ32では、信号値が「1」に設定されたモード信号dp_modeが入力されており、セレクタ32は、当該モード信号dp_modeに基づいて、データD4を選択し、データD5としてカウント処理部33に出力する。
カウント処理部33は、入力データD5に対してカウント処理(BITCNT関数による処理)を実行し、処理結果をデータD6(=BITCNT(Bijij))としてALU35に出力する。
マイクロコード取得部34は、Normモード用のマイクロコードμCode(Norm_mode)を取得し、ALU35に出力する。なお、Normモード用のマイクロコードμCode(Norm_mode)は、カウント処理部33から入力されたデータをそのまま出力させる処理をALU35に実行させるコードである。
ALU35は、図4に示すように、カウント処理部33から出力されるデータD6(=BITCNT(Bijij))を入力する。
また、ALU35は、マイクロコード取得部34から出力されるNormモード用のマイクロコードμCode(Norm_mode)を入力し、当該Normモード用のマイクロコードμCode(Norm_mode)に従って演算を行う。
つまり、ALU35は、カウント処理部33から入力されたデータをそのまま出力させる処理を行い、データDo(=BITCNT(Bijij))を出力する。なお、BITCNT(Bijij)は、量子化処理後の特徴マップBijijのノルムに相当する。
以上のように処理することで、上記(数式2)の右辺の第2項、すなわち、Norm(z)(z=Bijij)の値(ノルム)を取得することができる。
畳み込み層の処理では、上記処理(ノルム算出処理)が、処理対象となっている畳み込み層の特徴マップ数分、実行される。
(1.2.1.3:DPモードの処理(畳み込み層の処理))
DPモードの処理について、説明する。
図5に示すように、データD2(=M )およびデータD3(=Bijij)が、AND処理部31に入力される。
データD2は、内部RAMの領域BinMtx0/1に記憶保持されている二値基底行列のデータM である。
データD3は、量子化処理後の特徴マップBijijであり、内部RAMの領域BinInTに記憶保持されている。
AND処理部31は、データD2およびデータD3に対してAND処理を実行し、処理結果を含むデータをデータD4(=AND(M ,Bijij))として、セレクタ32に出力する。なお、AND処理は、要素の値が「-1」である場合、当該「-1」を「0」に置換して論理積をとる処理である。
セレクタ32では、信号値が「1」に設定されたモード信号dp_modeが入力されており、セレクタ32は、当該モード信号dp_modeに基づいて、データD4を選択し、データD5としてカウント処理部33に出力する。
カウント処理部33は、入力データD5に対してカウント処理(BITCNT関数による処理)を実行し、処理結果をデータD6(=BITCNT(AND(M ,Bijij)))としてALU35に出力する。
マイクロコード取得部34は、DPモード用のマイクロコードμCode(DP_mode)を取得し、ALU35に出力する。なお、DPモード用のマイクロコードμCode(DP_mode)は、例えば、以下の処理をALU35に実行させるコードである。
(1)D6×2の処理(1ビット左にシフトさせる処理)
(2)上記(1)の結果からノルムを減算する処理
(3)上記(2)の結果に、データD1(=c )を乗算する処理
ALU35は、図5に示すように、データD1(=c )とデータD6(=BITCNT(AND(M ,Bijij)))とを入力する。なお、データD1(=c )は、内部RAMの領域CVに記憶保持されているスケール係数ベクトルのデータc である。
また、ALU35は、マイクロコード取得部34から出力されるDPモード用のマイクロコードμCode(DP_mode)を入力し、当該DPモード用のマイクロコードμCode(DP_mode)に従って演算を行う。
つまり、ALU35は、
(1)D6×2の処理(1ビット左にシフトさせる処理)
(2)上記(1)の結果からノルムを減算する処理(2×D6―Norm(z))
(3)上記(2)の結果に、データD1(=c )を乗算する処理
を実行することで、出力データDo(=c ijij)を取得する。
つまり、上記により、下記に相当する処理が実行される。
Do=c ijij
ijij=2×BITCNT(AND(M ,Bijij))-Norm(z)
以上のように処理することで、上記(数式1)の右辺の第1項、すなわち、c ijijの値を取得することができる。
畳み込み層の処理では、上記処理(内積演算処理)が、処理対象となっている畳み込み層の特徴マップごとに、当該畳み込み層の出力数分、実行される。上記の処理結果は、例えば、内部RAM R1の所定の領域に記憶保持される、あるいは、制御部CPU1へ出力され、制御部CPU1が当該処理結果を用いて所定の処理を実行する。
以上のように処理することで、二値化ニューラルネットワーク用プロセッサ100では、畳み込み層の処理を実行することができる。すなわち、二値化ニューラルネットワーク用プロセッサ100では、上記の3つのモードによる処理により、(数式1)のyijnを取得するために必要なデータを取得することができ、その結果、畳み込み層の処理を実行することができる。
(1.2.2:全結合層の処理)
次に、全結合層の処理について、説明する。
二値化ニューラルネットワーク用プロセッサ100の量子化処理部2は、l番目の全結合層への入力ベクトルz における最大値-最小値間の量子化幅Δdを、
Δd={max(z )-min(z )}/(2-1)
max(x):xの最大値を取得する関数
min(x):xの最小値を取得する関数
Q:量子化ビット数
として取得する。
そして、量子化処理部2は、全結合層への入力ベクトルの最小値が0となるように値をシフトさせる。つまり、量子化処理部2は、
’={z -min(z )}/Q
に相当する処理を実行し、さらに、上記数式により取得された値を四捨五入して整数値に丸め量子化する。さらに、量子化処理部2は、丸め量子化により取得された値に対して、二値化処理をすることで、バイナリコードz (b)∈{0,1}を取得する。
上記のようにして取得されたバイナリコードz (b)∈{0,1}(量子化処理後の特徴ベクトルBijij)は、内部RAMの領域BinInTに記憶保持される。
全結合層の処理において、以下のことが成り立つ。
(1)量子化処理後の特徴ベクトルは1つだけである。
二値化ニューラルネットワーク用プロセッサ100では、上記を考慮して、全結合層の処理を以下の疑似コードに相当する処理により実行する。
≪全結合層の処理の擬似コード≫
Operate_Norm(); // ノルムの計算 (数式2)の右辺の第2項に相当する処理
For (出力数)
Operate_offset(); // オフセット復元処理
Operate_dp(); // 内積計算
二値化ニューラルネットワーク用プロセッサ100は、
(1)上記のノルム計算の処理をNormモードの処理で実行し、
(2)上記のオフセット復元処理をOffsetモードの処理で実行し、
(3)上記の内積計算の処理をDPモード(内積演算処理モード)の処理で実行する。
以下、これについて、説明する。
(1.2.2.1:Normモードの処理(全結合層の処理))
Normモードの処理について、説明する。
図4に示すように、データD3(=Bijij)が、AND処理部31に入力される。なお、データD3は、量子化処理後の特徴ベクトルBijijであり、内部RAMの領域BinInTに記憶保持されている。
AND処理部31は、Normモードでは、入力データD3を、そのまま、データD4として、セレクタ32に出力する。
セレクタ32では、信号値が「1」に設定されたモード信号dp_modeが入力されており、セレクタ32は、当該モード信号dp_modeに基づいて、データD4を選択し、データD5としてカウント処理部33に出力する。
カウント処理部33は、入力データD5に対してカウント処理(BITCNT関数による処理)を実行し、処理結果をデータD6(=BITCNT(Bijij))としてALU35に出力する。
マイクロコード取得部34は、Normモード用のマイクロコードμCode(Norm_mode)を取得し、ALU35に出力する。なお、Normモード用のマイクロコードμCode(Norm_mode)は、カウント処理部33から入力されたデータをそのまま出力させる処理をALU35に実行させるコードである。
ALU35は、図4に示すように、カウント処理部33から出力されるデータD6(=BITCNT(Bijij))を入力する。
また、ALU35は、マイクロコード取得部34から出力されるNormモード用のマイクロコードμCode(Norm_mode)を入力し、当該Normモード用のマイクロコードμCode(Norm_mode)に従って演算を行う。
つまり、ALU35は、カウント処理部33から入力されたデータをそのまま出力させる処理を行い、データDo(=BITCNT(Bijij))を出力する。なお、BITCNT(Bijij)は、量子化処理後の特徴ベクトルBijijのノルムに相当する。
以上のように処理することで、上記(数式2)の右辺の第2項、すなわち、Norm(z)(z=Bijij)の値(ノルム)を取得することができる。
全結合層の処理では、上記処理(ノルム算出処理)が、処理対象となっている全結合層につき1回実行される。
(1.2.2.2:Offsetモードの処理(全結合層の処理))
Offsetモードの処理について、説明する。
図3に示すように、データD2が、セレクタ32に入力される。
セレクタ32では、信号値が「0」に設定されたモード信号dp_modeが入力されており、セレクタ32は、当該モード信号dp_modeに基づいて、データD2を選択し、データD5としてカウント処理部33に出力する。
カウント処理部33は、Offsetモードにおいて、入力データD5を、そのまま、データD6として、ALU35に出力する。
マイクロコード取得部34は、Offsetモード用のマイクロコードμCode(Offset_mode)を取得し、ALU35に出力する。なお、Offsetモード用のマイクロコードμCode(Offset_mode)は、例えば、以下の処理をALU35に実行させるコードである。
(1)min(x)のロード(読み出し)
(2)データD1(=c )と、データD6(=M )と、min(x)との乗算処理
なお、min(x)は、量子化処理が実行されるときに取得した値を、例えば、内部RAM R1に記憶保持しておき、マイクロコード取得部34が、min(x)のデータを、内部RAM R1から読み出すようにしてもよい。
ALU35は、図3に示すように、データD1(=c )とデータD6(=M )とを入力する。なお、データD1(=c )は、内部RAMの領域CVに記憶保持されているスケール係数ベクトルのデータc である。
また、ALU35は、マイクロコード取得部34から出力されるOffsetモード用のマイクロコードμCode(Offset_mode)を入力し、当該Offsetモード用のマイクロコードμCode(Offset_mode)に従って演算を行う。
つまり、ALU35は、
(1)min(x)のロード(読み出し)
(2)データD1(=c )と、データD6(=M )と、min(x)との乗算処理
を実行することで、出力データDo(=min(x)Offset)を取得する。
以上のように処理することで、上記(数式1)の右辺の第2項、すなわち、min(x)Offsetの値(オフセット値)を取得することができる。
全結合層の処理では、上記処理(オフセット復元処理)が、全結合層の出力数分、実行される。
(1.2.2.3:DPモードの処理(全結合層の処理))
DPモードの処理について、説明する。
図5に示すように、データD2(=M )およびデータD3(=Bijij)が、AND処理部31に入力される。
データD2は、内部RAMの領域BinMtx0/1に記憶保持されている二値基底行列のデータM である。
データD3は、量子化処理後の特徴マップBijijであり、内部RAMの領域BinInTに記憶保持されている。
AND処理部31は、データD2およびデータD3に対してAND処理を実行し、処理結果を含むデータをデータD4(=AND(M ,Bijij))として、セレクタ32に出力する。なお、AND処理は、要素の値が「-1」である場合、当該「-1」を「0」に置換して論理積をとる処理である。
セレクタ32では、信号値が「1」に設定されたモード信号dp_modeが入力されており、セレクタ32は、当該モード信号dp_modeに基づいて、データD4を選択し、データD5としてカウント処理部33に出力する。
カウント処理部33は、入力データD5に対してカウント処理(BITCNT関数による処理)を実行し、処理結果をデータD6(=BITCNT(AND(M ,Bijij)))としてALU35に出力する。
マイクロコード取得部34は、DPモード用のマイクロコードμCode(DP_mode)を取得し、ALU35に出力する。なお、DPモード用のマイクロコードμCode(DP_mode)は、例えば、以下の処理をALU35に実行させるコードである。
(1)D6×2の処理(1ビット左にシフトさせる処理)
(2)上記(1)の結果からノルムを減算する処理
(3)上記(2)の結果に、データD1(=c )を乗算する処理
ALU35は、図5に示すように、データD1(=c )とデータD6(=BITCNT(AND(M ,Bijij)))とを入力する。なお、データD1(=c )は、内部RAMの領域CVに記憶保持されているスケール係数ベクトルのデータc である。
また、ALU35は、マイクロコード取得部34から出力されるDPモード用のマイクロコードμCode(DP_mode)を入力し、当該DPモード用のマイクロコードμCode(DP_mode)に従って演算を行う。
つまり、ALU35は、
(1)D6×2の処理(1ビット左にシフトさせる処理)
(2)上記(1)の結果からノルムを減算する処理(2×D6―Norm(z))
(3)上記(2)の結果に、データD1(=c )を乗算する処理
を実行することで、出力データDo(=c ijij)を取得する。
つまり、上記により、下記に相当する処理が実行される。
Do=c ijij
ijij=2×BITCNT(AND(M ,Bijij))-Norm(z)
以上のように処理することで、上記(数式1)の右辺の第1項、すなわち、c ijijの値を取得することができる。
全結合層の処理では、上記処理(内積演算処理)が、全結合層の出力数分、実行される。上記の処理結果は、例えば、内部RAM R1の所定の領域に記憶保持される、あるいは、制御部CPU1へ出力され、制御部CPU1が当該処理結果を用いて所定の処理を実行する。
以上のように処理することで、二値化ニューラルネットワーク用プロセッサ100では、全結合層の処理を実行することができる。すなわち、二値化ニューラルネットワーク用プロセッサ100では、上記の3つのモードによる処理により、(数式1)のyijnを取得するために必要なデータを取得することができ、その結果、全結合層の処理を実行することができる。
以上のように、二値化ニューラルネットワーク用プロセッサ100では、畳み込み層の処理と、全結合層の処理において、同様の処理が実行される部分を共通化し、3つのモード((1)Offsetモード、(2)Normモード、(3)DPモード)の処理を、各モードに対応するマイクロコードにより処理することで実行する。そして、二値化ニューラルネットワーク用プロセッサ100では、畳み込み層の処理と全結合層の処理とにおいて、相違する部分の処理を、上記の3つのモードの処理を適切な順序で組み合わせることで実現する。したがって、二値化ニューラルネットワーク用プロセッサ100では、ハードウェア規模の増大を抑制しつつ、BNNの処理を高速に実行することができる。
[他の実施形態]
上記実施形態では、二値化ニューラルネットワーク用プロセッサ100が二値化データをjsよりする場合について、説明したが、本発明はこれに限定されることなく、本発明の手法を多値化データに適用し、多値化ニューラルネットワーク用プロセッサを実現するようにしてもよい。
また、上記実施形態では、二値化ニューラルネットワーク用プロセッサ100が、3つのモード((1)Offsetモード、(2)Normモード、(3)DPモード)により処理を実行する場合について説明したが、これに限定されることはない。例えば、二値化ニューラルネットワーク用プロセッサ100は、(1)Normモード、(2)DPモードにより処理を実行するようにし、このDPモードの処理に、上記実施形態で説明したOffsetモードの処理を含めるようにしてもよい。また、二値化ニューラルネットワーク用プロセッサ100は、予め、Offsetモードで得られる値を演算により取得し、取得した値を保持しておき、DPモード実行時にその値を使用して処理を実行するようにしてもよい。これにより、二値化ニューラルネットワーク用プロセッサ100において、Normモードの処理とDPモードの処理とをCPUの制御を介在せずに連続して実行することができる。
上記実施形態では、内積処理部がBNNの処理の一部を実行する場合について説明したが、これに限定されることはなく、例えば、演算処理部PL1の内積処理部3において、活性化関数の処理(例えば、ReLU関数の処理)を実行するようにしてもよい。また、活性化関数の処理(例えば、ReLU関数の処理)は、内積処理部3および制御部CPU1で実行されるものであってもよい。
上記実施形態では、内部RAMの個数については特に限定せず説明したが、内部RAMは、複数個のRAMにより構成されるものであってもよいし、また、二値化ニューラルネットワーク用プロセッサの外部に設けたRAM(例えば、DRAM)等を用いて、上記実施形態の処理を実行するようにしてもよい。
上記実施形態において、スカラー、ベクトル、行列で表現したデータについては、一例であり、上記に限定されるものではない。BNNの処理に応じて、スカラー、ベクトル、テンソルのデータとして、二値化ニューラルネットワーク用プロセッサ100が、上記と同様の処理を実行してもよい。
上記実施形態で説明した二値化ニューラルネットワーク用プロセッサ100の各ブロック(各機能部)は、LSIなどの半導体装置により個別に1チップ化されても良いし、一部又は全部を含むように1チップ化されても良い。また、上記実施形態で説明した二値化ニューラルネットワーク用プロセッサ100の各ブロック(各機能部)は、複数のLSIなどの半導体装置により実現されるものであってもよい。
なお、ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
また、上記各実施形態の各機能ブロックの処理の一部または全部は、プログラムにより実現されるものであってもよい。そして、上記各実施形態の各機能ブロックの処理の一部または全部は、コンピュータにおいて、中央演算装置(CPU)により行われる。また、それぞれの処理を行うためのプログラムは、ハードディスク、ROMなどの記憶装置に格納されており、ROMにおいて、あるいはRAMに読み出されて実行される。
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェア(OS(オペレーティングシステム)、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。)により実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。
例えば、上記実施形態(変形例を含む)の各機能部を、ソフトウェアにより実現する場合、図6に示したハードウェア構成(例えば、CPU、ROM、RAM、入力部、出力部等をバスBusにより接続したハードウェア構成)を用いて、各機能部をソフトウェア処理により実現するようにしてもよい。
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
前述した方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、大容量DVD、次世代DVD、半導体メモリを挙げることができる。
上記コンピュータプログラムは、上記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送されるものであってもよい。
また、文言「部」は、「サーキトリー(circuitry)」を含む概念であってもよい。サーキトリーは、ハードウェア、ソフトウェア、あるいは、ハードウェアおよびソフトウェアの混在により、その全部または一部が、実現されるものであってもよい。
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
100 二値化ニューラルネットワーク用プロセッサ
PL1 演算処理部
1 DMA制御部
2 量子化処理部
R1 内部RAM
3 内積処理部
34 マイクロコード取得部
35 ALU

Claims (6)

  1. 畳み込み層の処理と全結合層の処理とを含む多値化ニューラルネットワーク用処理を実行するためのニューラルネットワーク用プロセッサであって、
    実数ベクトルデータであるスケーリング係数ベクトルを設定するとともに、多値データを要素とする多値基底行列を設定する制御部と、
    前記畳み込み層に入力される特徴マップおよび前記全結合層に入力される特徴ベクトルに対して量子化処理を実行する量子化処理部であって、前記特徴マップの最小値および前記特徴ベクトルの最小値が所定の値よりも小さい値となるようにオフセット値を設定し、前記特徴マップおよび前記特徴ベクトルの最大値および最小値に基づいて取得される量子化幅を用いて前記量子化処理を実行する前記量子化処理部と、
    (1)前記特徴マップおよび前記特徴ベクトルのノルムを算出するノルムモードと、(2)前記多値基底行列と前記量子化処理後の前記特徴マップまたは前記特徴ベクトルとを用いた内積演算処理を実行する内積演算モードとを有し、前記ノルムモードの処理、および、前記内積演算モードを組み合わせた処理を実行することで、前記畳み込み層の処理と前記全結合層の処理とを実行する内積処理部と、
    を備えるニューラルネットワーク用プロセッサ。
  2. 前記内積処理部は、
    ノルムモード用マイクロコードと、内積演算モード用マイクロコードとを取得するマイクロコード取得部と、
    マイクロコードに基づいて、算術演算処理を実行する算術演算処理部と、
    を備え、
    (1)ノルムモードに設定されている場合、
    前記マイクロコード取得部は、前記ノルムモード用マイクロコードを取得し、
    前記算術演算処理部は、前記ノルムモード用マイクロコードに基づいて、前記算術演算処理を実行し、
    (2)内積演算モードに設定されている場合、
    前記マイクロコード取得部は、前記内積演算モード用マイクロコードを取得し、
    前記算術演算処理部は、前記内積演算モード用マイクロコードに基づいて、前記算術演算処理を実行する、
    請求項1に記載のニューラルネットワーク用プロセッサ。
  3. 前記内積処理部は、
    前記畳み込み層の処理を実行する場合、
    (1)前記ノルムモードの処理を、処理対象の畳み込み層の特徴マップ数分繰り返し実行し、
    (2)前記内積演算モードの処理を、各特徴マップについて前記ノルムモードの処理が実行されるごとに、処理対象の畳み込み層の出力数分繰り返し実行する、
    請求項1または2に記載のニューラルネットワーク用プロセッサ。
  4. 前記内積処理部は、
    前記全結合層の処理を実行する場合、
    (1)処理対象の全結合層につき、前記ノルムモードの処理を1回実行し、
    (2)前記内積演算モードの処理を、処理対象の全結合層の出力数分繰り返し実行する、
    請求項1から3のいずれかに記載のニューラルネットワーク用プロセッサ。
  5. 畳み込み層の処理と全結合層の処理とを含む多値化ニューラルネットワーク用処理を実行するためのニューラルネットワーク用処理方法であって、
    実数ベクトルデータであるスケーリング係数ベクトルを設定するとともに、多値データを要素とする多値基底行列を設定する制御ステップと、
    前記畳み込み層に入力される特徴マップおよび前記全結合層に入力される特徴ベクトルに対して量子化処理を実行する量子化処理ステップであって、前記特徴マップの最小値および前記特徴ベクトルの最小値が所定の値よりも小さい値となるようにオフセット値を設定し、前記特徴マップおよび前記特徴ベクトルの最大値および最小値に基づいて取得される量子化幅を用いて前記量子化処理を実行する前記量子化処理ステップと、
    (1)前記特徴マップおよび前記特徴ベクトルのノルムを算出するノルムモードと、(2)前記多値基底行列と前記量子化処理後の前記特徴マップまたは前記特徴ベクトルとを用いた内積演算処理を実行する内積演算モードとを有し、前記ノルムモードの処理、および、前記内積演算モードを組み合わせた処理を実行することで、前記畳み込み層の処理と前記全結合層の処理とを実行する内積処理ステップと、
    を備えるニューラルネットワーク用処理方法。
  6. 請求項5に記載のニューラルネットワーク用処理方法をコンピュータに実行させるためのプログラム。
JP2018143466A 2018-07-31 2018-07-31 ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム Active JP7033507B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018143466A JP7033507B2 (ja) 2018-07-31 2018-07-31 ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム
PCT/JP2019/005465 WO2020026475A1 (ja) 2018-07-31 2019-02-15 ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018143466A JP7033507B2 (ja) 2018-07-31 2018-07-31 ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム

Publications (2)

Publication Number Publication Date
JP2020021208A JP2020021208A (ja) 2020-02-06
JP7033507B2 true JP7033507B2 (ja) 2022-03-10

Family

ID=69230783

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018143466A Active JP7033507B2 (ja) 2018-07-31 2018-07-31 ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム

Country Status (2)

Country Link
JP (1) JP7033507B2 (ja)
WO (1) WO2020026475A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210150313A1 (en) * 2019-11-15 2021-05-20 Samsung Electronics Co., Ltd. Electronic device and method for inference binary and ternary neural networks
WO2023238638A1 (ja) * 2022-06-10 2023-12-14 ソニーセミコンダクタソリューションズ株式会社 情報処理装置および方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009176110A (ja) 2008-01-25 2009-08-06 Seiko Epson Corp 並列演算装置および並列演算方法
US20160328645A1 (en) 2015-05-08 2016-11-10 Qualcomm Incorporated Reduced computational complexity for fixed point neural network

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2690772A1 (fr) * 1992-04-29 1993-11-05 Philips Electronique Lab Processeur neuronal muni de moyens pour calculer une norme ou une distance.

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009176110A (ja) 2008-01-25 2009-08-06 Seiko Epson Corp 並列演算装置および並列演算方法
US20160328645A1 (en) 2015-05-08 2016-11-10 Qualcomm Incorporated Reduced computational complexity for fixed point neural network

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
神谷 龍司,Binarized-DCNNによる識別計算の高速化とモデル圧縮,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2016年12月08日,第116巻 第366号,p. 47-52

Also Published As

Publication number Publication date
WO2020026475A1 (ja) 2020-02-06
JP2020021208A (ja) 2020-02-06

Similar Documents

Publication Publication Date Title
US11551068B2 (en) Processing system and method for binary weight convolutional neural network
US10902318B2 (en) Methods and systems for improved transforms in convolutional neural networks
US10096134B2 (en) Data compaction and memory bandwidth reduction for sparse neural networks
US11887005B2 (en) Content adaptive attention model for neural network-based image and video encoders
US11915128B2 (en) Neural network circuit device, neural network processing method, and neural network execution program
EP3627397A1 (en) Processing method and apparatus
CN107256424B (zh) 三值权重卷积网络处理系统及方法
EP2875434A1 (en) Methods and systems for using state vector data in a state machine engine
JP7033507B2 (ja) ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム
EP4128066A1 (en) Feature reordering based on sparsity for improved memory compression transfers during machine learning jobs
WO2020243922A1 (en) Automatic machine learning policy network for parametric binary neural networks
CN114358319A (zh) 基于机器学习框架的分类方法及相关装置
US20200293865A1 (en) Using identity layer in a cellular neural network architecture
CN113222151B (zh) 一种量子态的变换方法及装置
CN115362450A (zh) 在机器学习作业期间基于改善的存储器压缩传输的相似性的特征重排序
US20190340511A1 (en) Sparsity control based on hardware for deep-neural networks
CN112132272B (zh) 神经网络的计算装置、处理器和电子设备
US20220129729A1 (en) Processor for neural network, processing method for neural network, and non-transitory computer readable storage medium
US11335045B2 (en) Combining feature maps in an artificial intelligence semiconductor solution
CN112132273B (zh) 计算装置、处理器、电子设备和计算方法
CN113902107A (zh) 用于神经网络模型全连接层的数据处理方法、可读介质和电子设备
CN115983392A (zh) 量子程序映射关系的确定方法、装置、介质及电子装置
US20200293856A1 (en) Implementing residual connection in a cellular neural network architecture
CN113077042A (zh) 卷积神经网络的数据重用与高效处理方法
CN109670598A (zh) 一种基于深度学习的数据处理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210215

TRDD Decision of grant or rejection written
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20220111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20220111

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220228

R150 Certificate of patent or registration of utility model

Ref document number: 7033507

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150