JP7060079B2 - 推論装置、畳み込み演算実行方法及びプログラム - Google Patents

推論装置、畳み込み演算実行方法及びプログラム Download PDF

Info

Publication number
JP7060079B2
JP7060079B2 JP2020503606A JP2020503606A JP7060079B2 JP 7060079 B2 JP7060079 B2 JP 7060079B2 JP 2020503606 A JP2020503606 A JP 2020503606A JP 2020503606 A JP2020503606 A JP 2020503606A JP 7060079 B2 JP7060079 B2 JP 7060079B2
Authority
JP
Japan
Prior art keywords
input data
value
weight
multiplication
weights
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
JP2020503606A
Other languages
English (en)
Other versions
JPWO2019168088A1 (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Publication of JPWO2019168088A1 publication Critical patent/JPWO2019168088A1/ja
Application granted granted Critical
Publication of JP7060079B2 publication Critical patent/JP7060079B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • 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
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/28Quantising the image, e.g. histogram thresholding for discrimination between background and foreground patterns

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Medical Informatics (AREA)
  • Multimedia (AREA)
  • Biophysics (AREA)
  • Algebra (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Description

[関連出願についての記載]
本発明は、日本国特許出願:特願2018-038028号(2018年 3月 2日出願)の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、推論装置、畳み込み演算実行方法及びプログラムに関する。
近年、多層ニューラルネットワークによる画像認識等に関する技術開発が活発に行われている。このような技術は、深層学習(ディープラーニング)とも称される。とりわけ、画像認識等の技術分野において、畳み込みニューラルネットワークが多く用いられる。畳み込みニューラルネットワークには、後述するように、畳み込み層、プーリング層、全結合層が含まれる。畳み込み層では、カーネルを画像全体に畳み込む処理が行われる。
画像全体にカーネルを畳み込む処理(画像にフィルタを適用する処理)により、画像に畳み込まれた特徴の集合が得られる。当該特徴の集合は、特徴マップとも称される。特徴マップは、畳み込んだ値に活性化関数を適用することで得られる。例えば、画像認識の分野では、ReLU(Rectified Linear Unit)が活性化関数として用いられることが多い。
上述のように、畳み込み層では、画像(入力画像)にカーネル(重み、フィルタ)を畳み込む処理が行われる。その際、画像の各画素と重みを乗算する処理が数多く行われる。
非特許文献1は、畳み込み演算の前に入力データを2の冪乗に分解し、当該分解された入力データを畳み込み演算に利用する技術を開示している。非特許文献1では、重みの要素が取り得る値ごとに2の冪乗に分解された入力データの要素値の総和を計算し、重みごとに当該入力データの要素値と重みの要素値の乗算処理を行い、乗算結果を加算することで畳み込み演算を実行している。
非特許文献2乃至4は、CNN(Convolutional Neural Network)推論における「量子化」に関する技術を開示している。非特許文献2は、畳み込み演算の結果を2値(Binary)に変換する技術を開示している。非特許文献3は、畳み込み演算の結果を3値(Ternary)に変換する技術を開示している。非特許文献4は、畳み込み演算の結果を4ビットに変換する技術を開示している。
非特許文献2及び3に開示された技術は、畳み込み演算の結果が取り得る範囲を制限し、再学習してパラメータを決定する。対して、非特許文献4に開示された技術は、畳み込み演算の結果(整数、浮動小数点等)を2の冪乗に丸め込む。本願開示において、非特許文献4に開示された畳み込み演算の結果を2の冪乗に丸め込む量子化を「対数量子化」と表記する。
Denis A. Gudovskiy, Luca Rigazio、"ShiftCNN: Generalized Low-Precision Architecture for Inference of Convolutional Neural Networks"、2018年1月24日、[online]、[平成30年1月24日検索]、インターネット〈URL:https://arxiv.org/pdf/1706.02393〉 Matthieu Courbariaux, etc、"Binarized Neural Networks: Training Neural Networks with Weights and Activations Constrained to +1 or -1"、2018年1月24日、[online]、[平成30年1月24日検索]、インターネット〈URL:https://arxiv.org/pdf/1602.02830〉 Fengfu Li and Bo Zhang, etc、"Ternary weight networks"、2018年1月24日、[online]、[平成30年1月24日検索]、インターネット〈URL:https://arxiv.org/pdf/1605.04711〉 Daisuke Miyashita, etc、"Convolutional Neural Networks using Logarithmic Data Representation"、2018年1月24日、[online]、[平成30年1月24日検索]、インターネット〈URL:https://arxiv.org/pdf/1603.01025〉
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者らによってなされたものである。
上述のように、深層学習、とりわけ、畳み込み層の演算では膨大な数の乗算処理が必要となる。膨大な乗算処理は、大規模なハードウェアを要求したり、強力な演算処理能力を有するプロセッサを要求したりする。そのため、ハードウェアの規模を抑えつつ、或いは、演算処理能力が低いプロセッサを用いたとしても、畳み込み層の演算を現実的な時間内で終了させるために非特許文献1乃至4に開示されたような技術が必要となる。
ここで、非特許文献1に開示された技術では、重みの要素が取り得る値ごとに2の冪乗に分解された入力データの総和を計算している。非特許文献1では、当該分解された入力データの総和と重みの要素が取り得る値を乗算することで、畳み込み演算に必要な乗算回数を削減している。例えば、重みの要素が2ビットで表現できる場合には、重みの要素値が取り得る値は、0、1、2、3となる。非特許文献1では、この取り得る値ごとに2の冪乗に分解された入力データの総和を計算し、当該総和と重みの要素値の乗算が行われている。
発明者らが鋭意検討した結果、非特許文献1に開示された技術を実現するためには、重みの要素値は低ビットであることが前提であることが判明した。即ち、非特許文献1では、重みの要素が取り得る値ごとに入力データの総和を計算するため、重みの要素が取り得る値が増えると(重みを構成する各要素の値が高ビットとなると)、2の冪乗に分解された入力データの総和を保持するレジスタが膨大となる。
以上のことから、非特許文献1に開示された技術では重みの要素値は低ビットであることを前提していると言える。しかし、深層学習のアプリケーションによっては、重みの要素値が低ビットであるとは限らず、そのような場合であっても、畳み込み演算の乗算回数が削減されることが望まれる。
本発明は、少ない乗算回数により畳み込み演算を実行することに寄与する推論装置、畳み込み演算実行方法及びプログラムを提供することを主たる目的とする。
本発明乃至開示の第1の視点によれば、重みを記憶する重み記憶部と、入力データを記憶する入力データ記憶部と、前記重み及び入力データを用いて畳み込みニューラルネットワークにおける畳み込み演算を実行するPE(Processing Element)と、を備え、前記PEは、前記入力データの要素が取り得る値ごとに、前記入力データの要素と乗算される重みの要素を累積加算し、前記入力データの要素が取り得る値それぞれと、前記入力データの要素が取り得る値に対応する重みの累積加算値それぞれと、を乗算し、前記乗算により得られる複数の乗算結果を加算する、推論装置が提供される。
本発明乃至開示の第2の視点によれば、重みを記憶する重み記憶部と、入力データを記憶する入力データ記憶部と、を備え、前記重み及び入力データを用いて畳み込みニューラルネットワークにおける畳み込み演算を実行する推論装置において、前記入力データの要素が取り得る値ごとに、前記入力データの要素と乗算される重みの要素を累積加算するステップと、前記入力データの要素が取り得る値それぞれと、前記入力データの要素が取り得る値に対応する重みの累積加算値それぞれと、を乗算するステップと、前記乗算により得られる複数の乗算結果を加算するステップと、を含む、畳み込み演算実行方法が提供される。
本発明乃至開示の第3の視点によれば、重みを記憶する重み記憶部と、入力データを記憶する入力データ記憶部と、を備え、前記重み及び入力データを用いて畳み込みニューラルネットワークにおける畳み込み演算を実行する推論装置に搭載されたコンピュータに、前記入力データの要素が取り得る値ごとに、前記入力データの要素と乗算される重みの要素を累積加算する処理と、前記入力データの要素が取り得る値それぞれと、前記入力データの要素が取り得る値に対応する重みの累積加算値それぞれと、を乗算する処理と、前記乗算により得られる複数の乗算結果を加算する処理と、を実行させるプログラムが提供される。
なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
本発明乃至開示の各視点によれば、少ない乗算回数により畳み込み演算を実行することに寄与する推論装置、畳み込み演算実行方法及びプログラムを提供が、提供される。
一実施形態の概要を説明するための図である。 画像認識における中間層(隠れ層)の構造を説明するための図である。 畳み込み層における演算を説明するための図である。 第1の実施形態に係る推論装置の内部構成の一例を示す図である。 第1の実施形態に係る推論装置に含まれる中間層実行部の内部構成の一例を示す図である。 第1の実施形態に係る畳み込み層実行部の内部構成の一例を示す図である。 第1の実施形態に係るPE(Processing Element)の動作の一例を示すフローチャートである。 第1の実施形態に係る乗加算部の内部構成の一例を示す図である。 第1の実施形態に係る乗加算部の動作の一例を示すフローチャートである。 第2の実施形態に係る乗加算部の内部構成の一例を示す図である。 第3の実施形態に係る乗加算部の内部構成の一例を示す図である。 推論装置のハードウェア構成の一例を示す図である。 畳み込み層実行部の別の内部構成の一例を示す図である。 畳み込み層実行部の別の内部構成の一例を示す図である。
初めに、一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。また、各図におけるブロック間の接続線は、双方向及び単方向の双方を含む。一方向矢印については、主たる信号(データ)の流れを模式的に示すものであり、双方向性を排除するものではない。さらに、本願開示に示す回路図、ブロック図、内部構成図、接続図などにおいて、明示は省略するが、入力ポート及び出力ポートが各接続線の入力端及び出力端のそれぞれに存在する。入出力インターフェイスも同様である。
一実施形態に係る推論装置100は、重みを記憶する重み記憶部101と、入力データを記憶する入力データ記憶部102と、重み及び入力データを用いて畳み込みニューラルネットワークにおける畳み込み演算を実行するPE(Processing Element)103と、を備える(図1参照)。PE103は、入力データの要素が取り得る値ごとに、入力データの要素と乗算される重みの要素を累積加算する。PE103は、入力データの要素が取り得る値それぞれと、入力データの要素が取り得る値に対応する重みの累積加算値それぞれと、を乗算する。PE103は、当該乗算により得られる複数の乗算結果を加算する。
詳細については後述するが、畳み込み演算は、入力データの要素が取り得る値ごとに重みの要素に関する総和(累積加算値)の計算と、当該重みの要素の総和と入力データの各要素が取り得る値の乗算と、当該乗算結果の加算と、に分解することができる。PE103は、当該事実を利用し、重みの要素に関する総和を畳み込み演算の前に計算し、1回の畳み込み演算に必要な重みの総和が得られた後に当該総和と入力データの取り得る値を乗算する。その結果、重みと入力データを都度乗算し、加算する畳み込み演算の方法と比較し、乗算回数を削減することができる。
以下に具体的な実施の形態について、図面を参照してさらに詳しく説明する。なお、各実施形態において同一構成要素には同一の符号を付し、その説明を省略する。
[第1の実施形態]
第1の実施形態について、図面を用いてより詳細に説明する。
図2は、画像認識における中間層(隠れ層)の構造を説明するための図である。図2を参照すると、入力層と中間層が接続され、中間層と出力層が接続される。なお、第1の実施形態では、入力層に入力されるデータは画像データを想定している。但し、本願開示にて取り扱う入力データは画像データに限定されないことは勿論である。
入力層は、取得した入力データから中間層に出力するためのデータを作成する。例えば、画像データがRGB(Red Green Blue)の3チャネルから構成されている場合には、入力層は、各色の画像データを生成し、中間層に出力する。中間層は、畳み込みニューラルネットワーク(CNN(Convolutional Neural Network))により入力データの特徴部分が抽出されたデータを1つのノードに結合し、特徴変数を出力する。出力層は、中間層から取得した特徴変数に基づき、入力データを分類する。
中間層には、複数の「層(レイヤ)」が含まれ、初段の層が入力層と接続され、最終段の層は全結合層と接続されている。
中間層をなす各層には、畳み込み層、活性化関数、プーリング層が含まれ得る。なお、図2に示す構成は例示であり、中間層の構成を限定する趣旨ではない。場合によっては、中間層に活性化関数、プーリング層が含まれていなくともよい。
畳み込み層は、取得した入力データから特徴量を抽出する。当該抽出された特徴量には活性化関数が適用され、当該活性化関数が適用された後の特徴量がプーリング層に入力される。プーリング層では、取得した特徴量を結合する。その際、プーリング層では、物体の位置が変動しても同一の物体と判断できるようにするための処理(不変性を得るための処理)が行われる。例えば、対象物の位置ずれを許容するための処理がプーリング層にて行われる。なお、図2では、「活性化関数」を適用するための層が、畳み込み層やプーリング層と独立した形で記載されているが、実際には、「活性化関数」が畳み込み層及びプーリング層のいずれかの層に含まれる構成であってもよい。
図2に示すように、中間層をなす各層は、縦続接続されており、前段の層の出力が後段の層の入力に相当する。
図3は、畳み込み層における演算を説明するための図である。図3を参照すると、畳み込み層は、入力データと重み(フィルタ)を乗算することで、特徴量を出力する。
なお、本願開示にて使用する各種パラメータは図3に図示するように定める。入力データにおける一の方向(図3では縦方向)のサイズを「H」と表記する。また、入力データにおける他の方向(図3では幅方向)のサイズを「W」と表記する。例えば、H=25、W=25であれば、H×W=625個の画素が入力データのサイズとなる。さらに、層の入力チャネル数を「C」と表記する。
重みにおける一の方向(図3では縦方向)のサイズを「R」と表記する。また、重みにおける他の方向(図3では幅方向)のサイズを「S」と表記する。例えば、R=3、S=3とすれば、R×S=9が重みのサイズである。
図3に示す「K」は層の出力チャネル数である。層の出力チャネル数Kと重みの種類数は一致する。例えば、図3に示す重みの種類数が「4」であれば、層の出力チャネル数Kも「4」となる。
1種類の重みには、入力チャネル数Cと同じ数の重みが含まれる。例えば、入力チャネル数Cが「3」であれば、1種類の重みには3つの重みが含まれる。1種類の重みに含まれるC個の重みは、C個の入力データそれぞれと対応付けられている。例えば、図3において、上段のC個の重みにおいて、一番手前の重みは一番手前の入力データと対応付けられている。
なお、本願開示において、入力チャネル数Cごとに区分された重みの集合を「重み群」と表記する。各重み群には、C個の重みが含まれる。また、重みの種類数は出力チャネル数Kに一致するので、畳み込み層における重みの数は、K×C個となる。さらに、本願開示において、一の入力データや一の重みを基準として他の入力データや重みに向かう方向を「チャネル方向」と表記する。同様に、一の重み群を基準として他の重み群に向かう方向を「カーネル方向」と表記する。例えば、図3に示す重み501から重み502に向かう方向がチャネル方向であり、重み群511から重み群512に向かう方向がカーネル方向である。
畳み込み層では、入力データから重みのサイズに相当するデータを抽出し、当該抽出した入力データに含まれる要素と重みの対応する要素を乗算し、且つ、乗算結果をチャネル方向に加算する処理が実行される。例えば、図3に示すように、重みのサイズが3×3=9であれば、入力データから同じサイズのデータ(例えば、図3の一番手前に図示した入力データのうち四角の領域で囲まれた入力データ601)が抽出される。その後、抽出された入力データの各要素と対応する重みの各要素が乗算される。例えば、図3の例では、抽出された入力データ601における左上の要素値「1」と対応する重み501の左上の要素値「1」が乗算される。畳み込み層では、このような処理が繰り返される(上述の例では9回繰り返される)。その後、乗算結果は加算される。
抽出された入力データと重みの乗算は、対応する入力データと重みの間で実行される。例えば、図3において、一番手前に図示した入力データ601に対応する重みは一番手前に図示された重み501とする。同様に、中間に図示した入力データに対応する重みが中間に図示した重み、最奥に図示した入力データに対応する重みが最奥に図示した重み502である。この場合、対応する入力データと重みの間で上記乗加算処理が繰り返される。
さらに、上記乗加算処理の結果は、チャネル方向にて加算される。例えば、上述の例では、3チャネル(一番手前、中間、最奥)における乗加算結果が加算される。
上記乗加算処理及びその後の加算処理は、重み群ごとに行われる。図3の例では、上段に図示した重み群511と入力データを用いた演算が行われ、下段に図示した重み群512に関しても同様の処理(同じ入力データを用いた乗加算処理及びその後の加算処理)が実行される。
畳み込み層では、上記処理(乗加算処理及びチャネル方向への加算処理)を、抽出する入力データを変更しながら繰り返す。例えば、図3の一番手前の入力データに図示するように、抽出する領域をスライドさせながら入力データを切り出していく。当該切り出されたデータには、上記と同様の処理が適用される。
上述のような入力データの抽出と、当該抽出された入力データに重みを乗算し、チャネル方向に加算する処理を繰り返すことで畳み込み層の出力データが得られる。なお、上述のように、入力データと重みの乗加算処理は重み群ごとに実行されるため、得られる出力データの数と重みの種類(重み群の数)は一致する。例えば、16個の重み群が用意されていれば、16個の出力データが得られる(K=16)。
なお、各出力データのサイズ(縦方向のサイズ、幅方向のサイズ)は、入力データからデータを抽出する際の領域(ウィンドウ)をスライドする際の仕様により定まる。図3の例では、各出力データには、12(4×3)個の要素が含まれるように、入力データからデータが抽出される。
第1の実施形態に係る推論装置10は、図3を用いて説明した畳み込み演算を推論の過程にて実行する。具体的には、図4に示すように、推論装置10は、その内部に、入力層を実現する入力層実行部11、中間層を実現する中間層実行部12、出力層を実現する出力層実行部13と、を含む。さらに、中間層実行部12には、畳み込み層を実現する畳み込み層実行部31、活性化関数を実行する活性化関数実行部32及びプーリング層を実現するプーリング層実行部33が各層に含まれる(図5参照)。
本願開示においては、図4及び図5に示す各種実行部のうち、畳み込み層実行部31について詳細に説明する。他の実行部に関しては、公知のアルゴリズム等により実現可能であるため、その説明を省略する。
各層の畳み込み層実行部31は、プロセッシングエレメント(PE;Processing Element)を用いて図3を用いて説明した畳み込み演算(乗加算処理)を実行する。
図6は、畳み込み層実行部31の内部構成の一例を示す図である。図6を参照すると、畳み込み層実行部31には、畳み込み層制御部40と、PE41と、各種記憶部と、が含まれている。各種記憶部には、重み記憶部51と、入力データ記憶部52と、演算結果記憶部53と、が含まれる。
PE41は、上述の畳み込み演算を実行する。具体的には、PE41は、入力データと対応する重みの乗算処理を含む演算を実行する。その際、PE41は、入力データ記憶部52、重み記憶部51にそれぞれアクセスし、必要なデータ(入力データ、重み)を取得する。PE41は、重み及び入力データを用いた畳み込みニューラルネットワークにおける畳み込み演算の結果を演算結果記憶部53に格納する。
畳み込み層制御部40は、畳み込み層全体を制御する手段である。畳み込み層制御部40は、畳み込みニューラルネットワークにおける畳み込み演算をPE41を制御することで実現する。また、畳み込み層制御部40は、他層の制御モジュールと制御情報の交換を行い、推論装置10全体としての機能を実現する。より具体的には、畳み込み層制御部40は、前段の層から畳み込み演算終了の通知を受信すると、自身が管理するPE41を制御して畳み込み演算を実行する(PE41を制御して畳み込み演算を実行させる)。さらに、畳み込み層制御部40は、後段の層に対して自層における畳み込み演算の終了を通知する。
各層における畳み込み演算に利用する重みは、重み記憶部51に格納されている。重み記憶部51に格納する重みは、推論装置10の動作前に予め設定されていてもよいし、上位装置(例えば、学習装置)から都度重みを受け取り、重み記憶部51に格納してもよい。
入力データ記憶部52は、入力データ(前段の層の出力データ;アクティベーション)を記憶する。
PE41には、PE制御部60と、重み処理部61と、入力データ処理部62と、乗加算部63と、が含まれる。PE41は、入力データ記憶部52に格納された入力データと、重み記憶部51に格納された重みを用いて畳み込み演算を実行する。
PE制御部60は、重み処理部61、入力データ処理部62、乗加算部63を制御して重みと入力データを用いた畳み込み演算を実行する手段である。
重み処理部61は、重みの入出力に関する処理を実行する。
入力データ処理部62は、入力データの入出力に関する処理を実行する。
乗加算部63は、重み処理部61及び入力データ処理部62のそれぞれから供給されるデータの乗加算処理を実行し、畳み込み演算を行うモジュールである。
初めに、図7を参照しつつ、PE41の動作概略を説明する。
PE制御部60は、1回の畳み込み演算の実行に必要な重み群を指定し、当該重み群の読み出しを重み処理部61に指示する(ステップS01)。
次に、PE制御部60は、上記重み群との間で畳み込み演算を実行する入力データの範囲を指定し、当該入力データの読み出しを入力データ処理部62に指示する(ステップS02)。
例えば、図3を参照すると、重み群511と対応する入力データ611の畳み込み演算(1回の畳み込み演算)の実行が指示される。当該畳み込み演算により、図3の一番手前の出力データをなす各要素のうち左上の「1」が得られる。この場合、PE制御部60は、重み処理部61に対して、重み群511の読み出しを指示する。同様に、PE制御部60は、入力データ処理部62に対して、対応する入力データ611の読み出しを指示する。
重み処理部61、入力データ処理部62におけるデータの取得が完了すると、PE制御部60は、重み処理部61、入力データ処理部62及び乗加算部63に対して「畳み込み演算実行開始」に係る指示を行う(ステップS03)。
当該指示を受信した重み処理部61、入力データ処理部62はそれぞれ畳み込み演算に必要なデータ(重みの要素、入力データの要素)を乗加算部63に出力する。
乗加算部63は、重み処理部61、入力データ処理部62から供給されるデータを用いて畳み込み演算に係る累積加算処理を実行する(ステップS04)。なお、本ステップにおける乗加算部63の動作の詳細は後述する。
重み処理部61、入力データ処理部62は、読み出したデータを順次乗加算部63に供給することを繰り返す。また、乗加算部63は、供給されたデータを用いた累積加算処理を繰り返す。重み処理部61、入力データ処理部62は、読み出したデータの全てを乗加算部63に供給すると、その旨をPE制御部60に通知する。
当該通知を受けたPE制御部60は、乗加算部63に対して、畳み込み演算の結果を演算結果記憶部53に出力するように指示する(畳み込み演算結果出力指示;ステップS05)。
当該指示に応じて、乗加算部63は、畳み込み演算結果を出力するための処理を実行する(ステップS06)。なお、本ステップにおける乗加算部63の動作の詳細は後述する。
その後、乗加算部63は、畳み込み演算の結果(1回分の畳み込み演算の結果)を演算結果記憶部53に格納する。また、乗加算部63は、畳み込み演算の結果を演算結果記憶部53に格納した旨をPE制御部60に通知する。
当該通知を受けたPE制御部60は、重み処理部61にて読み出した重み群を用いた畳み込み演算が終了したか否かを判定する(ステップS07)。例えば、上述の例では、重み群511が読み出されていれば、当該重み群511を用いた全ての畳み込み演算が終了しているか否かが判定される。
読み出された重み群を用いた全ての畳み込み演算が終了していなければ(重み群と畳み込み演算する入力データが残っていれば;ステップS07、No分岐)、PE制御部60は、ステップS02に戻り処理を継続する。その際、PE制御部60は、適切な範囲を指定しつつ入力データ処理部62に入力データの読み出しを指示する(スライディングウィンドウを移動して入力データの読み出しを指示する)。
読み出された重み群を用いた全ての畳み込み演算が終了していれば(ステップS07、Yes分岐)、PE制御部60は、全ての重み群を用いた畳み込み演算が終了しているか否かを判定する(ステップS08)。
畳み込み演算が必要な重み群が残っていれば(ステップS08、No分岐)、PE制御部60は、ステップS01に戻り処理を継続する。その際、PE制御部60は、次の重み群を指定し、当該重み群を用いた畳み込み演算を実行する。
畳み込み演算が必要な重み群が残っていなければ(ステップS08、Yes分岐)、PE制御部60は、処理を終了する。
PE制御部60は、畳み込み演算が終了すると、その旨を畳み込み層制御部40に通知する。当該通知を受信した畳み込み層制御部40は、自層での演算は終了したものと判断し、その旨を後段の層(活性化関数)に通知する。
続いて、乗加算部63の詳細について説明する。
上述のように、乗加算部63は畳み込み演算を実行する処理モジュールである。ここで、畳み込み演算の計算式は下記の式(1)のように表現できる。
[式1]
Figure 0007060079000001
なお、式(1)において、wは重みの要素、aは入力データ(アクティベーション)の要素を示す。nは層の順番を示し、サフィックスi、jは入力データ、重みの幅方向、高さ方向の位置を示す。x、yは出力データの位置を示す。C、S、Rは上述のように、チャネル数、重みのサイズを示す。
上記式(1)は、入力データ(アクティベーション)の要素が取り得る値と当該取り得る値に対応する重みの要素の総和を用いて、下記の式(2)に変形できる。
[式2]
Figure 0007060079000002
なお、式(2)において、重みの要素wの右肩は対応する入力データの要素値を示す。例えば、wa==0は、入力データの要素値が「0」に対応する重みの要素wを示す。
式(2)を参照すると、畳み込み演算は、入力データの要素が取り得る値ごとに重みの要素に関する総和(累積加算値)を計算し、当該重みの要素の総和と入力データの各要素が取り得る値の乗算を実行し、その後加算すれば良いことを示している。
なお、以降の説明において、入力データを構成する要素の値を「入力データの値」、重みを構成する要素の値を「重みの値」と表記する。また、入力データの要素値(入力データを構成する要素の値)が取り得る値を「入力データの取り得る値」、重みの要素に関する総和を「重みの総和」とそれぞれ表記する。
第1の実施形態に係る乗加算部63は、上記式(2)で表せる計算により畳み込み演算を実行する。即ち、乗加算部63は、1回の畳み込み演算において、入力データの要素が取り得る値ごとに、入力データの要素に乗算される重みの要素を累積加算する。その後、乗加算部63は、入力データの要素が取り得る値それぞれと、入力データの要素が取り得る値に対応する重みの累積加算値それぞれと、を乗算する。最後に、乗加算部63は、当該乗算により得られる複数の乗算結果を加算することで、畳み込み演算結果を得る。
第1の実施形態では、入力データをなす各要素は4ビットで表現されるものとする。例えば、0から15までの値が入力データの取り得る値となる。なお、入力データの要素が4ビットで表現できれば、入力データの取り得る値は正の値に限らず、負の値が用いられても良い。例えば、入力データの取り得る値が-7から7までの整数であってもよい。あるいは、入力データの要素値は整数ではなく、浮動小数点で表現される値であってもよい。なお、入力データの要素は4ビットに限定されないのは勿論である。入力データの要素値は4ビットよりも小さい値でも良いし、4ビットよりも大きい値でもよい。
図8は、乗加算部63の内部構成の一例を示す図である。図8を参照すると、乗加算部63は、乗加算制御部70と、セレクタ71と、複数の累算器(アキュムレータ)72-0~72-15と、複数の乗算器73-0~73-15と、加算器74と、を含んで構成される。
なお、以降の説明において、累算器72-0~72-15を区別する特段の理由がない場合には、単に「累算器72」と表記する。他の構成ついても同様に、ハイフンで区切られた前の数字にて当該構成を代表して表記する。
セレクタ71は、入力データの要素と重みの要素を入力する。また、セレクタ71は、取得した入力データの要素値に応じて、複数の累算器72のうち入力した重みの要素の出力先となる累算器72を決定する。
複数の累算器72のそれぞれは、入力データの要素が取り得る値ごとの重みの累積加算(重みの総和)を計算し、記憶する。
複数の乗算器73のそれぞれは、複数の累算器72それぞれに対応して設けられる。
累算器72及び乗算器73は、入力データ(アクティベーション)の取り得る値ごとに用意される。上述のように、入力データの各要素が4ビットで表現される場合には、例えば、入力データの取り得る値は0~15である。そのため、各データに対応する16個の累算器72と乗算器73が乗加算部63に構成される。
図8において、累算器72や乗算器73の近辺に付した記号#付きの数字は、入力データの取り得る値を示す。例えば、累算器72-1は、入力データの値が「1」である場合の対応する重みの総和を格納することを示す。また、乗算器73-1は、累算器72-1の保持する値と対応する入力データの値「1」の乗算を実行することを示す。このように、複数の乗算器73には、重みの累積加算値と乗算する値が予め割り当てられている。
各累算器72には、加算器75とレジスタ76が含まれる。
加算器74は、複数の乗算器73による乗算結果を入力し、これらの乗算結果を加算する。
乗加算制御部70は、PE制御部60からの指示に応じて、乗加算部63内の各モジュールを制御する。より具体的には、乗加算制御部70は、PE制御部60から「畳み込み演算開始」に係る指示を取得すると、累算器72を初期化(レジスタ76に0を設定)する。
また、乗加算制御部70は、PE制御部60から「畳み込み演算結果出力」に係る指示を取得すると、乗算器73を用いて累算器72が保持する値と入力データの取り得る値(予め定められた値)の乗算を計算する。その後、乗加算制御部70は、各乗算器73の演算結果を加算器74を用いて加算し、畳み込み演算の結果とする。加算器74による演算結果は、演算結果記憶部53に格納される。
続いて、図9を参照しつつ、乗加算部63の動作を説明する。
乗加算制御部70は、PE制御部60から「畳み込み演算開始」に係る指示を取得する(ステップS101)。
当該指示を受信すると、乗加算制御部70は、累算器72を初期化する(ステップS102)。
セレクタ71は、重み処理部61、入力データ処理部62から重みの要素、入力データの要素を取得する(データの取得;ステップS103)。
セレクタ71は、取得した入力データの値に応じて、取得した重みの要素の出力先となる累算器72を選択し、当該重みの要素を出力する(ステップS104)。例えば、取得した入力データの値が「1」であれば、セレクタ71は、取得した重みの要素を累算器72-1に向けて出力する。
累算器72は、セレクタ71から重みの要素を取得すると、当該重みの要素値とレジスタ76に格納された値を加算する(重みの累積加算;ステップS105)。
乗加算制御部70は、PE制御部60から「畳み込み演算結果出力」に係る指示を取得したか否かを確認する(ステップS106)。
当該指示を取得していなければ(ステップS106、No分岐)、乗加算制御部70は、ステップS103に戻り重みの累積加算に係る処理を繰り返す。つまり、乗加算部63は、PE制御部60から「畳み込み演算結果出力」に係る指示を取得するまでの間、入力データの取り得る値ごとの重みの総和を計算する。
「畳み込み演算結果出力」に係る指示を取得していれば(ステップS106、Yes分岐)、乗加算制御部70は、ステップS107以降の処理を実行する。
「畳み込み演算結果出力」に係る指示を取得すると、乗加算制御部70は、乗算器73に、各累算器72が保持する値と対応する乗算器73に割り当てられた値(入力データの取り得る値)の乗算処理を実行させる(重みの総和を用いた乗算;ステップS107)。例えば、乗算器73-1は、累算器72-1が保持する値と乗算器73-1に割り当てられた値「1」の乗算を計算する。
その後、乗加算制御部70は、加算器74に、各乗算器73による乗算結果の加算を計算させる(ステップS108)。当該加算器74による加算結果が、1回の畳み込み演算の結果となる。
加算器74は、加算結果を演算結果記憶部53に格納する(ステップS109)。
続いて、図3に示す重み群511と対応する入力データ611の畳み込み演算を例にとり、上記乗加算部63の動作をより具体的に説明する。
初めに、乗加算部63は、入力データ601の左上の要素値「1」と対応する重みの値「1」を取得する。この場合、入力データの値が「1」であるので、セレクタ71は、累算器72-1を選択し、重みの値「1」を出力する。累算器72-1は、重みの値「1」とレジスタ76-1が保持する値(初期化直後なので0)を加算し、レジスタ76-1に格納する。
次に、乗加算部63は、入力データ601の上段真ん中の要素値「2」と対応する重みの値「1」を取得する。この場合、入力データの値が「2」であるので、セレクタ71は、累算器72-2を選択し、重みの値「1」を出力する。累算器72-2は、重みの値「1」とレジスタ76-2が保持する値(初期化直後なので0)を加算し、レジスタ76-2に格納する。
次に、乗加算部63は、入力データ601の上段右端の要素値「1」と対応する重みの値「2」を取得する。この場合、入力データが「1」であるので、セレクタ71は、累算器72-1を選択し、重みの値「2」を出力する。累算器72-1は、重みの値「2」とレジスタ76-1が保持する値「1」を加算し、レジスタ76-1に格納する。
乗加算部63は、このような入力データの取り得る値ごとに重みに関する加算処理を繰り返す。当該加算処理により、各累算器72には、各入力データの取り得る値に対応する重みの値の総和が格納される。その後、乗加算部63は、各累算器72が保持する値と対応する値(入力データの取り得る値)を乗算し、乗算結果を加算することで、畳み込み演算の結果とする。
以上のように、第1の実施形態に係る乗加算部63では、入力データの取り得る値ごとに重みの値に関する総和を計算する。その後、乗加算部63では、入力データの取り得る値と対応する重みの値の総和を乗算し、各乗算結果を加算して1回の畳み込み演算の結果とする。このように構成することで、畳み込み演算に必要な乗算回数を削減できる。
例えば、図3に示す重み群511と入力データ611の畳み込み演算を考える。初めに、入力データの要素と対応する重みの要素を乗算し、その後、乗算結果を加算する計算方法による乗算回数を考える。この場合、重み群511に含まれる各重みのサイズは9(3×3)であるので、入力データ601と重み501の畳み込み演算に必要な乗算回数は9となる。また、入力データと重みの乗算はチャネルごとに行われるので、チャネル数Cが「3」であれば、9×3=27回の乗算が必要となる。
対して、第1の実施形態に係る乗加算部63は、最初に重みの総和が計算され、当該総和と入力データの取り得る値の乗算を計算するので、入力データの各要素値が4ビットで表現される場合には、16回の乗算を実行すれば良いことになる。さらに、この乗算回数は、当該乗加算部63が計算対象とするチャネル数Cに依らず16回となる。
このように、第1の実施形態に係る乗加算部63は、少ない乗算回数で畳み込み演算を実行することができる。
また、入力データの取り得る値が制限されていれば(入力データの各要素が低ビットであれば)、上記乗算回数の削減効果はより顕著となる。例えば、入力データの各要素が2ビットで表現される場合には、重みの値の総和と入力データの取り得る値(例えば、0、1、2、3)を乗算すれば良いので、4回の乗算処理により畳み込み演算を実行できる。
さらに、非特許文献1に開示された技術では、重みの各要素値が低ビットであることが必要であったが、第1の実施形態に係る乗加算部63による処理にはそのような制限は存在しない。
さらにまた、非特許文献1に開示された技術では、重みと入力データ(2の冪乗に分解された入力データ)の乗算結果を逐次加算していく加算器のビット幅が肥大化するという問題がある。例えば、重みの各要素が4ビット、入力データの各要素が8ビットであり、これらのデータを512(2)回乗算する場合を考える。この場合、4+8+9=21ビット幅の加算器が必要となる。
対して、第1の実施形態では、入力データの取り得る値ごとにレジスタ76が用意されるため、累算器72に含まれる加算器75のビット幅は、8+9=17ビットとなる。このように、第1の実施形態に係る乗加算部63は、少ないビット幅の加算器を用いて畳み込み演算を実行することができる。
[第2の実施形態]
続いて、第2の実施形態について図面を参照して詳細に説明する。
第1の実施形態では、入力データの取り得る値ごとに重みの値の総和を計算している。そのため、入力データの取り得る値ごとに累算器72や乗算器73を用意する必要がある。例えば、入力データの要素値が4ビットであれば、16個の累算器や乗算器が必要となる。
第2の実施形態では、入力データが対数量子化されていることを前提とする。つまり、入力データ記憶部52は、対数量子化された入力データを記憶する。第2の実施形態では、上記前提の下、累算器や乗算器の数が少ない乗加算部を説明する。
第2の実施形態では、非特許文献4に開示されたように、入力データ(アクティベーション)の各要素が4ビットに対数量子化されている場合を想定する。より具体的には、入力データの値は2の冪乗に丸め込まれ、対数量子化された入力データの各要素には、当該2の冪乗の冪指数が格納される。例えば、対数量子化対象のデータ値が「8」であれば、当該データ値は2で表現できるので、対数量子化後のデータは「3」となる。このような対数量子化処理により、対数量子化された入力データの要素値は、重みのシフト量を示すことになる。
なお、非特許文献4に開示された対数量子化では、対数量子化の対象値が一定の値より小さい場合には特定の最小値に、一定の値より大きければ特定の最大値にそれぞれ変換している。さらに、当該対数量子化では、対象値が上記特定の最小値、最大値より規定される範囲内の場合にその対数を計算している。本願開示においても、同様の処理を行うものとする。
乗加算部63aは、対数量子化された入力データの要素を上位ビットと下位ビットに分離し、分離された下位ビットの値に応じて重みの値をシフトし、分離された上位ビットの値に応じてシフト演算された重みの値の出力先を選択する構成を有する。
図10は、第2の実施形態に係る乗加算部63aの内部構成の一例を示す図である。図10を参照すると、乗加算部63aは、分離部77と、シフト部78と、をさらに備える。
分離部77は、入力データの要素を因数分解し、事前決定された第1因子群と第2因子群に分離する手段である。より具体的には、分離部77は、対数量子化された入力データの要素を第1因子群と第2因子群に分離する。第1因子群とは、入力データのビット位置のうち、予め定められたビット位置よりも上位に位置するビット値を要素(因子)とする値である。第2因子群とは、入力データのビット位置のうち、上記予め定められたビット位置よりも下位に位置するビット値を要素(因子)とする値である。なお、以降の説明において、第1因子群を「上位ビット」、第2因子群を「下位ビット」と表記する。
分離部77は、分離された上位ビットをセレクタ71に供給する。分離部77は、分離された下位ビットをシフト部78に供給する。
例えば、分離部77は、4ビットで表現された対数量子化された入力データの値を上位2ビット、下位2ビットに分離する。例えば、入力データが「3」であれば、上位ビットは「00b」となり、下位ビットは「11b」となる。同様に、入力データが「15」であれば、上位ビットは「11b」となり、下位ビットは「11b」となる。なお、本願開示において、数字を2進数で表現する場合には、数字の後に「b」を付して表記する。
乗加算部63aが必要とする累算器72や乗算器73の数は、「2」を底(基数)とし分離された上位ビット数を冪指数とする数により示される個数となる。例えば、上述のように、入力データの値が上位2ビット、下位2ビットに分離される場合には、4(=2)個の累算器72、乗算器73が必要となる。
累算器72は、上位ビットの値が取り得る値ごとに用意され、上位ビットの値に応じた重みの値(後述するシフトされた重みの値)の累積加算値を保持する。例えば、累算器72-0は、上位ビットの値が「00b」の場合の重みの値の総和を保持する。
各乗算器73は、予め定められたシフト量だけ対応する累算器72が保持する値を左シフトするように構成されている。例えば、乗算器73-0はシフトせず(左シフトが0)、乗算器73-1は4ビットシフト、乗算器73-2は8ビットシフト、乗算器73-3は12ビットシフトするように構成されている。
乗算器73によるシフト量は、上位ビットと下位ビットに分離される入力データにおいて下位ビットをゼロに固定し、上位ビットを可変して得られる値となる。具体的には、「0000b=0」、「0100b=4」、「1000b=8」、「1100b=12」のシフト量が各乗算器73に割り当てられる。
なお、図10において、累算器72の近辺に示す「HB(High Bit)」は対応する上位ビットの値を示し、乗算器73の近辺に示す「SF」はシフト量を示す。
シフト部78は、取得した重みの要素値を下位ビットの値に相当するビット数シフトする。より具体的には、シフト部78は、分離部77から供給される分離された下位ビットの値に応じたシフト演算を取得した重みの値に施し、その結果をセレクタ71に出力する。例えば、取得した下位ビットの値が「11b」であれば、シフト部78は、取得した重みの値を3ビット左シフトした結果をセレクタ71に出力する。
セレクタ71は、上述のように、上位ビットの値に応じて重みの要素(シフト演算された重みの要素)の出力先を決定する。より具体的には、例えば、取得した上位ビットの値が「11b」であれば、セレクタ71は、累算器72-3に取得した重みの値を出力する。
乗加算制御部70、累算器72、乗算器73及び加算器74の動作は第1の実施形態にて説明した動作と同一とすることができるので更なる説明を省略する。
次に、乗加算部63aの動作を具体的に説明する。
例えば、入力データの値が「3」の場合、上位ビットの値は「00b」、下位ビットの値は「11b」となる。従って、シフト部78には「11b」が供給され、シフト部78は取得した重みの値を3ビット左シフトする。また、セレクタ71には上位ビット「00b」が供給されるので、セレクタ71は、シフト部78から供給される重みの値(3ビット左シフトされた重みの値)を累算器72-0に出力する。累算器72-0は、3ビット左シフトされた重みの値とレジスタ76-0が保持する値を加算し、レジスタ76-0に格納する。
全ての重みの値の総和が計算されると、累算器72-0が保持する値は乗算器73-0によりシフト演算される。この場合、乗算器73-0はシフト演算しないので、累算器72-0が保持する値がそのまま加算器74に出力される。このことから分かるように、入力データの値が「3」の場合は、対応する重みの値が3ビット左シフトされ、加算器74に出力される。
次に、入力データの値が「15」の場合を考える。この場合、上位ビットの値は「11b」、下位ビットの値は「11b」となる。従って、シフト部78には「11b」が供給されるので、シフト部78は取得した重みの値を3ビット左シフトする。また、セレクタ71には上位ビット「11b」が供給されるので、セレクタ71は、シフト部78から供給される重みの値(3ビット左シフトされた重みの値)を累算器72-3に出力する。累算器72-3は、3ビット左シフトされた重みの値とレジスタ76-3が保持する値を加算し、レジスタ76-3に格納する。
全ての重みの値の総和が計算されると、累算器72-3が保持する値は乗算器73-3によりシフト演算される。この場合、乗算器73-3は12ビットの左シフト演算を実行するように構成されているので、累算器72-3が保持する値は12ビット左シフトされて加算器74に出力される。このことから分かるように、入力データの値が「15」の場合は、対応する重みの値がシフト部78により3ビット左シフトされ、その後、乗算器73-3により12ビット左シフトされて加算器74に出力される。
なお、対数量子化された入力データにおいて、シフト量が「0」である場合と要素値が真に「0」である場合を区別する必要がある。従って、上記4ビットに加え、少なくとも1ビットが必要となる。このように、入力データを4ビットに対数量子化するには、4ビット(シフト量)+1ビット(真に0か否か)が必要となるが、上記説明では、理解の容易のため真の「0」を示す1ビットを考慮していない。当該1ビットを考慮する場合には、乗加算部63aは、入力データの値が真の「0」を示す場合には、対応する重みの値を破棄する等の処理を行えばよい。入力データの値が真に「0」であれば、重みの値に影響されず、乗算結果は「0」となるためである。
以上のように、第2の実施形態では、入力データが対数量子化されている場合に、当該対数量子化された入力データの値を上位ビット、下位ビットに分離し、下位ビットの値に相当するシフト演算をシフト部78にて事前に実行する。さらに、セレクタ71は、上位ビットの値に応じて、シフト演算された重みの値の出力先を決定し、各累算器72に接続された乗算器73にて上位ビットの値に相当するシフト演算が実行される。その結果、第2の実施形態では、乗加算部63aに必要となる累算器72や乗算器73の数を削減できる。
例えば、上述のように、4ビットに対数量子化された入力データを上位2ビット、下位2ビットに分離すれば、必要な累算器72等の数は「4」となる。また、4ビットに対数量子化された入力データを上位3ビット、下位1ビットに分離すれば、必要な累算器72等の数は「8」となる。さらに、4ビットに対数量子化された入力データを上位1ビット、下位3ビットに分離すれば、必要な累算器72等の数は「2」となる。即ち、4ビットに対数量子化された入力データを上位B1ビット、下位B2ビットに分離すると、必要な累算器72等の数は、1/2B2に削減される。必要な累算器72等の数が削減されれば、乗加算部63aの実装回路の面積や複雑度を低減することができる。
[第3の実施形態]
続いて、第3の実施形態について図面を参照して詳細に説明する。
第1及び第2の実施形態では、累算器72のそれぞれに加算器75を設けている。第3の実施形態では、当該加算器を共用する場合について説明する。
図11は、第3の実施形態に係る乗加算部63bの内部構成の一例を示す図である。図11を参照すると、乗加算部63bは、セレクタ71a、加算器79をさらに備える。また、第1及の実施形態にて説明した各累算器72から加算器75は削減され、累算器72はレジスタ76に置き替えられている。なお、図11において、乗加算制御部70、乗算器73及び加算器74は図示を省略している。
セレクタ71aは、入力データの要素が取り得る値に応じて、複数の累算器(レジスタ76)のうちいずれか一つの累算器の出力を選択する、累積加算値セレクタである。つまり、セレクタ71aは、入力データの値に応じて、各レジスタ76が保持する値のいずれかを選択し、出力する。例えば、入力データの値が「0」であれば、セレクタ71aは、レジスタ76-0を選択して、その保持値を加算器79に出力する。
加算器79は、セレクタ71aが出力する値と重みの要素値を加算し、加算結果をセレクタ71に出力する、共有加算器である。
セレクタ71は、入力データの値に応じて取得した値(加算器79による加算結果)の出力先を切り替える。
このように、第3の実施形態では、入力データの値に応じてレジスタ76から読み出す値を選択し、当該読み出されたレジスタ76の保持値と重みの値を加算する。また、本実施形態では、入力データの値に応じてセレクタ71の出力先となるレジスタ76を選択することで、入力データの取り得る値ごとの重みの値の総和(重みの累積加算値)を計算する。即ち、第1、第2の実施形態にて累算器72ごとに設けられていた加算器75は削減できる。その結果、乗加算部63bの実装回路の面積を削減することができる。
続いて、第1乃至第3の実施形態に係る推論装置10のハードウェア構成について説明する。
図12は、推論装置10のハードウェア構成の一例を示す図である。推論装置10は、所謂、情報処理装置(コンピュータ)により構成可能であり、図12に例示する構成を備える。例えば、推論装置10は、内部バスにより相互に接続される、CPU(Central Processing Unit)91、メモリ92、入出力インターフェイス93及び通信手段であるNIC(Network Interface Card)94等を備える。
なお、図12に示す構成は、推論装置10のハードウェア構成を限定する趣旨ではない。推論装置10は、図示しないハードウェアを含んでもよい。あるいは、推論装置10に含まれるCPU等の数も図12の例示に限定する趣旨ではなく、例えば、複数のCPUが推論装置10に含まれていてもよい。
メモリ92は、RAM(Random Access Memory)、ROM(Read Only Memory)、補助記憶装置(ハードディスク等)である。
入出力インターフェイス93は、図示しない表示装置や入力装置のインターフェイスとなる手段である。表示装置は、例えば、液晶ディスプレイ等である。入力装置は、例えば、キーボードやマウス等のユーザ操作を受け付ける装置である。
推論装置10の機能は、上述の処理モジュールにより実現される。当該処理モジュールは、例えば、メモリ92に格納されたプログラムをCPU91が実行することで実現される。あるいは、処理モジュールの一部(例えば、PE41やその内部に構成される乗加算部63)は、FPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)等の特定用途に特化したハードウェアにより実現(ハードウェアに実装)されてもよい。また、上記プログラムは、ネットワークを介してダウンロードするか、あるいは、プログラムを記憶した記憶媒体を用いて、更新することができる。さらに、上記処理モジュールは、半導体チップにより実現されてもよい。即ち、上記処理モジュールが行う機能は、何らかのハードウェアにおいてソフトウェアが実行されることによって実現できればよい。
[変形例]
第1乃至第3の実施形態にて説明した推論装置10は例示であって、その構成及び動作を限定する趣旨ではない。以下、各種変形例について説明する。
例えば、図13に示すように、PE41に入力データ制限部64を設けてもよい。上述のように、本願開示の乗加算部63は、入力データの取り得る値が少ない方が乗算処理の削減効果が高い。そこで、入力データ制限部64により、入力データの取り得る値を制限(低ビット化)する。例えば、入力データ制限部64は、入力データの値が4ビット以上の場合には、当該入力データの値を4ビットの値に丸め込むような処理を行う。より具体的には、入力データ制限部64は、取得したデータと出力するデータを対応付けたルックアップテーブル(LUT;Look Up Table)を用いて、入力データの値を低ビット化できる。あるいは、入力データ制限部64は、所定の関数を用いて、入力データの値を低ビット化してもよい。
上記実施形態では、乗加算部63による演算結果をそのまま演算結果記憶部53に格納する場合について説明した。しかし、畳み込み演算に用いる入力データや重みによっては、畳み込み演算の結果が大きくなりすぎることもある。具体的には、上記実施形態では、入力データの値は4ビットにて表現できることを前提とした乗加算部63について説明したが、畳み込み演算の結果が4ビットを超える(畳み込み演算がオーバーフローする)ことがあり得る。畳み込み演算がオーバーフローした場合、乗加算部63は、演算結果を「0」とするのではなく、取り得る値の最大値(例えば、15)に演算結果を設定することで、その後の処理を継続させることができる。
上記実施形態では、1つのPE41が1回の畳み込み演算を順番に実行していく構成を説明したが、複数のPE41を設け畳み込み演算を並列に実行してもよい。例えば、図14に示すように、それぞれが同一の構成を有する複数のPE41を用意し、各PE41にて独立に畳み込み演算を実行してもよい。例えば、図3を参照すると、PE41-1が重み群511に関する畳み込み演算を実行し、他のPE41が重み群512に関する畳み込み演算を同時に(並列に)実行してもよい。あるいは、1つの重み群における畳み込み演算を並列に実行してもよい。例えば、図3における重み501を用いた畳み込み演算をPE41-1が実行し、真ん中の重みを用いた畳み込み演算をPE41-2が実行し、重み502を用いた畳み込み演算をPE41-3が実行(並列に実行)するような構成でもよい。この場合、3つのPE41の演算結果を加算することで最終的な畳み込み演算の結果が得られる。なお、図14において、各種記憶部の図示を省略している。
複数のPE41を用いた畳み込み演算の並列実行を考慮すると、本願開示における乗加算部63の加算器75のビット幅は小さいことの効果がより顕著となる。つまり、非特許文献1に開示された技術でも複数のPEを用いた畳み込み演算の並列実行は可能と考えられるが、複数のPEを用意するとその分ビット幅の大きい加算器を用意する必要がある。対して、本願開示の乗加算部63は、非特許文献1に開示された加算器よりもビット幅の少ない加算器を含む複数のPEを用意すれば良いので、畳み込み演算を並列化するときの回路規模拡大が抑制される。
上記実施形態では、入力データの値が「0」に対応する重みの値を累積加算する累算器72を備える構成を説明したが、当該累算器はなくともよい。具体的には、図8における累算器72-0や乗算器73-0はなくともよい。入力データの値が「0」であれば、その乗算結果は「0」になるためである。あるいは、重み処理部61や入力データ処理部62は、入力データの値が「0」であれば、当該入力データの値と対応する重みの値を乗加算部63に供給する必要がないとも言える。例えば、入力データ処理部62が入力データの値が「0」であることを検知し、当該事実を重み処理部61に伝え、値が「0」である入力データと対応する重み値の供給を省略してもよい。このように、重み処理部61及び入力データ処理部62は、入力データの要素値がゼロである入力データの要素及び対応する重みの要素をセレクタ71に供給しなくともよい。つまり、入力データの要素値が「0」である場合には、入力データ処理部62と重み処理部61が連携し、当該データ及び対応する重みをセレクタ71に供給することを停止してもよい。その結果、乗加算部63における処理が低減され、畳み込み演算の高速化が期待できる。
上記実施形態では、重み処理部61や入力データ処理部62が1回分の畳み込み演算に使用するデータ(重み群、対応する入力データ)を読み出す場合を例に取り説明した。しかし、重み処理部61や入力データ処理部62は、畳み込み演算に必要なデータを逐次読み出し、乗加算部63に供給する構成であっても良い。
第2の実施形態では、対数量子化された入力データの要素値は正の値の場合について説明したが、対数量子化された入力データの要素値は負の値であってもよい。つまり、重みを左シフト(対数量子化された入力データの要素値は正の値)する場合だけでなく、重みを右シフト(対数量子化された入力データの要素値は負の値)してもよい。例えば、対数量子化された入力データの要素値が「-2」であれば、当該値は重みとの乗算において重みの値を2ビット右にシフトすることを意味する。また、第2の実施形態では、入力データを上位ビットと下位ビットに分離するが、入力データの要素値が負の値(右シフト)であっても、図10に示す乗加算部63aは、当該負の値に対応できる。例えば、シフト量が2の補数表現による負の値の場合を考える。例えば、「-5」を4ビット(2の補数表現)で表記すると「1011b」である。当該値のシフト量は、上位2ビットにゼロを付加したシフト量(「1000b」=-8)と下位2ビットのシフト量(「11b」=3)に分離できるので、-8+3=-5となる。このように、対数量子化された入力データの要素値が負の値であっても、第2の実施形態に係る乗加算部63aは意図されたとおりの右シフトを実現できる。
本願開示では、入力データから結果を推論(判定)する推論装置を例にとり畳み込み演算に要する乗算回数を削減する手法を説明した。しかし、畳み込みニューラルネットワークの活用(中間層の動作)の観点からは、推論装置と重みを生成する学習装置では相違する点はない。つまり、推論装置への入力データは推論対象となるデータであり、学習装置の推論部への入力データは教師データであるが、「推論」の観点からは両者に違いはない。即ち、上記説明した推論装置10に、誤差逆伝搬を行う誤差逆伝搬部、重みアップデートを行う重みアップデート部等を付加することで学習装置を構成することができる。なお、誤差逆伝搬部及び重みアップデート部に関しては、公知のアルゴリズム等により実現可能でありその説明を省略する。
また、上述の説明で用いた複数のフローチャートでは、複数の工程(処理)が順番に記載されているが、各実施形態で実行される工程の実行順序は、その記載の順番に制限されない。各実施形態では、例えば各処理を並行して実行する等、図示される工程の順番を内容的に支障のない範囲で変更することができる。また、上述の各実施形態は、内容が相反しない範囲で組み合わせることができる。
上記の実施形態の一部又は全部は、以下のようにも記載され得るが、以下には限られない。
[形態1]
上述の第1の視点に係る推論装置のとおりである。
[形態2]
前記PEは、
前記入力データの要素と前記重みの要素を入力するセレクタと、
それぞれが、前記入力データの要素が取り得る値ごとの重みの累積加算を計算し、記憶する複数の累算器と、
を備え、
前記セレクタは、前記入力データの要素値に応じて、前記複数の累算器のうち前記入力した重みの要素の出力先となる累算器を決定する、
好ましくは形態1の推論装置。
[形態3]
前記PEは、
前記複数の累算器それぞれに対応する、複数の乗算器を備え、
前記複数の乗算器には、前記重みの累積加算値と乗算する値が割り当てられている、好ましくは形態2の推論装置。
[形態4]
前記PEは、
前記複数の乗算器による乗算結果を入力し、加算する加算器を備える、好ましくは形態3の推論装置。
[形態5]
前記入力データ記憶部は、量子化された入力データを記憶し、
前記PEは、
前記入力データの要素を因数分解し、事前決定された第1因子群と第2因子群に分離する、分離部と、
前記重みの要素値を前記第2因子群の値に相当するビット数シフトする、シフト部と、
を備え、
前記セレクタは、前記第1因子群の値に応じて前記重みの要素の出力先を決定する、形態4の推論装置。
[形態6]
前記複数の累算器は、前記第1因子群が取り得る値ごとに用意され、
前記複数の乗算器のそれぞれには、前記第1因子群と第2因子群に分離される入力データにおいて前記第2因子群をゼロに固定し、前記第1因子群を可変して得られる値が前記重みの累積加算値と乗算する値として割り当てられる、好ましくは形態5の推論装置。
[形態7]
前記重み記憶部にアクセスし、前記重みを前記セレクタに供給する重み処理部と、
前記入力データ記憶部にアクセスし、前記入力データを前記セレクタに供給する入力データ処理部と、
を備え、
前記重み処理部及び前記入力データ処理部は、前記入力データの要素値がゼロである入力データの要素及び対応する重みの要素を前記セレクタに供給しない、好ましくは形態2乃至6のいずれか一に記載の推論装置。
[形態8]
前記複数の累算器のそれぞれは、加算器とレジスタを含んで構成される、好ましくは形態2乃至7のいずれか一に記載の推論装置。
[形態9]
前記複数の累算器のそれぞれは、レジスタを含み、
前記PEは、
前記入力データの要素が取り得る値に応じて、前記複数の累算器のうちいずれか一つの累算器の出力を選択する、累積加算値セレクタと、
前記累積加算値セレクタが出力する値と前記重みの要素値を加算し、加算結果を前記セレクタに出力する、共有加算器と、
をさらに備える、好ましくは形態2乃至7のいずれか一に記載の推論装置。
[形態10]
前記PEは、
前記入力データ記憶部から取得した入力データの取り得る値を制限する、入力データ制限部をさらに備える、好ましくは形態1乃至9のいずれか一に記載の推論装置。
[形態11]
前記PEを複数備え、
前記複数のPEは、前記畳み込みニューラルネットワークにおける畳み込み演算を並列に実行する、好ましくは形態1乃至10のいずれか一に記載の推論装置。
[形態12]
上述の第2の視点に係る畳み込み演算実行方法のとおりである。
[形態13]
上述の第3の視点に係るプログラムのとおりである。
なお、形態12及び13は、形態1と同様に、形態2~11のように展開することが可能である。
なお、引用した上記の非特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態ないし実施例の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択(少なくとも一部の非選択を含む)が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
10、100 推論装置
11 入力層実行部
12 中間層実行部
13 出力層実行部
31 畳み込み層実行部
32 活性化関数実行部
33 プーリング層実行部
40 畳み込み層制御部
41、41-1~41-4、103 PE(Processing Element)
51、101 重み記憶部
52、102 入力データ記憶部
53 演算結果記憶部
60 PE制御部
61 重み処理部
62 入力データ処理部
63、63a、63b 乗加算部
64 入力データ制限部
70 乗加算制御部
71、71a セレクタ
72、72-0~72-15 累算器
73、73-0~73-15 乗算器
74、75、75-0~75-15、79 加算器
76、76-0~76-15 レジスタ
77 分離部
78 シフト部
91 CPU(Central Processing Unit)
92 メモリ
93 入出力インターフェイス
94 NIC(Network Interface Card)
501、502 重み
511、512 重み群
601、611 入力データ

Claims (10)

  1. 重みを記憶する重み記憶部と、
    入力データを記憶する入力データ記憶部と、
    前記重み及び入力データを用いて畳み込みニューラルネットワークにおける畳み込み演算を実行するPE(Processing Element)と、
    を備え、
    前記PEは、
    前記入力データの要素が取り得る値ごとに、前記入力データの要素と乗算される重みの要素を累積加算し、
    前記入力データの要素が取り得る値それぞれと、前記入力データの要素が取り得る値に対応する重みの累積加算値それぞれと、を乗算し、
    前記乗算により得られる複数の乗算結果を加算する、
    推論装置。
  2. 前記PEは、
    前記入力データの要素と前記重みの要素を入力するセレクタと、
    それぞれが、前記入力データの要素が取り得る値ごとの重みの累積加算を計算し、記憶する複数の累算器と、
    を備え、
    前記セレクタは、前記入力データの要素値に応じて、前記複数の累算器のうち前記入力した重みの要素の出力先となる累算器を決定する、
    請求項1の推論装置。
  3. 前記PEは、
    前記複数の累算器それぞれに対応する、乗算器を備え、
    前記乗算器のそれぞれには、前記累算器の出力と乗算する前記入力データの要素が取り得る値ごとの値が割り当てられている、請求項2の推論装置。
  4. 前記PEは、
    前記複数の乗算器による乗算結果を入力し、加算する加算器を備える、請求項3の推論装置。
  5. 前記入力データ記憶部は、量子化された入力データを記憶し、
    前記PEは、
    前記入力データの要素を因数分解し、事前決定された第1因子群と第2因子群に分離する、分離部と、
    前記重みの要素値を前記第2因子群の値に相当するビット数シフトする、シフト部と、
    を備え、
    前記セレクタは、前記第1因子群の値に応じて前記シフトされた重みの要素の出力先累算器を決定する、請求項4の推論装置。
  6. 前記複数の累算器は、前記第1因子群が取り得る値ごとに用意され、
    前記複数の乗算器のそれぞれには、前記第1因子群と第2因子群に分離される入力データにおいて前記第2因子群をゼロに固定し、前記第1因子群を可変して得られる値が前記重みの累積加算値と乗算する値として割り当てられる、請求項5の推論装置。
  7. 前記重み記憶部にアクセスし、前記重みを前記セレクタに供給する重み処理部と、
    前記入力データ記憶部にアクセスし、前記入力データを前記セレクタに供給する入力データ処理部と、
    を備え、
    前記重み処理部及び前記入力データ処理部は、前記入力データの要素値がゼロである入力データの要素及び対応する重みの要素を前記セレクタに供給しない、請求項2乃至のいずれか一項に記載の推論装置。
  8. 前記複数の累算器のそれぞれは、加算器とレジスタを含んで構成される、請求項2乃至7のいずれか一項に記載の推論装置。
  9. 重みを記憶する重み記憶部と、
    入力データを記憶する入力データ記憶部と、
    を備え、前記重み及び入力データを用いて畳み込みニューラルネットワークにおける畳み込み演算を実行する推論装置において、
    前記入力データの要素が取り得る値ごとに、前記入力データの要素と乗算される重みの要素を累積加算するステップと、
    前記入力データの要素が取り得る値それぞれと、前記入力データの要素が取り得る値に対応する重みの累積加算値それぞれと、を乗算するステップと、
    前記乗算により得られる複数の乗算結果を加算するステップと、
    を含む、畳み込み演算実行方法。
  10. 重みを記憶する重み記憶部と、
    入力データを記憶する入力データ記憶部と、
    を備え、前記重み及び入力データを用いて畳み込みニューラルネットワークにおける畳み込み演算を実行する推論装置に搭載されたコンピュータに、
    前記入力データの要素が取り得る値ごとに、前記入力データの要素と乗算される重みの要素を累積加算する処理と、
    前記入力データの要素が取り得る値それぞれと、前記入力データの要素が取り得る値に対応する重みの累積加算値それぞれと、を乗算する処理と、
    前記乗算により得られる複数の乗算結果を加算する処理と、
    を実行させるプログラム。
JP2020503606A 2018-03-02 2019-02-28 推論装置、畳み込み演算実行方法及びプログラム Active JP7060079B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2018038028 2018-03-02
JP2018038028 2018-03-02
PCT/JP2019/007770 WO2019168088A1 (ja) 2018-03-02 2019-02-28 推論装置、畳み込み演算実行方法及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2019168088A1 JPWO2019168088A1 (ja) 2021-02-12
JP7060079B2 true JP7060079B2 (ja) 2022-04-26

Family

ID=67806291

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020503606A Active JP7060079B2 (ja) 2018-03-02 2019-02-28 推論装置、畳み込み演算実行方法及びプログラム

Country Status (3)

Country Link
US (1) US11960565B2 (ja)
JP (1) JP7060079B2 (ja)
WO (1) WO2019168088A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11487845B2 (en) * 2018-11-28 2022-11-01 Electronics And Telecommunications Research Institute Convolutional operation device with dimensional conversion
US12014505B2 (en) * 2019-01-31 2024-06-18 Samsung Electronics Co., Ltd. Method and apparatus with convolution neural network processing using shared operand

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019064774A1 (ja) 2017-09-29 2019-04-04 ソニー株式会社 情報処理装置、および情報処理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1991019267A1 (en) * 1990-06-06 1991-12-12 Hughes Aircraft Company Neural network processor
JP2862337B2 (ja) 1990-06-19 1999-03-03 キヤノン株式会社 ニューラルネットワークの構築方法
US5473730A (en) 1993-11-09 1995-12-05 At&T Ipm Corp. High efficiency learning network
US9153230B2 (en) * 2012-10-23 2015-10-06 Google Inc. Mobile speech recognition hardware accelerator
JP6348431B2 (ja) 2015-02-24 2018-06-27 株式会社日立製作所 画像処理方法、画像処理装置
JP6567381B2 (ja) 2015-09-30 2019-08-28 株式会社東芝 演算装置、方法及びプログラム
JP6750203B2 (ja) 2015-10-20 2020-09-02 富士通株式会社 畳み込みニューラルネットワークの演算方法及び演算プログラム、情報処理装置
JP6183980B1 (ja) 2016-12-02 2017-08-23 国立大学法人東京工業大学 ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019064774A1 (ja) 2017-09-29 2019-04-04 ソニー株式会社 情報処理装置、および情報処理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MIYASHITA, Daisuke, et al.,Convolutional Neural Networks using Logarithmic Data Representation,arXiv,米国,arXiv,2016年03月17日,https://arxiv.org/abs/1603.01025v2

Also Published As

Publication number Publication date
WO2019168088A1 (ja) 2019-09-06
US11960565B2 (en) 2024-04-16
JPWO2019168088A1 (ja) 2021-02-12
US20210004701A1 (en) 2021-01-07

Similar Documents

Publication Publication Date Title
JP6977864B2 (ja) 推論装置、畳み込み演算実行方法及びプログラム
CN107358293B (zh) 一种神经网络训练方法及装置
US11461684B2 (en) Operation processing circuit and recognition system
US10025755B2 (en) Device and method to process data in parallel
US20220114424A1 (en) Multi-bandwidth separated feature extraction convolution layer for convolutional neural networks
EP3671572A1 (en) Information processing apparatus, neural network program, and processing method for neural network
KR20180050928A (ko) 컨볼루션 신경망 처리 방법 및 장치
KR102637733B1 (ko) 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법
JP6927320B2 (ja) 推論装置、畳み込み演算実行方法及びプログラム
JP7060079B2 (ja) 推論装置、畳み込み演算実行方法及びプログラム
EP3370191B1 (en) Apparatus and method implementing an artificial neural network training algorithm using weight tying
JP2019075115A (ja) アクティベーション演算とコンボリューション演算を同時に遂行するための方法及び装置、そしてこのための学習方法及び学習装置
US20210287092A1 (en) Method and device for pruning convolutional layer in neural network
CN113396427A (zh) 用于人工神经网络的比特量化的方法和系统
CN112633481B (zh) 一种多跳图卷积神经网络模型系统及训练方法
WO2020003434A1 (ja) 機械学習方法、機械学習装置、及び機械学習プログラム
CN112561028A (zh) 训练神经网络模型的方法、数据处理的方法及装置
MacDonald et al. Enabling equivariance for arbitrary lie groups
KR20230050340A (ko) 테이블 형식의 컨볼루션 및 가속
CN114698395A (zh) 神经网络模型的量化方法和装置、数据处理的方法和装置
EP3940603A1 (en) Processing apparatus for performing pointwise convolutions and depthwise convolutions
Zhou et al. Neural epitome search for architecture-agnostic network compression
KR102153167B1 (ko) 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법
WO2023122896A1 (zh) 一种数据处理方法和装置
CN113919479B (zh) 一种提取数据特征的方法和相关装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200901

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200901

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220125

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: 20220315

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220328

R151 Written notification of patent or utility model registration

Ref document number: 7060079

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151