JP6999885B2 - 二値化ニューラルネットワーク用プロセッサ、データ処理方法、および、プログラム - Google Patents
二値化ニューラルネットワーク用プロセッサ、データ処理方法、および、プログラム Download PDFInfo
- Publication number
- JP6999885B2 JP6999885B2 JP2017092381A JP2017092381A JP6999885B2 JP 6999885 B2 JP6999885 B2 JP 6999885B2 JP 2017092381 A JP2017092381 A JP 2017092381A JP 2017092381 A JP2017092381 A JP 2017092381A JP 6999885 B2 JP6999885 B2 JP 6999885B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- bit
- unit
- processing
- binary
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
Description
(1)スケーリング係数ベクトルを設定するデータを設定する命令である第1命令と、
(2)二値基底行列を設定する命令である第2命令と、
(3)入力データの同一桁を抽出した2値データと二値基底行列との行列演算を実行する命令である第3命令と、を入力することができる(受け付けることができる)。
第1実施形態について、図面を参照しながら、以下、説明する。
図1は、第1実施形態に係る二値化ニューラルネットワーク用プロセッサ1000の概略構成図である。
以上のように構成された二値化ニューラルネットワーク用プロセッサ1000の動作について、以下、説明する。
まず、スケーリング係数ベクトルv_c(=[c1,c2,・・・,c6])、および、二値基底行列Mの設定処理について、説明する。
[w11,w12,w13,w14,w15,w16,w17,w18]
=[44,-19.8,-25.6,14.6,26.4,-25.6,44,-25.6]
である場合、図8の下段に示す値に、スケーリング係数ベクトルv_cおよび二値基底行列Mを設定すれば、大規模システムでの学習により取得された重み行列Wの第1行目のデータを再現(近似)することができる。
次に、重み演算処理について、説明する。
bit_width=6ビット
bit_len=8ビット
と設定した場合について、説明する。つまり、図9に示す6ビット×8ビット=48ビットのデータ(x1~x8に相当)が処理対象の単位データとなる。
[x1,x2,x3,x4,x5,x6,x7,x8]
=[15,14,13,15,6,3,4,1]
であるものとして、以下、説明する。
第1ビットカウンタBc1の入力:D1[1:4]
第2ビットカウンタBc2の入力:D1[5:8]
第3ビットカウンタBc3の入力:D2[1:4]
第4ビットカウンタBc4の入力:D2[5:8]
第5ビットカウンタBc5の入力:D3[1:4]
第6ビットカウンタBc6の入力:D3[5:8]
第7ビットカウンタBc7の入力:D4[1:4]
第8ビットカウンタBc8の入力:D4[5:8]
第9ビットカウンタBc9の入力:D5[1:4]
第10ビットカウンタBc10の入力:D5[5:8]
第11ビットカウンタBc11の入力:D6[1:4]
第12ビットカウンタBc12の入力:D6[5:8]
なお、Dk[a1:a2]は、図9、図10に示した6ビット×8ビット=48ビットのデータ(x1~x8に相当)において、右から第k列目のa1行目からa2行目までのデータ(ビット列)を表すものとする。
Cnt_b1=BcD3-BcD4
に相当する減算処理を実行し、処理結果データCnt_b1を取得する。上記の場合、
Cnt_b1=BcD3-BcD4=4-3=1
であるので、減算部Bc105は、Cnt_b1(=1)をフレキシブル多項加算部2112に出力する。
第1シフト部SF1のシフト量=0ビット(Do2=Cnt_b2)
第2シフト部SF1のシフト量=左へ1ビット(Do3=Cnt_b3×2)
第3シフト部SF1のシフト量=左へ1ビット(Do4=Cnt_b4×2)
第4シフト部SF1のシフト量=左へ2ビット(Do5=Cnt_b5×2^2)
第5シフト部SF1のシフト量=左へ2ビット(Do6=Cnt_b6×2^2)
第6シフト部SF1のシフト量=左へ3ビット(Do7=Cnt_b7×2^3)
第7シフト部SF1のシフト量=左へ3ビット(Do8=Cnt_b8×2^3)
第8シフト部SF1のシフト量=左へ4ビット(Do9=Cnt_b9×2^4)
第9シフト部SF1のシフト量=左へ4ビット(Do10=Cnt_b10×2^4)
第10シフト部SF1のシフト量=左へ5ビット(Do11=Cnt_b11×2^5)
第11シフト部SF1のシフト量=左へ5ビット(Do12=Cnt_b12×2^5)
そして、上記括弧内で示した数式に相当する処理が実行され、データDo2~Do12が、それぞれ、第1シフト部SF1~第11シフト部SF11から多項加算部FLA12に出力される。
D210=Sum1=M1・v_x
として、データD210を、乗算部212に出力する。
D210=Sum1(1)+Sum1(2)+Sum1(3)(=M1・v_x)
に相当する処理を実行する。これにより、M1・v_xと等しいデータD210が取得される。
Dout=D21+D22+D23+D24+D25+D26
に相当する処理を実行することで、データDoutを出力する。
第1シフト部SF1のシフト量=0ビット(Do2=Cnt_b2)
第2シフト部SF1のシフト量=0ビット(Do3=Cnt_b3)
第3シフト部SF1のシフト量=左へ1ビット(Do4=Cnt_b4×2)
第4シフト部SF1のシフト量=左へ1ビット(Do5=Cnt_b5×2)
第5シフト部SF1のシフト量=左へ1ビット(Do6=Cnt_b6×2)
第6シフト部SF1のシフト量=左へ2ビット(Do7=Cnt_b7×2^2)
第7シフト部SF1のシフト量=左へ2ビット(Do8=Cnt_b8×2^2)
第8シフト部SF1のシフト量=左へ2ビット(Do9=Cnt_b9×2^2)
第9シフト部SF1のシフト量=左へ3ビット(Do10=Cnt_b10×2^3)
第10シフト部SF1のシフト量=左へ3ビット(Do11=Cnt_b11×2^3)
第11シフト部SF1のシフト量=左へ3ビット(Do12=Cnt_b12×2^3)
そして、上記括弧内で示した数式に相当する処理が実行され、データDo2~Do12が、それぞれ、第1シフト部SF1~第11シフト部SF11から多項加算部FLA12に出力され、上記と同様の処理が実行される。
上記実施形態で説明に用いたデータのビット長やサイズは一例であり、上記の説明に用いたデータのビット長やサイズに限定されることはない。また、上記実施形態では、スケーリング係数ベクトル係数が6個の場合(スケーリング係数ベクトルが6次元ベクトルである場合)について説明したが、これに限定されることはなく、スケーリング係数ベクトル係数の個数は、任意のn個(n:自然数)であってもよい(スケーリング係数ベクトルはn次元ベクトルであってもよい)。スケーリング係数ベクトルがn次元ベクトルである場合、スケーリング係数ベクトル設定部ST1が、n個のスケーリング係数ベクトル係数を設定する機能を有し、重み演算部2が、第1重み演算部21~第n重み演算部2n(n個の重み演算部)を備えるように、重み演算処理部を構成するようにすればよい。
1 入力変換部
2 重み演算部
21 第1重み演算部
22 第2重み演算部
26 第6重み演算部
211 内積演算部
212 乗算部
2111 ビットカウンタ部
2112 フレキシブル多項加算部
2113 累算部
3 加算部
ST1 スケーリング係数ベクトル設定部
ST2 二値基底行列設定部
ST3 処理データサイズ設定部
Bc101 AND処理部
Bc102 第1正値並列一括ビットカウンタ
Bc103 ビットシフト部
Bc104 第2正値並列一括ビットカウンタ
Bc105 減算部
Claims (10)
- 実数ベクトルデータであるスケーリング係数ベクトルを設定するスケーリング係数ベクトル設定部と、
「1」または「-1」をとる2値データを要素とする二値基底行列を設定する二値基底行列設定部と、
重み演算処理の対象となるデータを決定するための入力値ビット幅と同一桁処理ビット長を設定する処理データサイズ設定部と、
前記入力値ビット幅および前記同一桁処理ビット長に基づいて決定される重み演算処理の対象データを用いて、前記二値基底行列に基づく処理を実行することで、二値基底行列処理結果データを取得し、取得した前記二値基底行列処理結果データと、前記スケーリング係数ベクトルとを用いた乗算処理を実行することで、乗算結果データを取得する重み演算処理部と、
を備える、
二値化ニューラルネットワーク用プロセッサ。 - 前記重み演算処理部は、
前記入力値ビット幅および前記同一桁処理ビット長に基づいて、重み演算処理の対象データを決定し、入力データの同一桁を抽出することで縦ビットデータDi[1:m](i:自然数、入力データのビットの桁を表す番号、m:自然数)を取得する入力変換部と、
(1)前記縦ビットデータDi[1:m]と、前記二値基底行列の第j行のデータであるデータMjとを用いて内積演算処理を実行することで、内積演算結果データを取得し、(2)取得した前記内積演算結果データを、前記縦ビットデータDi[1:m]が抽出された前記入力データの桁に応じてビットシフト量により、ビットシフト演算処理を行うことで、ビットシフト演算結果データを取得し、(3)前記入力データの桁ごとに取得した前記ビットシフト演算結果データを加算することで、前記入力データと前記データMjとの内積データを取得する内積演算部と、
前記内積データと前記スケーリング係数とを乗算することで、第j行乗算結果データを取得する乗算部と、
を備える請求項1に記載の二値化ニューラルネットワーク用プロセッサ。 - 前記内積演算部は、
k個(k:自然数、1≦k≦n)のビットカウンタである第1ビットカウンタ~第kビットカウンタと、
フレキシブル多項加算部と、
を備え、
前記第kビットカウンタは、
前記縦ビットデータDi[1:m]から一部のビットデータを抽出した第1縦ビットデータと、前記データMjのデータのうち前記第1縦ビットデータのビット数と同一のビット数のデータを抽出した第1マトリックスデータMj’との各ビットが両方とも「1」であるときのみ「1」を出力するAND処理を実行するAND処理部と、
前記AND処理の出力データに含まれる「1」の数をカウントし、第1カウント値として取得する第1正値並列一括ビットカウンタと、
前記第1カウント値を2倍にしたデータを第1データとして取得するビットシフト部と、
前記第1縦ビットデータに含まれる「1」の数をカウントし、第2カウント値として取得する第2正値並列一括ビットカウンタと、
前記第1データから前記第2カウント値を減算することで、カウンタ出力データCnt_bkを取得する減算部と、
を備え、
前記フレキシブル多項加算部は、
前記第1ビットカウンタ~第kビットカウンタにより取得されたカウンタ出力データCnt_b1~Cnt_bnを入力し、カウンタ出力データCnt_b1~Cnt_bnのぞれぞれに対して、前記入力値ビット幅および前記同一桁処理ビット長に基づいて設定されるシフト量によりシフト演算処理を実行し、データDo1~Do12を取得し、取得した前記データDo1~Do12を加算することで、多項加算結果データを取得する、
請求項2に記載の二値化ニューラルネットワーク用プロセッサ。 - 前記内積演算部は、
前記多項加算結果データを複数保持することができ、複数保持した多項加算結果データを加算することで累算結果データを取得する累算部をさらに備える、
請求項3に記載の二値化ニューラルネットワーク用プロセッサ。 - 前記二値化ニューラルネットワーク用プロセッサの各機能部を制御する制御部をさらに備え、
前記制御部は、
(1)前記スケーリング係数ベクトルを設定するデータを設定する命令である第1命令と、
(2)前記二値基底行列を設定する命令である第2命令と、
(3)前記入力データの同一桁を抽出した2値データと二値基底行列との行列演算を実行する命令である第3命令と、
を入力することができる、
請求項2から4のいずれかに記載の二値化ニューラルネットワーク用プロセッサ。 - 前記制御部が前記第1命令を入力したとき、
前記制御部は、前記スケーリング係数ベクトル設定部において、前記第1命令に基づく前記スケーリング係数ベクトルが設定されるように、前記スケーリング係数ベクトル設定部を制御する、
請求項5に記載の二値化ニューラルネットワーク用プロセッサ。 - 前記制御部が前記第2命令を入力したとき、
前記制御部は、前記二値基底行列設定部において、前記第2命令に基づく前記二値基底行列が設定されるように、前記二値基底行列設定部を制御する、
請求項5に記載の二値化ニューラルネットワーク用プロセッサ。 - 前記制御部が前記第3命令を入力したとき、
前記制御部は、前記入力データの同一桁を抽出した2値データと二値基底行列との行列演算が実行されるように、前記重み演算処理部を制御する、
請求項5に記載の二値化ニューラルネットワーク用プロセッサ。 - 二値化ニューラルネットワーク用プロセッサで実行されるデータ処理方法であって、
実数ベクトルデータであるスケーリング係数ベクトルを設定するスケーリング係数ベクトル設定ステップと、
「1」または「-1」をとる2値データを要素とする二値基底行列を設定する二値基底行列設定ステップと、
重み演算処理の対象となるデータを決定するための入力値ビット幅と同一桁処理ビット長を設定する処理データサイズ設定ステップと、
前記入力値ビット幅および前記同一桁処理ビット長に基づいて決定される重み演算処理の対象データを用いて、前記二値基底行列に基づく処理を実行することで、二値基底行列処理結果データを取得し、取得した前記二値基底行列処理結果データと、前記スケーリング係数ベクトルとを用いた乗算処理を実行することで、乗算結果データを取得する重み演算処理ステップと、
を備える、
データ処理方法。 - 請求項9に記載のデータ処理方法をコンピュータに実行させるためのプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017092381A JP6999885B2 (ja) | 2017-05-08 | 2017-05-08 | 二値化ニューラルネットワーク用プロセッサ、データ処理方法、および、プログラム |
PCT/JP2018/009879 WO2018207458A1 (ja) | 2017-05-08 | 2018-03-14 | 二値化ニューラルネットワーク用プロセッサ、データ処理方法、および、プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017092381A JP6999885B2 (ja) | 2017-05-08 | 2017-05-08 | 二値化ニューラルネットワーク用プロセッサ、データ処理方法、および、プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018190197A JP2018190197A (ja) | 2018-11-29 |
JP6999885B2 true JP6999885B2 (ja) | 2022-01-19 |
Family
ID=64104561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017092381A Active JP6999885B2 (ja) | 2017-05-08 | 2017-05-08 | 二値化ニューラルネットワーク用プロセッサ、データ処理方法、および、プログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP6999885B2 (ja) |
WO (1) | WO2018207458A1 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109635937B (zh) * | 2018-12-30 | 2023-07-11 | 南京大学 | 一种面向低位宽卷积神经网络的低功耗系统 |
CN110069444B (zh) * | 2019-06-03 | 2024-07-26 | 南京宁麒智能计算芯片研究院有限公司 | 一种计算单元、阵列、模块、硬件系统及实现方法 |
US12039430B2 (en) | 2019-11-15 | 2024-07-16 | Samsung Electronics Co., Ltd. | Electronic device and method for inference binary and ternary neural networks |
KR102140996B1 (ko) | 2020-02-21 | 2020-08-04 | 광주과학기술원 | 바이너리 뉴럴 네트워크를 위한 뉴럴 아키텍처 서치 방법 및 장치 |
CN113177638B (zh) * | 2020-12-11 | 2024-05-28 | 联合微电子中心有限责任公司 | 用于生成神经网络的二值化权重的处理器和方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014112358A (ja) | 2012-11-05 | 2014-06-19 | Denso It Laboratory Inc | 関連性判定装置、関連性判定プログラム、及び関連性判定方法 |
-
2017
- 2017-05-08 JP JP2017092381A patent/JP6999885B2/ja active Active
-
2018
- 2018-03-14 WO PCT/JP2018/009879 patent/WO2018207458A1/ja active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014112358A (ja) | 2012-11-05 | 2014-06-19 | Denso It Laboratory Inc | 関連性判定装置、関連性判定プログラム、及び関連性判定方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2018190197A (ja) | 2018-11-29 |
WO2018207458A1 (ja) | 2018-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6999885B2 (ja) | 二値化ニューラルネットワーク用プロセッサ、データ処理方法、および、プログラム | |
JP7349835B2 (ja) | ニューラルネットワークにおいてパラメータを処理する方法及び装置 | |
JP7240657B2 (ja) | ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム | |
US11551068B2 (en) | Processing system and method for binary weight convolutional neural network | |
JP6965690B2 (ja) | ニューラルネットワークの処理速度を向上させるための装置及び方法、並びにその応用 | |
KR20180072562A (ko) | 인공 뉴럴 네트워크 클래스-기반 프루닝 | |
KR20170007151A (ko) | 인공 신경 네트워크를 실행하는 방법 및 장치 | |
CN108090565A (zh) | 一种卷积神经网络并行化训练加速方法 | |
US20210287074A1 (en) | Neural network weight encoding | |
CN108647184B (zh) | 一种动态比特位卷积乘法实现方法 | |
CN113344179B (zh) | 基于fpga的二值化卷积神经网络算法的ip核 | |
CN116205290B (zh) | 一种基于中间特征知识融合的知识蒸馏方法和装置 | |
US11960565B2 (en) | Add-mulitply-add convolution computation for a convolutional neural network | |
CN114358319B (zh) | 基于机器学习框架的分类方法及相关装置 | |
CN110781686A (zh) | 一种语句相似度计算方法、装置及计算机设备 | |
CN114764620B (zh) | 一种量子卷积操作器 | |
CN116401552A (zh) | 一种分类模型的训练方法及相关装置 | |
WO2020026475A1 (ja) | ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム | |
Guan et al. | Recursive binary neural network training model for efficient usage of on-chip memory | |
CN114358318A (zh) | 基于机器学习框架的分类方法及相关装置 | |
CN116431807B (zh) | 一种文本分类方法、装置、存储介质及电子装置 | |
US20220253709A1 (en) | Compressing a Set of Coefficients for Subsequent Use in a Neural Network | |
Ascia et al. | Improving inference latency and energy of network-on-chip based convolutional neural networks through weights compression | |
Kaddar et al. | Divnet: efficient convolutional neural network via multilevel hierarchical architecture design | |
CN112132273B (zh) | 计算装置、处理器、电子设备和计算方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200417 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200708 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210615 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210720 |
|
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: 20211116 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20211206 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6999885 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |