JP7052678B2 - 畳込み演算方法 - Google Patents
畳込み演算方法 Download PDFInfo
- Publication number
- JP7052678B2 JP7052678B2 JP2018208573A JP2018208573A JP7052678B2 JP 7052678 B2 JP7052678 B2 JP 7052678B2 JP 2018208573 A JP2018208573 A JP 2018208573A JP 2018208573 A JP2018208573 A JP 2018208573A JP 7052678 B2 JP7052678 B2 JP 7052678B2
- Authority
- JP
- Japan
- Prior art keywords
- multiplier
- filter
- convolution
- precision
- feature
- 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
aij’=ΣpΣqai+p j+q×wpq …(1)
まず、高精度乗算器10における低精度の畳込み演算のための乗算を以下のように設定する。ここで、ceilは小数点以下を切り上げて整数とする関数、minは引数から最小のもの選ぶ関数である。
並列数(即ち、高精度乗算器に配置する低精度の特徴量又は重み係数の数):H
被乗数の低精度ビット長:m
乗数の低精度ビット長:n
加算による桁上がりの格納に必要なビット長:k≧ceil(logH)
必要な高精度ビット長:L≧(k+n+m)×H-(k+min(n,m))
特徴マップ(チャンネル数×マップ高さ×マップ幅):Ch×Ha×Wa
フィルタ(チャンネル数×フィルタ高さ×フィルタ幅):Ch×Hw×Ww
ストライド幅:s
パディング幅:P
畳込み演算:aij’=ΣcΣpΣqac si+p sj+q×wcpq
(1)H個の特徴量のt番目(ac si+p sj+q+st[m-1:0])を被乗数部11の[m-1+t×(k+n+m):t×(k+n+m)]に配置する。ただし、sj+q+stがWa-1を超える場合はゼロを配置する。ここで、tは0以上かつH-1以下の整数とする。
(2)H個の重み係数のo番目(wc p q+so[n-1:0])を乗数部12の[n-1+(H-1-o)×(k+n+m):(H-1-o)×(k+n+m)]に配置する。ただし、q+soがWw-1を超える場合はゼロを配置する。ここで、oは0以上かつH-1以下の整数とする。
(3)部分乗算及び加算の桁上がりによる演算の重複を避けるため、被乗数部11と乗数部12の残りのビットにゼロを配置する。
(4)乗算を実行する。
(5)得られる(2H-1)個の演算結果のr番目[k+n+m-1+r×(k+n+m):r×(k+n+m)]をスライドi j+r-(H-1)の畳込み演算の一部として積算する。ここで、rは0以上かつ2H-1-1以下の整数である。
(6)x番目のq方向の並列演算をq=floor(x/s)×(H×s)+x%sとして(1)~(5)を繰り返す。ここで、xは0以上かつmin(ceil(max(W,H×s)/H),W)-1以下の整数、%は剰余を求める演算子、floorは小数点以下を切り捨てる関数、maxは引数から最大のものを選択する関数である。
(7)残りのp方向を0からHw-1まで、c方向を0からCh-1まで(1)~(6)を繰り返して畳み込む。
(8)y番目のj方向のスライドをj=y×Hとして(1)~(7)を繰り返す。ここで、yは0以上かつceil(((Wa+2P-Ww)/s+1-1)/H)+1-1以下の整数である。
(9)残りのi方向を0から(Ha+2P-Hw)/s+1-1まで(1)~(8)を繰り返してすべての特徴量を計算する。
本実施例では、並列数:H=2、特徴量の低精度ビット長:m=4ビット、重み係数の低精度ビット長:n=4ビットとする。また、畳込み演算を以下のように設定する。
特徴マップ:Ch×Ha×Wa=1×8×8
フィルタ:Ch×Hw×Ww=1×4×4
ストライド幅:s=1
パディング幅:P=0
(M1-2)重み係数w00[3:0]を乗数部12の[12:9](B12~B9)に配置し、重み係数w01[3:0]を乗数部12の[3:0](B3~B0)に配置する。
(M1-3)部分乗算及び加算の桁上がりによる演算の重複を避けるため、被乗数部11と乗数部12の残りのビットにゼロを配置する。
(M1-4)乗算を実行する。
(M1-5)演算結果13の[8:0](C8~C0)をスライド01の畳込み演算の一部とし、演算結果13の[17:9](C17~C9)をスライド02の畳込み演算の一部とし、演算結果13の[26:18](C26~C18)をスライド03の畳込み演算の一部として、それぞれ積算する。
本実施例では、並列数:H=3、特徴量の低精度ビット長:m=4ビット、重み係数の低精度ビット長:n=2ビットとする。また、畳込み演算を以下のように設定する。
特徴マップ:Ch×Ha×Wa=1×8×8
フィルタ:Ch×Hw×Ww=1×3×3
ストライド幅:s=1
パディング幅:P=0
(M2-2)重み係数w00[1:0]を乗数部12の[17:16](B17~B16)に配置し、重み係数w01[1:0]を乗数部12の[9:8](B9~B8)配置し、重み係数w02[1:0]を乗数部12の[1:0](B1~B0)に配置する。
(M2-3)部分乗算及び加算の桁上がりによる演算の重複を避けるため、被乗数部11と乗数部12の残りのビットにゼロを配置する。
(M2-4)乗算を実行する。
(M2-5)演算結果13の[7:0](C7~C0)をスライド01の畳込み演算の一部とし、演算結果13の[15:8](C15~C8)をスライド02の畳込み演算の一部とし、演算結果13の[23:16](C23~C16)をスライド03の畳込み演算の一部とし、演算結果13の[31:24](C31~C24)をスライド04の畳込み演算の一部とし、演算結果13の[39:32](C39~C32)をスライド05の畳込み演算の一部として、それぞれ積算する。
図8は、畳込み及びスライドの実施例C1を説明する図である。本実施例では、畳込み演算を以下のように設定する。
並列数:H=2
特徴マップ:Ch×Ha×Hw=1×8×8
フィルタ:Ch×Hw×Ww=1×4×4
ストライド幅:s=1
パディング幅:P=0
(C1-6)特徴量と重み係数の並列乗算をq方向に0、2として繰り返してスライド毎に積算する。
(C1-7)p方向に0から3まで(C1-6)を繰り返して畳み込む。
(C1-8)スライドをj方向に0、2、4として(C1-7)を繰り返す。
(C1-9)i方向に0から4まで(C1-8)を繰り返してすべての特徴量を計算する。
図9は、畳込み及びスライドの実施例C2を説明する図である。本実施例では、畳込み演算を以下のように設定する。
並列数:H=3
特徴マップ:Ch×Ha×Hw=1×8×8
フィルタ:Ch×Hw×Ww=1×3×3
ストライド幅:s=1
パディング幅:P=0
(C2-6)特徴量と重み係数の並列乗算をq方向に0として実行し、スライド毎に積算する。
(C2-7)p方向に0から2まで(C2-6)を繰り返して畳み込む。
(C2-8)スライドをj方向に0、3、6として(C2-7)を繰り返す。ここで、jが6のときにはスライドが特徴マップからはみ出し、対応する特徴量が得られなくなるが、特徴量の代わりにゼロを配置する。
(C2-9)i方向に0から5まで(C2-8)を繰り返してすべての特徴量を計算する。
図10は、畳込み及びスライドの実施例C3を説明する図である。本実施例では、畳込み演算を以下のように設定する。
並列数:H=2
特徴マップ:Ch×Ha×Hw=1×8×8
フィルタ:Ch×Hw×Ww=1×3×3
ストライド幅:s=1
パディング幅:P=0
(C3-6)特徴量と重み係数の並列乗算をq方向に0、2として繰り返してスライド毎に積算する。ここで、qが2のとき、フィルタのサイズが不足し、並列数分の重み係数が得られなくなるが、重み係数の代わりにゼロを配置する。
(C3-7)p方向に0から2まで(C3-6)を繰り返して畳み込む。
(C3-8)スライドをj方向に0、2、4、6として(C3-7)を繰り返す。ここで、jが6のときにはスライドが特徴マップからはみ出し、対応する特徴量が得られなくなるが、特徴量の代わりにゼロを配置する。
(C3-9)i方向に0から5まで(C3-8)を繰り返してすべての特徴量を計算する。
図11は、畳込み及びスライドの実施例C4を説明する図である。本実施例では、畳込み演算を以下のように設定する。
並列数:H=2
特徴マップ:Ch×Ha×Hw=1×8×8
フィルタ:Ch×Hw×Ww=1×4×4
ストライド幅:s=2
パディング幅:P=0
(C4-6)特徴量と重み係数の並列乗算をq方向に0、1として繰り返してスライド毎に積算する。
(C4-7)p方向に0から3まで(C4-6)を繰り返して畳み込む。
(C4-8)スライドをj方向に0、2として(C4-7)を繰り返す。
(C4-9)i方向に0から2まで(C4-8)を繰り返してすべての特徴量を計算する。
図12は、畳込み及びスライドの実施例C5を説明する図である。本実施例では、畳込み演算を以下のように設定する。
並列数:H=3
特徴マップ:Ch×Ha×Hw=1×9×9
フィルタ:Ch×Hw×Ww=1×3×3
ストライド幅:s=2
パディング幅:P=0
(C5-6)特徴量と重み係数の並列乗算をq方向に0、1として繰り返してスライド毎に積算する。ここで、フィルタのサイズが不足し、並列数分の重み係数が得られないが、重み係数の代わりにゼロを配置する。
(C5-7)p方向に0から2まで(C5-6)を繰り返して畳み込む。
(C5-8)スライドをj方向に0、3として(C5-7)を繰り返す。ここで、jが3のときには重み係数の代わりに配置したゼロに対応する特徴量が得られなくなるが、特徴量の代わりにゼロを配置する。
(C5-9)i方向に0から3まで(C5-8)を繰り返してすべての特徴量を計算する。
図13は、畳込み及びスライドの実施例C6を説明する図である。本実施例では、畳込み演算を以下のように設定する。
並列数:H=2
特徴マップ:Ch×Ha×Hw=1×10×10
フィルタ:Ch×Hw×Ww=1×4×4
ストライド幅:s=3
パディング幅:P=0
(C6-6)特徴量と重み係数の並列乗算をq方向に0、1、2として繰り返してスライド毎に積算する。ここで、qが1、2のときにはフィルタのサイズが不足し、並列数分の重み係数が得られなくなるが、重み係数の代わりにゼロを配置する。
(C6-7)p方向に0から3まで(C6-6)を繰り返して畳み込む。
(C6-8)スライドをj方向に0、2として(C6-7)を繰り返す。ここで、jが2のときには重み係数の代わりに配置したゼロに対応する特徴量が得られなくなるが、特徴量の代わりにゼロを配置する。
(C6-9)i方向に0から2まで(C6-8)を繰り返してすべての特徴量を計算する。
30 特徴マップ,31 フィルタ
Claims (6)
- 特徴量が1次元以上の格子状に配置された特徴マップに対して、重み係数が1次元以上の格子状に配置されたフィルタをスライドさせながら畳込み演算を行うための畳込み演算方法であって、
乗算器の被乗数部又は乗数部に複数の前記特徴量を配置し、前記乗算器の乗数部又は被乗数部に複数の前記重み係数を配置して、
前記フィルタのスライド位置が異なる2以上の畳込み演算の一部を並列に実行する畳込み演算方法。 - 前記乗算器に配置する各特徴量の前又は後にゼロ列を配置し、
前記乗算器に配置する各重み係数の前又は後にゼロ列を配置する、請求項1に記載の畳込み演算方法。 - 前記複数の特徴量として、前記特徴マップ上で連続する複数の特徴量を配置し、
前記複数の重み係数として、前記フィルタ上で連続する複数の重み係数を配置する、請求項1又は2に記載の畳込み演算方法。 - 前記フィルタのストライドの幅が2以上であるときは、前記複数の特徴量として、前記特徴マップ上で2以上離れて連続する複数の特徴量を配置し、前記複数の重み係数として、前記フィルタ上で2以上離れて連続する複数の重み係数を配置する、請求項1~3のいずれか一項に記載の畳込み演算方法。
- 前記乗算器により得られる2以上の乗算結果又は積和演算結果を、前記フィルタのスライド方向に連続した異なる2以上の畳込み演算で用いる、請求項1~4のいずれか一項に記載の畳込み演算方法。
- 前記フィルタのスライド位置が異なる2以上の畳込み演算を続けて実行する場合に、スライド位置として2以上離れた位置で次の畳込み演算を実行し、前記複数の特徴量として前記特徴マップ上で2以上離れた位置から連続する複数の特徴量の配置を開始し、前記複数の重み係数としてフィルタ上で2以上離れた位置から連続する複数の重み係数の配置を開始する、請求項1~5のいずれか一項に記載の畳込み演算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018208573A JP7052678B2 (ja) | 2018-11-06 | 2018-11-06 | 畳込み演算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018208573A JP7052678B2 (ja) | 2018-11-06 | 2018-11-06 | 畳込み演算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020077076A JP2020077076A (ja) | 2020-05-21 |
JP7052678B2 true JP7052678B2 (ja) | 2022-04-12 |
Family
ID=70724113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018208573A Active JP7052678B2 (ja) | 2018-11-06 | 2018-11-06 | 畳込み演算方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7052678B2 (ja) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018073102A (ja) | 2016-10-28 | 2018-05-10 | キヤノン株式会社 | 演算回路、その制御方法及びプログラム |
JP2018120549A (ja) | 2017-01-27 | 2018-08-02 | 富士通株式会社 | プロセッサ、情報処理装置及びプロセッサの動作方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0744533A (ja) * | 1993-07-27 | 1995-02-14 | Kawasaki Steel Corp | 演算装置 |
JP3579087B2 (ja) * | 1994-07-08 | 2004-10-20 | 株式会社日立製作所 | 演算器およびマイクロプロセッサ |
-
2018
- 2018-11-06 JP JP2018208573A patent/JP7052678B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018073102A (ja) | 2016-10-28 | 2018-05-10 | キヤノン株式会社 | 演算回路、その制御方法及びプログラム |
JP2018120549A (ja) | 2017-01-27 | 2018-08-02 | 富士通株式会社 | プロセッサ、情報処理装置及びプロセッサの動作方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2020077076A (ja) | 2020-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7476175B2 (ja) | 乗算累積回路 | |
JP6540725B2 (ja) | 演算処理装置、方法、およびプログラム | |
JP2022008571A (ja) | 畳み込みニューラルネットワークのためのスーパーピクセル法 | |
EP3734543B1 (en) | Image transformation for machine learning | |
JP4635087B2 (ja) | 拡張関数のための向上した浮動小数点演算部 | |
US20180365561A1 (en) | Alternative loop limits | |
KR102335909B1 (ko) | 특수 목적 연산 유닛을 사용한 하드웨어 이중 버퍼링 | |
CN109844738A (zh) | 运算处理电路和识别*** | |
JP2018026027A (ja) | 演算処理装置及び演算処理装置の制御方法 | |
EP3602280A1 (en) | Accessing prologue and epilogue data | |
US10402196B2 (en) | Multi-dimensional sliding window operation for a vector processor, including dividing a filter into a plurality of patterns for selecting data elements from a plurality of input registers and performing calculations in parallel using groups of the data elements and coefficients | |
JP7052678B2 (ja) | 畳込み演算方法 | |
CN102446160A (zh) | 面向双精度simd部件的矩阵乘实现方法 | |
CN114556373A (zh) | 用于大规模并行神经推理引擎的多模式低精度内积计算电路 | |
WO2017185334A1 (zh) | 一种用于执行多种超越函数运算的装置和方法 | |
JP7247418B2 (ja) | 乗算のための計算ユニット、方法及びコンピュータプログラム | |
CN114281755B (zh) | 一种面向向量处理器的半精度向量化卷积方法及*** | |
CN113592075B (zh) | 卷积运算装置、方法和芯片 | |
JP6687803B2 (ja) | 区分線形近似のためのシステムおよび方法 | |
KR20080016803A (ko) | 큰 수 곱셈 방법 및 디바이스 | |
US20220180171A1 (en) | Four-bit training for machine learning | |
CN111738904B (zh) | 一种图像中目标物体的几何矩的计算方法和计算装置 | |
CN113496276A (zh) | 信息处理设备和信息处理方法 | |
CN112116715A (zh) | 有效内插的方法和装置 | |
CN117492838A (zh) | 访问序言和结尾数据 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210413 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20220224 |
|
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: 20220301 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220314 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 7052678 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |