JP7348971B2 - 畳み込みニューラルネットワークハードウエア構成 - Google Patents

畳み込みニューラルネットワークハードウエア構成 Download PDF

Info

Publication number
JP7348971B2
JP7348971B2 JP2022006207A JP2022006207A JP7348971B2 JP 7348971 B2 JP7348971 B2 JP 7348971B2 JP 2022006207 A JP2022006207 A JP 2022006207A JP 2022006207 A JP2022006207 A JP 2022006207A JP 7348971 B2 JP7348971 B2 JP 7348971B2
Authority
JP
Japan
Prior art keywords
data
weight
vector
values
index
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
JP2022006207A
Other languages
English (en)
Other versions
JP2022058660A (ja
Inventor
ギブソン クリフォード
インバー ジェームズ
Original Assignee
イマジネイション テクノロジーズ リミテッド
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 イマジネイション テクノロジーズ リミテッド filed Critical イマジネイション テクノロジーズ リミテッド
Publication of JP2022058660A publication Critical patent/JP2022058660A/ja
Application granted granted Critical
Publication of JP7348971B2 publication Critical patent/JP7348971B2/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
    • 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
    • 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/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • 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/048Activation functions
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Image Analysis (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

畳み込みニューラルネットワーク(CNN)は、機械学習用途に使用することができる人工ニューラルネットワークの1つのタイプである。特に、CNNは、画像処理及びコンピュータビジョン用途を含む信号処理用途に使用することができる。
CNNは、電力リソースが重要な要素ではない用途に実施される。これにも関わらず、CNNは、CNNを実施するのに使用されるハードウエアのリソースが電力消費、処理容量、又はシリコン面積が限定されるようなものであるいくつかの異なる技術分野における用途を有する。
従って、効率的な方法で、すなわち、作動する時にシリコン面積又は処理電力をあまり必要としない方法でCNNを実施するように構成されたハードウエアを実施する必要性が存在する。更に、特定の用途に対するCNNの定義は、時間と共に変化すると考えられる。例えば、追加の訓練は、CNNの定義の変更をもたらすことがある。従って、変化するCNN要件に対して柔軟であるようにCNNを実施するためのハードウエアに対する必要性も存在する。
この「発明の概要」は、「発明を実施するための形態」で以下に更に説明する選択した概念を単純化された形式で紹介するために提供するものである。この「発明の概要」は、特許請求する主題の重要な特徴又は本質的な特徴を識別するように意図しておらず、特許請求する主題の範囲を制限するのに使用されるようにも意図していない。
畳み込みニューラルネットワーク(CNN)のハードウエア実装を構成する方法を提供し、本方法は、CNNの少なくとも1つの層の少なくとも1つの重みに対して、少なくとも1つの層に対する重み値の分布に基づいて少なくとも1つの層内の重みを表すための第1の数フォーマットを決定する段階を含み、第1の数フォーマットは、第1の予め決められたビット長の第1の整数と第1の指数値とを含む。
本方法は、更に、CNNの複数の層の各々に対して、層に対して予想されるデータ値の分布に基づいて層内のデータ値を表すための第2の数フォーマットを決定する段階を含むことができ、第2の数フォーマットは、第2の予め決められたビット長の第2の整数と層に対して固定された第2の指数値とを含む。
本方法は、更に、CNNの複数の層の各々に対して、層に対する重み値の分布に基づいて層内の重み値を表すための第3の数フォーマットを決定する段階を含むことができ、第3の数フォーマットは、第3の予め決められたビット長の第3の整数と層に対して固定された第3の指数値とを含む。
本方法は、更に、CNNのハードウエア実装を構成する際に使用するために決定された数フォーマットを格納する段階を含むことができる。
畳み込みニューラルネットワーク(CNN)のハードウエア実装を構成する方法を提供し、本方法は、CNNの少なくとも1つの層パラメータに対して、少なくとも1つの層の少なくとも一部分に対する層パラメータ値の分布に基づいて層パラメータを表すための数フォーマットを決定する段階を含み、数フォーマットは、第1の予め決められたビット長の第1の整数と第1の指数値とを含む。
畳み込みニューラルネットワーク(CNN)のハードウエア実装を構成する方法を提供し、本方法は、CNNの複数の層の各々に対して、層に対する重み値の分布に基づいて層内の重み値を表すための第1の数フォーマットを決定する段階であって、第1の数フォーマットが、第1の予め決められたビット長の第1の整数と層に対して固定された第1の指数値とを含む上記決定する段階と、CNNの複数の層の各々に対して、層に対して予想されるデータ値の分布に基づいて層内のデータ値を表すための第2の数フォーマットを決定する段階であって、第2の数フォーマットが、第2の予め決められたビット長の第2の整数と層に対して固定された第2の指数値とを含む上記決定する段階と、CNNのハードウエア実装を構成する際に使用するために決定された数フォーマットを格納する段階とを含む。
畳み込みニューラルネットワーク(CNN)のハードウエア実装を構成するためのコンピュータシステムを提供し、コンピュータシステムは、CNNの複数の層の各々に対して、層内の重み値の分布に基づいて層内の重み値を表すための第1の予め決められたビット長の第1の整数と層に対して固定された第1の指数値とを含む第1の数フォーマットを決定し、CNNの複数の層の各々に対して、層に対して予想されるデータ値の分布に基づいて層内のデータ値を表すための第2の予め決められたビット長の第2の整数と層に対して固定された第2の指数値とを含む第2の数フォーマットを決定し、かつCNNのハードウエア実装を構成する際に使用するためのために決定された数フォーマットを格納するように構成される。
上述の方法及びシステムは、集積回路上のハードウエアに具現化することができる。CNNのハードウエア実装を集積回路製造システムで製造する方法を提供することができる。集積回路製造システム内で処理された時にCNNのハードウエア実装を製造するようにシステムを構成する集積回路定義データセットを提供することができる。処理された時に、レイアウト処理システムをしてCNNのハードウエア実装を製造するための集積回路製造システムに使用される回路レイアウト記述を発生させる集積回路のコンピュータ可読記述を格納した非一時的コンピュータ可読ストレージ媒体を提供することができる。
CNNのハードウエア実装を記述するコンピュータ可読集積回路記述を格納した非一時的コンピュータ可読ストレージ媒体と、CNNのハードウエア実装を具現化する集積回路の回路レイアウト記述を発生させるために集積回路記述を処理するように構成されたレイアウト処理システムと、回路レイアウト記述に従ってCNNのハードウエア実装を製造するように構成された集積回路発生システムとを含む集積回路製造システムを提供することができる。
あらゆる上述の特許請求の範囲に主張する方法を実行するためのコンピュータプログラムコードを提供することができる。コンピュータシステムで実行された時に、コンピュータシステムをしてあらゆる上述の特許請求の範囲に主張する方法を実行させるコンピュータ可読命令を格納した非一時的コンピュータ可読ストレージ媒体を提供することができる。
上述の特徴は、当業者には明らかであろうが適切な場合に組み合わせることができ、かつ本明細書に説明する実施例の態様のいずれとも組み合わせることができる。
ここで実施例を添付図面を参照して詳細に以下に説明する。
添付図面は、様々な実施例を示している。当業者は、図面内に図示の要素境界(例えば、ボックス、ボックスのグループ、又は他の形状)が境界の一例を表すことを認めるであろう。一部の実施例では、1つの要素が複数の要素として描かれる場合があり、又は複数の要素が1つの要素として描かれる場合がある。共通参照番号は、適切な場合に図を通して類似の特徴を示すのに使用される。
畳み込みニューラルネットワークに使用するデータの構造の例を示す図である。 畳み込みニューラルネットワークの例示的ハードウエア実装を示す図である。 図2に示す畳み込みエンジンの例を示す図である。 畳み込みニューラルネットワークのハードウエア実装を使用するために構成するための例示的処理を示す図である。 CNNの例示的層に対する重み値分布を示す図である。 CNNの例示的層に対する重み値分布を示す図である。 CNNの例示的層に対するデータ値分布を示す図である。 CNNの例示的層に対するデータ値分布を示す図である。 重み調整前の例示的重み値分布を示す図である。 重み調整後の例示的重み値分布を示す図である。 図4の処理の段階に従って層に対する数フォーマットを決定する例示的処理を示す図である。 変換された数フォーマットを使用して畳み込みを実行するように構成された畳み込みブロックの概略例を示す図である。 CNNのハードウエア実装が実施されるコンピュータシステムを示す図である。 CNNのハードウエア実装を具現化する集積回路を発生させるための集積回路製造システムを示す図である。
以下の説明は、当業者が本発明を製造かつ使用することを可能にするために一例として提示するものである。本発明は、本明細書に説明する実施形態に限定されず、開示する実施形態への様々な修正は、当業者に明らかであろう。
ここで実施形態を以下に単に例示的に説明する。
畳み込みニューラルネットワーク(CNN)は、コンピュータビジョンタスクを含む信号処理タスクをCNNが実行することを可能にするために重みを関連付けた複数の相互接続された層を含む人工ニューラルネットワークの形態である。CNNの機能は重みによって完全に表現される。一部の例において、入力画像を受信するようにCNNを構成することができる。
CNNで利用されるデータのフォーマットの例示的概要を図1に示している。図1を見て分るように、CNNに使用されるデータのフォーマットは、複数の平面から作られる。入力データをデータのP平面として配置することができ、ここで各平面は次元xyzを有する。CNNは、複数の層を含み、その各々には複数のフィルタw0...wnが関連付けられる。フィルタw0...wnの各々は、m×n×Pの次元を有し、かつ図1に示すように方向s及びtのいくつかの段階にわたる畳み込み演算に従って入力データに適用される。
上述のように、各層には複数のフィルタw0...wnを関連付けることができる。本明細書に使用する重みは、フィルタ、フィルタ重み、又は係数と呼ぶことができる。フィルタ重みの数及び値は、第1の層内の重みの数がn1であり、第2の層内の重みの数がn2である場合に、第1の層に対して重みの数を
Figure 0007348971000001
として定義することができ、第2の層に対して重みの数を
Figure 0007348971000002
として定義することができるように層の間で変えることができる。
CNNの複数の層に対して、この層の入力データは、この層に関連付けられた重みを使用してこの層に対する入力データを畳み込むことによって処理される。例えば、CNNがビジョン用途に利用される場合に、第1の層では、「入力データ」は、一部の実施例では画像とすることができるCNNへの初期入力と考えることができる。第1の層は、入力データを処理し、かつ第2の層に渡される中間データの第1のセットを発生させる。中間データの第1のセットはまた、データのいくつかの平面の形態を取る場合がある。中間データの第1のセットは、第1の中間データを処理して第2の中間データの形態の出力データを生成する第2の層の入力データを形成すると考えることができる。CNNが第3の層を含有する場合に、第3の層は、入力データとして第2の中間データを受信してこのデータを処理し、出力データとして第3の中間データを生成する。従って、本明細書での入力データへの参照は、いずれの層に対しても入力データへの参照を含むものと解釈することができる。例えば、入力データという語は、特定の層の出力及び次の層への入力である中間データを指すことができる。これは、CNNの出力と考えることができる出力データを最終層が生成するまで繰り返される。
図2は、本発明の開示によりCNNを実施するように構成されたハードウエア実装200を示している。ハードウエア実装は、実施されるCNNを定めるデータを受信するように構成され、かつCNNを実施するために入力データを処理するようにデータ定義に従って作動するように構成されたデジタル論理回路を含む。従って、ハードウエア実装は、1又は2以上のCNNを実施するための構成可能なハードウエアであると考えることができる。この点で、本明細書でのCNNのハードウエア実装への参照は、受信した構成データに従って入力データに対して演算することによってCNNを実施するように構成されたハードウエアへの参照である。ハードウエア実装自体は、特定のCNNを実施するように必ずしも構成されず、CNNの特定の構成データを用いて必ずしも事前ロードされない。例えば、CNNは、事前ロードされたもの(又はハードコード重みデータ及び層定義)を含む必要はない。従って、ハードウエア実装は、受信した構成データに基づいていずれのCNNも実施するように構成される。従って、構成データ(本明細書では指令データとも呼ぶ)は、含まれることになる層の数、及び重みデータのサイズ及び値、並びに入力データの予想されるフォーマットを含む実施されることになる特定のCNNを定義する。
CNN及びCNNがどのように処理されるかを定義するデータは、構成(又は指令)データ、重みデータ、及び入力データを含むことができる。ハードウエア実装は、CNNによって定義される作動を実行するために重みデータを使用して入力データを処理するように構成される。ハードウエア実装200は、メモリインタフェース210、入力バッファコントローラ215、指令復号器220、係数バッファコントローラ225、係数バッファ230、n畳み込みエンジン240、n累積器245、起動モジュール255、正規化モジュール265、共有バッファ270、及びプールモジュール275を含む。
メモリインタフェース210は、ハードウエア実装200と外部メモリ(図示せず)の間のインタフェースを提供するように構成される。外部メモリは、ハードウエア実装200とは別のモジュールと考えることができ、又はハードウエア200に統合されると考えることができる。指令又は構成データは、例えば、重みのサイズ及び/又はフォーマット、及び入力データサイズ及びフォーマット、並びに外部メモリでの位置に関する情報を含むことができる。
メモリインタフェース210は、外部メモリからCNN内での計算に使用される重みデータ及び入力データ、並びに指令情報を受信し、ハードウエア実装200の作動を制御するように構成される。受信した重み(本明細書では係数とも呼ぶ)は、係数バッファコントローラ225に渡され、受信した入力データは、入力バッファコントローラ215に渡される。受信した指令は、指令復号器220に渡され、これは、次に、指令を復号し、かつ続けて重み及び入力データがバッファに格納される方式を制御するための係数制御バッファコントローラ225及び入力バッファコントローラ215を含む制御情報をハードウエア実装の要素に発令するように構成される。
外部メモリの読取り中にメモリインタフェース210を通じて外部メモリから受信される重み及び入力データは、単一層の一部分のみの重み及び入力データ、単一層を処理する場合に使用される重み及び入力データの全てを形成することができ、又は複数の層を処理するための重み及び入力データを含むことができる。例えば、外部メモリから受信される重みは、単一層の重みを形成することができ、受信される入力データは、単一層の入力データの一部分のみを形成することができる(逆も同様)。1又は2以上の層にわたるデータ及び重みのいずれの組合せも、メモリからの単一読取りで外部メモリから(例えば、バースト読取りを使用して)受信することができる。
実際には、外部メモリからの単一読取りで受信する重み及びデータの数は、係数バッファ230及び入力バッファ235のサイズに依存することになる。重みは、係数バッファコントローラ225から係数バッファ230に渡され、受信したデータは、入力バッファコントローラ215から複数の入力バッファ235a-235nに渡される。入力バッファの数は、ハードウエア200の特定の実施に依存するが、いずれの値も取ることができる。入力データは、入力バッファ235a-235nの全てにわたって共有される。入力バッファの各々は、入力バッファの数が用途に応じて増加又は減少することができるように有効なバンクを形成する。
各畳み込みエンジン240a-240nが入力データの有効な「バンク」の全てへのアクセスを必要とするので、入力バッファ235a-235nは、複数のマルチプレクサの各々に接続される。マルチプレクサの各々は、入力バッファの1つから出力を選択し、かつ選択された入力バッファから出力された値をそれぞれの畳み込みエンジン240a-240nに渡すように構成される。更に、係数バッファ230からの重みは、第2の入力として各畳み込みエンジン240a-240nに提供される。畳み込みエンジンは、係数バッファ230から受信した重みを使用して、受信した入力データに対して畳み込み演算を実行するように構成される。各畳み込みエンジン240a-240nの結果出力は、入力として複数の累積器245a-245nのそれぞれの累積器に提供される。乗算論理部310の複数の要素及び加算論理部320の複数の要素を含む畳み込みエンジン240nの例示的実施を図3に示している。
各累積器245a-245nは、累積バッファ250に接続される。累積バッファ250は、各累積器245a-245nから受信した累積結果を格納するように構成される。累積バッファ250は、メモリインタフェース210に接続される。従って、累積バッファ250は、メモリインタフェース210を通じて外部メモリにデータを送信かつ外部メモリからデータを受信するように構成される。特に、累積バッファ250は、以下に詳細に説明するようにメモリインタフェース210を通じて外部メモリから値を格納及び回復することができるように構成される。累積バッファ250は、累積器245a-245nの入力に接続され、累積計算が行われるように値を累積器245a-245nにフィードバックするように構成される。
本出願の態様において、CNNのハードウエア実装に使用するための構成データ及び再フォーマット設定入力データを発生させる処理を以下に説明する。
固定小数点フォーマット
一般的に、ソフトウエアツールがCNNの訓練フェーズ中に使用されて訓練データセットに基づいて層あたり1セットの重みを生成する。一部の構成では、一部の層内の重み値の一部は、他の手段、例えば、ウェーブレットベースによって発生させることができると考えられる。
ニューラルネットワークを訓練するための多くの共通ソフトウエアツールによって発生される重みは、典型的には浮動小数点数フォーマットで発生される。浮動小数点計算を実行することによってCNNを実施するように構成されたCNNのハードウエア実装は、シリコン面積が大きい可能性があり、かつ対応する固定小数点計算を実施するためのハードウエアと比較すると浮動小数点計算を実施するように構成されたハードウエアの複雑さに起因して有意な電力消費を有する。
CNNハードウエア実装の面積、電力消費、及びメモリ帯域幅を低減するために、ネットワークを定義するこれらの浮動小数点値は、浮動小数点フォーマットでの対応する計算よりも処理するのに単純な論理しか必要としない固定小数点フォーマットに変換することが望ましい。更に、本発明者は、CNNの各層のCNNの値を表すのに使用されるビットの数を精度を大きく損なうことなく低減することができることを認識している。例えば、同じ数のビットを使用して重み及び入力データを表すことができる。しかし、フィルタのサイズ及び数、並びにデータのサイズは、典型的には層によって異なる。従って、従来的な固定小数点数フォーマットは、付番フォーマットが一部の層で冗長ビットをもたらすことがあり、入力及び重み値の値の範囲が層の間で異なる場合があるので、CNN実装に使用するには不適切であることがある。更に、本発明者は、各層で表される値の範囲が層の間で異なる場合があり、従って、例えば、層毎ベースで表される数の精度を最適化するための範囲をもたらすことを認識している。
一般的に、浮動小数点数フォーマットは、符号ビットs、指数e、及び1と2の範囲内の仮数mから構成される。浮動小数点フォーマットにおける有限値は、(-1)semとして表される。浮動小数点数は、数のサイズに比例した精度で大きい範囲の値を表すことができる。浮動小数点数では、指数の役割は、表された数のバイナリポイントの位置を移動することであると考えることができ、従って、「浮動」少数点という名前である。
対照的に、固定小数点数は、それが表すことができる値の間隔にわたって一貫した精度を有する。固定小数点フォーマットで数を表すための一般的な方法は、整数ビットの予め決められた数nと分数ビットmを指定するQフォーマットの使用である。従って、数は、n+m+1ビット(符号ビットを含む)の総数を必要とするQn.mとして表すことができる。例示的Qフォーマットを以下の表に示している。
(表)
Figure 0007348971000003
しかし、Qフォーマットは、数を表すのに使用されるビットの一部が冗長であると考えられるという欠点を有する。ある例では、数範囲[-0.125、0.125]は、3ビットの精度に対して表されることになる。この例示的範囲及び精度に対する望ましいQフォーマットは、Q0.5である。しかし、値の範囲が予め既知であると仮定する場合に、数の最初の2ビットは、Qフォーマットで表される値を決定する場合に決して使用されない。例えば、表現の最初の2ビットは、これらがそれぞれ0.5及び0.25を表し、従って、望ましい範囲の外側に入るので最終的な数に寄与しない。しかし、これらは、相対的なビット位置に起因して第3のビット位置(すなわち、0.125)及びそれを超える値を示すのに使用される。
同様に、値[-64、64]を4ビットの精度に表す必要があることを例において仮定する。Q7.0のQフォーマットは、Qフォーマットで望ましい例示的な値を表現するのに使用しなければならない。しかし、数の最後の3ビット(すなわち、3つの最下位ビット)は、これらのビットが望ましい精度の外側の値を表すのでいずれの有用な情報も伝えない。言い換えれば、-64から64の範囲を表すために、7ビットが必要である(27が128であるので)。しかし、精度の僅か4ビットしか必要ないので(すなわち、24値が識別される)、残りのLSBは余分なレベルの精度を提供する。しかし、値の全範囲を表すためにMSBを指数位置7にしなければならないのでこれらのLSBビットを使用すべきである。上述のQフォーマットは、従って、一部のビットが有用な情報を伝えないので、CNNのハードウエア実装内に使用するには非効率な数フォーマットであると考えられる。
従って、重み値及びデータ値を含む値を格納するためにCNNのハードウエア実装に使用するための異なる数フォーマットを以下に示す。特定の層に対して表される値の範囲を固定することができることを認識することにより、特定の層での全ての入力データ又は全ての重みデータによって共有される共通フォーマットを定義することができる。これは、使用される表現される値の範囲を示す数フォーマットを使用する必要がないことを意味し、以下に説明するように数を表す場合の精度の最適化を可能にする。
以下に示す数フォーマットは、CNNを超える用途を有するが、値の決定可能な範囲に一般的に入る入力/重みデータの層に起因してCNNに関連の特定の用途を有する。上述のように、CNNを訓練することによって発生される重みは、典型的には浮動小数点フォーマットで生成される。しかし、有効なハードウエア実装(シリコン、電力消費、又は処理電力の点で)を生成するために、ハードウエアを固定小数点フォーマットに実施することが好ましい。従って、CNN出力の精度への影響を最小にしながら浮動小数点フォーマットから値を変換することが好ましい。
CNNの一部のハードウエア実装では、各重みを表すのに使用される第1の固定ビット数及びCNN内のデータを表すのに使用される第2の固定ビット数を定めることが望ましい。CNN内のデータ及び重みを表すのに使用されるビットの数を事前定義することにより、ハードウエア実装を最適化することができる。例えば、畳み込みエンジンで実行される乗算及び累積演算は、組み合わされるビットの数に対して最適化することができ、以下に詳細に説明する。
また、CNN実装では、重み及びデータの両方の値の分布が層によって異なるのは一般的である。更に、重みの値は、特定の層内のデータの値とは異なる場合がある。CNN内の重み及びデータを表すためにビットの固定数が与えられるとすると、各層内の重み及びデータの各々に個別の固定小数点フォーマットを定義することが好ましい。
図4の方法は、CNNの構成データを生成して畳み込みを実行する場合に使用する数フォーマットを定義する方法を説明している。定義された数フォーマットは、CNNのハードウエア実装で値を表すのに使用される。本方法は、CNNを定める重みデータを生成するためにCNNの訓練が浮動小数点数を使用して実行される段階410で開始される。段階420で、CNNのハードウエア実装に使用される重みデータの固定小数点数フォーマット及び入力データの固定小数点数フォーマットが決定される。この段階では、各層の重み及び入力データの範囲が評価される。各層の重みデータの数フォーマット及び各層の入力データの数フォーマットが決定される。段階430で、段階410で実行された訓練処理に基づいて段階420で決定された数フォーマットを使用して表されたCNNの重み値を修正するために任意的な低精度重み調整が実行される。この結果、以下に詳しく説明するように修正された重み値を発生させることができる。段階440で、浮動小数点数フォーマットを使用して表現可能な値から段階420で決定された固定小数点数フォーマットを使用して表現可能な値に重み値及び/又は入力データを変換するために量子化段階が実行される。
図4の段階410で、CNNの訓練フェーズが実行される。訓練フェーズは、典型的には、訓練データセットに基づくCNNの層の各々の重み値の最適化を伴う。訓練フェーズの結果として、CNNの層を定義する重みのセットが生成及び格納される。訓練フェーズは、CNNのハードウエア実装の発生の前にかつそれとは別に実行することができる。例えば、個別の物理デバイスを使用してCNNの訓練を実行することができる。CNNのハードウエア実装の発生は、CNNを定めるのに使用される値の知識に影響を受ける場合がある。例えば、重みのサイズ及び数は、CNNのハードウエア実装に実施される係数バッファ及び入力バッファのサイズに影響を与える場合がある。訓練フェーズは、典型的には発生された重みが浮動小数点数になるように浮動小数点数フォーマットで実行される。
CNNを定義する浮動小数点重みを生成した状態で、本方法は段階420に進む。段階420で、重みデータ及び入力データに対して各層に使用される数フォーマットが決定される。特定の層に対する数フォーマットを識別する処理を説明する図6cに関して段階420で実行される処理を詳細に説明する。従って、図6cの処理は、CNNの各層に対して繰り返される。一般的に、段階420で重み及びデータ範囲選択が行われ、この範囲を使用して数フォーマットが決定される。
段階421で層の各々に対してCNNに使用される(及び段階410で生成された)重みの値の範囲は、各層に対するフィルタ重み値の範囲(すなわち、分布)の推定値を取得するために解析される。更に、典型的な入力データ値の対応する解析が、各層に対する入力データ値の分布を推定するために解析される。重み及び入力データ値の推定された分布を使用して、各層に対する重み及び入力データ値を表す場合に使用する最適化数フォーマットが決定される。入力データ値の推定された分布は、例えば、CNNに使用する訓練データセット又は典型的な入力の既知のサンプルに基づく場合がある。CNNがビジョン用途に使用される場合に、典型的な入力の分布を推定するのに使用される入力データは、サンプル入力画像の形態を取ることができる。固定小数点数フォーマットによって表される値の範囲を決定するために、各層に使用される重み及びデータの分布に関する情報を取得するための重み及びデータの統計的解析を実行することができる。
個別の固定小数点数フォーマットが、各層の重みデータ及び入力データに対して決定される。上述のように、層の入力データは、前の層の出力から形成される(第1の層を除いて)。従って、層の値の範囲は異なる場合があり、従って、数フォーマットは層によって異なる場合がある。一部の構成では、共通の固定小数点数フォーマットを層の間で共有することができる。
段階421で、固定指数値が層の重みに対して決定される。CNNのハードウエア実装に使用される(及び以下に詳しく説明する)固定小数点数フォーマットは、符号付き整数仮数及び共通固定2のべき乗指数を使用する。固定小数点フォーマットは、整数ビット及び指数の数によって定められる。使用される符号付き整数のタイプは実施間で異なる場合がある一方で、本出願では2の補数が使用されるが、他の符号付き数フォーマットを使用することもできる。数フォーマットはまた、大域的に定義されたビット長に基づいて設定された固定ビット長仮数に基づくことができる。
上述のように、図4の段階420で、数フォーマットがCNNの各層の重みデータ及び入力データに対して決定される。図6cの方法420の段階421で、CNN層内の重み値の範囲を表す固定指数が決定され、同じCNN層の入力データの範囲を表す固定指数が決定される。これについては以下に詳しく説明する。
図5a及び5bは、CNNの重み値の例示的分布を示している。特に、図5a及び5bは、CNNの重み値の例示的ヒストグラムを示し、重み値の異なる広がりを見ることができる。
図5aは、ハードウエア実装に実施される例示的CNNの第2の層(層2)の重み値の分布を示している。図5aを見て分るように、層2の重み値は、ゼロの値の周りに集中しており、約-0.25から約0.25に広がる。
図5bは、同じCNNの55番目の層(層55)の重み値の別の例示的分布を示している。層55の重み値もゼロの値の周りに集中しているが、約-0.1から約0.1の小さい差を有する。これらの2つの層内の重み値の範囲が異なるので、層55に使用される重み値に異なる付番フォーマットを使用して層2の重みの範囲を表すことができる。データを表すのに利用することができるビットの予め決められた数が与えられると、表現される値の範囲に応じて精度を提供することができる。
特定の層の重みに対する適切な数フォーマットを決定するために、層で表される重みの値の範囲に関する決定が上述のように行われる。段階412の第1の段階は、表現されることになる層の重みの分布における値の全範囲を可能にする2のべき乗の指数(すなわち、固定指数値)を決定する段階を含む。特定の層内の重み値が-0.1から0.1に分布する例では、2-3=0.125及び-2-3=-0.125であるので、値-3の指数の2のべき乗を使用することができ、これは完全に可能な値の範囲を含有する。選択された指数が値の範囲を完全に網羅する必要はないが、逆に範囲の許容可能なカバレージの予め決められたレベルを提供することができることは理解されるであろう。考えられる正確な尺度は、使用される統計的方法に依存する。当業者は、関わっている値の範囲を識別するための様々な手法を知っているであろう。別の例では、表現される値の範囲が-0.25から0.25(図5aに図示)である場合に、2-2=0.25及び-2-2=-0.25であるので、-2の指数値を使用することができる。
本明細書に説明する方法では、この指数値は、以下に詳しく説明するように2の補数仮数表現での「符号」ビットであると考えることができる有効な「MSB位置」を形成する。
「符号」ビットを識別した状態で、全ての層にわたって、すなわち、ハードウエア内のCNNの実装に大域的にわたって重み/入力データの表現に対してCNNに使用するために事前に割り当てられたビットの数に基づいて、この層内の重み値に使用される指数及び仮数フォーマットを決定することができる。言い換えれば、ビットの大域的固定数が、全CNNにわたって定められ、各層の重みを表すための数フォーマットを決定するのに使用される。以下の例では、重みを表すためにネットワーク全体にわたって割り当てられたビットの数が4ビットであると仮定する。他の例示的CNN実装は、ビットの異なる数を使用することができる。
図6cの方法420は、段階421から422に進み、段階422で段階421で決定された固定指数値がシフトされる。段階422は、「符号」ビットの右に指数の数を計数する段階(又は言い換えるとシフトする段階)を含む。特に、指数は、到達した指数値である「LSB指標」を識別するために右にn-1(ここでnはCNN内の重み値-例えば、4ビットを格納するために事前に定義されたビットの数である)値に計数(又はシフト)される。この例では、「LSB指標」は、以下に示すように-6であり、ここでn=4である。
(表)
Figure 0007348971000004
「LSB指標」の値を使用して数の固定小数点表現の指数値、すなわち、整数*eを定めることができる。
指数値のシフトを実行した状態で、上記数フォーマットの指数eは、CNNで値を表すのに使用されるビットの事前に定義された数に基づいて指数をシフトすることによって決定されたシフトLSB指標に設定される。従って、数フォーマットは、シフト指数値及び値「整数」に使用されるビットの数によって定義される。値「整数」は、nビットを使用して格納された整数値を表し、ここでnは、重み及び/又は入力データ(例えば、大域的に定められたビットの数)を格納するのに使用される予め決められたビットの数である。固定小数点フォーマットに変換される値では、値の整数成分の値は、数フォーマットの決定されたeに基づいて計算される。
上述の表に示す例では、e=-6及び整数が4ビット整数を使用して表されるように固定される。従って、4ビットを使用して、2eによって乗算される値を決定することができる。上述の例を使用して、「0.078125」の浮動小数点値を表現しなければならない。上記に定義された例示的付番フォーマットを使用すると、e=-6及び整数が4ビットを含む場合に、値「0.078125」をビット「01012」を使用して表現することができる。この値は、2の補数、すなわち、値5における0101の値を値2e(すなわち、2-6)で乗算することによって識別され、0.078125を与える。
同様に、e=-6である同じ例を使用すると、「-0.046875」の浮動小数点値を2の補数、すなわち、値-3で4つのビット「1101」だけを使用して表現することができる。理解されるように、与えられた層に対する異なる重み値の数を同じ数フォーマットを使用して表現することができる。同様に、整数成分を表すのに使用されるビットの数nを大域的に定めることができる。数フォーマットの指数値eが特定の層の全ての重みにわたって共通であるので、この層に数を一度定義するために指数値を格納するだけでよい。同様に、ビットの数nは、一度格納するだけでよい。従って、指数値eは、データポイントの値(例えば、重み又は入力データ項目)自体が格納される度に格納する必要はない。更に、この層内の各重み又は入力データ値には、Qフォーマットで同じ値を表すのに使用されるビットの数よりも小さい事前に定義されたビットの数nを割り当てることができる。他の整数(仮数)表現が可能であるが(符号及び大きさなど)、2の補数が本明細書に説明する例では使用される。
各層では、指数値(本明細書ではLSB値とも呼ぶ)を決定及び格納することができる。更に、各層の重みの値を新しい数フォーマットによって定義された値の1つに量子化することができる。これに関しては下記に説明する。上述のハードウエア実装を参照すると、各層のLSB値(指数値)を外部メモリに格納し、以下に詳細に説明するように値を畳み込みエンジンに渡すことによってハードウエア実装を指令復号器が制御することを可能にするために指令復号器に渡すことができる。
図6cを参照すると、段階422で層の特定の値範囲を表すのに使用される固定指数が重みデータに対して識別され、指数値が重み値の数フォーマットを定義するために既にシフトされている。上述の処理は、入力データ値の範囲に対して繰り返される。例えば、入力データ値の固定指数値は、段階423で特定の層の入力データ値の範囲に基づいて決定される。次に、決定された指数値は、段階424で大域的に定義されたビット幅に基づいてシフトされ、この層の入力データ値の数フォーマットを定義する。
図6cの処理は、いくつかのシフトされた指数値が各層の重みデータ及び入力データの各々に決定されるまで繰り返される。個別の指数値ej wが複数の層の各層jの重み値に対して決定され、別の個別の指数値ej jが複数の層の各層jの入力データに対して決定されることは理解されるであろう。
浮動小数点フォーマット内の数を固定小数点フォーマットに変換する類似の処理は、CNNで処理される入力データに対して実行される。層2及び55に対するデータ値の例示的分布が図5c及び5dそれぞれに示されている。CNNの第1の層に対して、CNNの訓練を実行するのに使用される訓練データセットを使用して第1の層のLSB値(指数値)を定義することができることは理解されるであろう。重みに対するのと類似の方式で、統計的解析が実行され、LSB値(指数値)が各層に対して決定される。
しかし、CNNの中間層に渡されるデータに対して、生成された結果を即座に捕捉し、すなわち、次の層への入力値を形成する層からの出力値を決定しなければならない。図5a及び5bに示すように、中間層におけるデータ値の分布は、層の間で大きく異なる場合がある。従って、データの表現におけるフォーマットの範囲を最適化することが望ましい。
重みの値を表現するための数フォーマットの決定とは異なり、各層内のデータ値の数表現は、演算中の実際の入力データが未知であるので、各中間層で生成されるデータの予想される範囲に関する推定に基づくものと考えることができる。
CNNの各層で予想される入力データの値の範囲を決定するための1つの方式は、生成されたCNNを通じて訓練データセットを渡し、各層で生成された値を捕捉することである。訓練データセットは、予想される入力の値に関する指示を与える代理の入力値を含有する。捕捉された値から、可能な値の範囲の推定が行われ、本方法は、重みに関して上述したように進む。
段階420を完了した状態で、新しい数フォーマットがCNNの各層に使用される重み及び入力データに対して定義され、CNNをこれらの数フォーマットによる方式でハードウエア200に実施することができる。CNNをハードウエアに実施するために、段階410で生成された浮動小数点重みを例えば量子化の処理を使用して新しい数フォーマットに変換することができる。新しい数フォーマットは、ハードウエア実装によってロード可能な構成データとして格納し、値がCNN内で格納又は処理される方式を定義することができる。例えば、この方式を利用することにより、図2のハードウエア実装200は、係数及び入力バッファの利用可能なスペースを十分に利用して、これらの値が格納される精度を最適化すると同時にそれぞれの係数及び入力バッファに重み及び入力データ値の数を格納することができる。従って、外部メモリ対話の数を低減することができる。
量子化
任意的な低精度重み調整430段階を量子化/変換値に関して実行することができる。重み調整を実行するために、浮動小数点数は、決定された固定小数点数フォーマットに従って量子化すべきである。
図4の段階420に従ってCNNに使用される数フォーマットを生成した状態で、量子化440が、上述の固定小数点数フォーマットによって表現可能な値の1つにCNNに使用される重み値を量子化するために実行される。新しい固定小数点フォーマットで表現される重み値は、オリジナルの浮動小数点フォーマットに関する低減された精度を有する場合があるので、量子化誤差が生じることがある。特定の層内の重み値は、以下の式に従って量子化される。
Figure 0007348971000005
上述の式では、値Xmax及びXminは、クランピングによって達成された固定小数点フォーマットの最高及び最低表現可能数をそれぞれ表している。関数Q(α)は、以下に説明する最近傍丸め操作関数のような丸め操作関数を表している。上述の式は、新しい固定小数点数フォーマットで達成することができる最近傍利用可能固定小数点数に値を量子化し、範囲の外側の入力に対する最も近い表現可能値にクランピングする。ゼロに向けた丸め操作は、データがネットワークを進んでいく場合に量子化誤差を悪化させることがある。最近傍レベル丸め操作は、量子化誤差及び誤差の悪化を低減する。
最近傍量子化の使用例では、全ての値が-1と1の間の均一分布から引き出される場合に2つのランダム仮数A及びBを考える。-4のLSB値(指数値e)を有する8ビット固定小数点数が使用される。
Figure 0007348971000006
は浮動仮数であり、
Figure 0007348971000007
は、対応する8ビット固定小数点仮数である。
Figure 0007348971000008
従って、最近傍からゼロに向けた丸め操作への切り換えは、浮動と固定小数点仮数の間の差を二倍にするが、この積は、量子化誤差の複合に起因してより大きい誤差を有する。この影響は、大きい仮数及び多数の行列乗算によって悪化する。
段階440で新しい固定小数点数フォーマット(各層に対して1フォーマット)に対応する値に各層内の重み値を量子化した状態で、新しく量子化された重みは、段階450に示すように処理のためのCNNのハードウエア実装によってアクセス可能なメモリに格納される。例えば、量子化された重みは、CNNのハードウエア実装に接続するメモリに格納される。CNNのハードウエア実装200は、各層を処理する時にメモリから重み値をロードし、生成された数フォーマットで重み値に対して演算することができる。
入力データのための層当たりの数フォーマットも決定され、CNNのハードウエア実装への入力データ、すなわち、CNNの第1の層への入力も、決定された数フォーマットでメモリに格納される。一部の構成では、各層の入力データに使用される数フォーマットを示すデータも、CNNのハードウエア実装によってアクセス可能なメモリに格納される。従って、CNNのハードウエア実装は、特定の層に対する数フォーマットを読み取ることができる。次に、CNNのハードウエア実装は、処理される現在の層に対する数フォーマットに従って入力データを処理するように構成することができる。続いて生成されるデータ、すなわち、次の層への入力を形成する各層で生成されたデータも定義され、かつメモリに格納された数フォーマットに基づいてこの層に対するフォーマットで処理される。
数計算
上述の固定小数点付番フォーマットは、整数及び指数固定小数点計算の整数ベースの実施に使用することができる。
第1の固定小数点フォーマット内の数aから第2の異なる方式c(すなわち、aのビット及び/又は指数の数は、cのビット及び/又は指数の数とは異なる)の同じ数への変換は、整数における計算シフト及びオーバーフローの場合はクランプを必要とする。≫e及び≪eは、それぞれeビットの右及び左シフトである。aiは、aの整数部分であり、eaはaの指数である。
正オーバーフローが起こる場合に、結果はXmaxにクランピングされるべきであり、負オーバーフローが起こる場合に、Xminにクランピングされるべきである。Xmaxは、固定小数点フォーマットにおける最高表現可能数であり、Xminは、最低表現可能数である。2の補数では、Xmax=011...1及びXmin=100...0である。
演算数a及びbのフォーマット(すなわち、ビットn及び指数eの数)及び結果cが全て同一である場合に、基礎演算は以下のようなる。
(表)
Figure 0007348971000009
上述の演算の全てが整数計算である。オーバーフローの場合に、数は、Xmax又はXminにクランピングされる。乗算の場合に、結果の指数は、ビットをシフトする代わりに調節することができ、数を異なる指数で乗算する時に有用になる。
(表)
Figure 0007348971000010
異なるフォーマットによる数の加算及び減算の場合に、演算数のタイプは、まず結果のタイプに変換すべきである。
固定小数点畳み込み層
低精度固定小数点フォーマットで畳み込み層を実施する段階は、いくつかの理由でCNNで畳み込み層を実施する改善された方法を提供することができる。例えば、数ビットをCNNのハードウエア実装を演算するのに使用されるメモリ帯域幅を低減する外部メモリとCNNのハードウエア実装との間で転送しなければならない。上述の整数計算論理部は、畳み込み操作を実施するのに必要なハードウエア論理部のサイズ及び複雑さを低減する畳み込み計算(上述の畳み込みエンジンなど)内に実施することができる。更に、重みデータ及び入力データを格納するのに必要なビットの数が、対応する浮動小数点数表現よりも又は上述のQフォーマット固定小数点数表現よりも少ないので、CNNのハードウエア実装に必要なバッファはより小さい。図2に対応するCNNの上述のハードウエア実装を参照すると、係数及びデータバッファ、並びに累積バッファを小さくすることができる。
生成された数フォーマットに従って畳み込み計算を実行するように構成された畳み込みブロック700の図式の実施例が図7に関して示されている。数フォーマットの指数を形成し、層毎に一度だけ格納されるデータ720a及び重み720b指数は、畳み込みが行われる前にCNNのハードウエア実装に送られる(重み及びデータビットの数n及びmは、ネットワーク全体に対して固定されると仮定される)。上述の例示的ハードウエア実装では、数フォーマットの指数を指令として指令復号器220に提供し、各層で必要とされる時に使用することができるように格納することができる。
畳み込み演算ハードウエア要素730は、重みとデータベクトルの間の内積を実行するように構成され、換言すると、畳み込み演算ハードウエア要素730は、図3に関して図示のように乗算と累積から全て構成される。これは、整数計算で実行することができ、結果を累積バッファに格納することができる。累積バッファに必要な指数値は、データ及び重みの両方から指数を加算することによって計算することができる。入力データは、入ってくる指数及びデータ指数に応じて正確な範囲に入れる必要があり、これは、層への入力での「刈り取り」ユニット710の目的である。
上述の構成では、累積器サイズは、nビットとmビット整数間の内積の結果を収容するのに十分大きくなくてはならない。一例では、データAに割り当てられる予め決められた固定ビット長を9ビットにすることができ、重みBに割り当てられる予め決められたビット長を5ビットにすることができる。この例では、累積器は、少なくとも13ビットのサイズにしなければならず、可能であれば畳み込みカーネルのサイズに応じてより大きくしなければならない。各層では、この層の値を表すのに使用される指数を変えることができる。従って、A及びBは層によって異なる場合がある。
重み調整
CNNのハードウエア実装に使用する構成データを生成して数フォーマットを定義する方法が上記に示されている。上述のように、CNNを定義する重みを低精度ターゲットに適応させることができる重み調整430の任意段階を図4の方法の一部として実施することができる。段階430は、段階440で得られた量子化値を受信する段階及びCNNの更に別の訓練を実行することによって重み値を修正する段階を伴う。重み値の調整は、本発明の開示の固定小数点数表現を使用して実施されるCNNの分類誤差を低減することができる。本明細書に説明する例では、各々が複数の重み値を有する複数の層によって定義される事前訓練されたネットワークは、図4の段階410で上述のように従来の浮動小数点ソフトウエアツールを使用して準備されていたと仮定する。更に、固定小数点数フォーマットの重み及び入力データ指数が段階420で決定され、重み及びデータの事前定義されたビット長が設定されていたと仮定する。
CNNの訓練(段階410で行われる訓練など)は、典型的には、分類精度が最大化されるまで数十万の解法段階(大きいネットワークの場合は数百万)にわたって行われる。各段階中に、一般的に勾配降下又はこの変形を使用して、分類誤差が最小になるように重みを更新する前に分類誤差がバッチ(一部の用途では50-100画像)に統合される。
本発明の開示の一部の例では、重み調整は、更に別の重み調節を提供するための訓練の追加の段階である。重み調整訓練フェーズは、初期浮動小数点訓練よりも遥かに少ない段階しか必要としないが、決定された固定小数点数フォーマットを使用する時には分類誤差の低減を可能にする。浮動小数点から固定小数点フォーマットへの有効な量子化は、格納された重み値の精度の変化をもたらすことができることは理解されるであろう。重みデータを表すのに使用されるビットの数に応じて、重み値は、対応する浮動小数点表現に対して量子化することができる。重み調整の方法は、変換された重み値に基づいてCNNを再訓練するのに使用される。
より具体的には、N段階毎に、CNNの重みの部分集合Fは、浮動小数点数フォーマットから本発明の開示の固定小数点数フォーマットに重み値を変換するための上述の量子化方法を使用してその最近傍量子化レベルに設定される。一部の実施形態において、重みの部分集合は、重みの小さい割合を表している。量子化される重みは、ランダムに選択することができる。次に、ネットワークは、量子化によって導入される分類誤差を低減するために更にN段階訓練される。N及びFの適切な選択に対して、全体としてネットワークの量子化誤差が時間と共に低減され、同時に分類精度を維持し、重みヒストグラムが望ましい櫛状関数に収束する。図6aは、重み調整の前の重み値の例示的分布を示し、図6bは、重み調整後の重み値の例示的分布を示している。
重み調整方法のための例示的疑似コードを以下に示す。
Figure 0007348971000011
上述の図4の段階450に従って調整された重み値は、メモリにロードしてCNNのハードウエア実装によってアクセス可能である。
本明細書に説明する新しい数フォーマットを生成する方法が図2に示すハードウエア実装に適用可能であることは理解されるであろう。しかし、本明細書に説明する方法はまた、CNNの他のハードウエア実装、並びにCNNのソフトウエア実装に適用可能であり、固定小数点計算が実行される。本明細書に説明する数フォーマットをCNNを通じて利用する必要はなく、CNNの一部分だけに使用することができることも理解されるであろう。例えば、CNNの内部バッファ内の重み及び入力データ値を格納するために数フォーマットを使用することができ、計算を実行するように修正又は拡張することができる。
CNNに使用される数フォーマットを決定するために本明細書に説明する方法が重み及び入力データに制限されるようには考えないことは理解されるであろう。勿論、層毎ベースで(又は勿論、複数の層にわたって)定義される多くの他の層パラメータには、値の分布を評価することによって上述の方法で数フォーマットを割り当てることができる。例えば、上述の方法に従って決定された通りにバイアスを数フォーマットに格納することができる。更に、バッチ正規化の処理は、上述の方法に従って適用することができる倍率を使用する。本明細書に説明するいずれの任意的な特徴もこれらの層パラメータに適用することができる。
これに加えて、上述の方法は層全体に対する固定指数値を決定することに関連し、上述の方法はまた、1つの層の共有される指数ではなく1つのフィルタに基づいて適用可能である。例えば、重みは、層のフィルタ間でかなり異なる場合がある。フィルタの第1の部分集合にある数フォーマット及びフィルタの第2の部分集合に異なる数フォーマットを生成することにより、数フォーマットが、1つの層の共有される指数方式とは異なる1つのフィルタで定義される。従って、範囲が最も大きい係数を有するフィルタによって支配されることがないので、小さい係数を有するフィルタの高い精度を提供する。フィルタ毎の方法を融合された方式で層毎の方法に組み合わせることができ、それによって一部の層だけが固定小数点フォーマットを有し、一部のフィルタが固定小数点フォーマットを有する。この手法の実施の任意的特徴及び方式は、上述の類似の特徴に対応する。これらの手法は、上述のハードウエア実装200に実施することができる。
図8は、本明細書に説明するCNNのハードウエア実装を実施することができるコンピュータシステムを示している。更に、図8のコンピュータシステムのようなコンピュータシステムは、CNNのハードウエア実装によって使用する数フォーマット及び/又は変換された値を格納するために図4及び/又は6の方法を実施するように構成することができる。図4及び/又は6の方法を実施するように構成されたコンピュータシステムは、図2に示すCNNのハードウエア実装を実施するように構成されたコンピュータシステムとは異なる場合があることは理解されるであろう。
このコンピュータシステムは、CPU802、GPU804、メモリ806、及びディスプレイ816、スピーカ818、及びカメラ817のような他のデバイス814を含む。処理ブロック810は、GPU804上に実施される。他の例では、処理ブロック810は、CPU802上に実施することができる。処理ブロック810はまた、個別のユニット(図示せず)に実施することができる。処理ブロック810は、ハードウエア実装200を実施するように構成されたデジタル論理部を含むことができる。ハードウエア実装200は、GPU804又はCPU802のような外部プロセッサ、又は示していない別のプロセッサによって制御することができる。コンピュータシステムの構成要素は、通信バス802を通じて互いに通信することができる。ストア812は、メモリ806の一部として実施される。
CNNのハードウエア実装200及び図1から8に示すCNNのハードウエア実装を構成する方法は、いくつかの機能ブロックを含むように示されている。これは単に概略であり、そのようなエンティティの異なる論理要素間の厳密な区分を定めるように意図していない。各機能ブロックは、あらゆる適切な方法で提供することができる。CNNのハードウエア実装によって形成される本明細書に説明する中間値は、あらゆる点でCNNのハードウエア実装によって物理的に生成する必要はなく、単に入力と出力間でCNNのハードウエア実装によって実行される処理を便宜上説明する論理値を表すことができることは理解されるものとする。
本明細書に説明するCNNのハードウエア実装は、集積回路のハードウエアに具現化することができる。本明細書に説明するCNNのハードウエア実装は、本明細書に説明する方法のいずれも実行するように構成することができる。一般的に、上述の機能、方法、技術、又は構成要素のいずれも、ソフトウエア、ファームウエア、ハードウエア(例えば、固定論理回路)、又はこれらのあらゆる組合せに実施することができる。「モジュール」、「機能」、「構成要素」、「要素」、「ユニット」、「ブロック」、及び「論理部」という語は、ソフトウエア、ファームウエア、ハードウエア、又はこれらのあらゆる組合せを一般的に表すために本明細書に使用される場合がある。ソフトウエア実装の場合に、モジュール、機能、構成要素、要素、ユニット、ブロック、又は論理部は、プロセッサで実行される指定されたタスクを実行するプログラムコードを表している。本明細書に説明するアルゴリズム及び方法は、プロセッサにアルゴリズム/方法を実施させるコードを実行する1又は2以上のプロセッサによって実施することができる。コンピュータ可読ストレージ媒体の例には、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、光学ディスク、フラッシュメモリ、ハードディスクメモリ、及び磁気、光学などの技術を使用することができる他のメモリデバイスが含まれ、命令又は他のデータを格納して、機械によってアクセス可能である。
本明細書に使用するコンピュータプログラムコード及びコンピュータ可読命令という語は、機械言語、変換言語、又はスクリプト言語で表現されるコードを含むプロセッサに対して実行可能なコードのいずれの種類も指している。実行可能コードは、バイナリコード、機械コード、バイトコード、集積回路を定めるコード(ハードウエア記述言語又はネットリストなど)、及びC、Java、又はOpenCLのようなプログラミング言語コードで表されるコードを含む。実行可能コードは、例えば、仮想機械又は他のソフトウエア環境で適切に実行、処理、解釈、コンパイル、実行された時に、実行可能コードがサポートされたコンピュータシステムのプロセッサをしてコードによって指定されたタスクを実行させるあらゆる種類のソフウエア、ファームウエア、スクリプト、モジュール、又はライブラリとすることができる。
プロセッサ、コンピュータ、又はコンピュータシステムは、命令を実行することができる処理機能を有するあらゆる種類のデバイス、機械、又は専用回路、又はこれらの集合又は一部とすることができる。プロセッサは、CPU、GPU、システムオンチップ、状態機械、媒体プロセッサ、特定用途向け集積回路(ASIC)、プログラマブル論理アレイ、フィールドプログラマブルゲートアレイ(FPGA)のようなあらゆる種類の汎用又は専用プロセッサとすることができる。コンピュータ又はコンピュータシステムは、1又は2以上のプロセッサを含むことができる。
望ましい機能を実行するために集積回路を設計するのに又はプログラマブルチップを構成するのに使用される場合に、HDL(ハードウエア記述言語)ソフトウエアのような本明細書に説明するハードウエアの構成を定めるソフトウエアを含有することも意図される。すなわち、集積回路製造システムにおいて処理される時に本明細書に説明する方法のいずれかを実行するように構成されるCNNのハードウエア実装を製造するように、又は本明細書に説明するあらゆる装置を含むCNNのハードウエア実装を製造するようにシステムを構成する集積回路定義データセットの形態でコンピュータ可読プログラムコードを符号化するコンピュータ可読ストレージ媒体を提供することができる。集積回路定義データセットは、例えば、集積回路記述とすることができる。
従って、本明細書に説明するようなCNNのハードウエア実装を集積回路製造システムで製造する方法を提供することができる。更に、集積回路製造システムで処理された時にCNNのハードウエア実装を製造する方法を実行させる集積回路定義データセットを提供することができる。
集積回路定義データセットは、例えば、ネットリスト、レジスタ転送レベル(RTL)コードとして、Verilog又はVHDLのようなハイレベル回路表現として、及びOASIS(RTM)及びGDSIIのような低レベル回路表現として含むあらゆるレベルの集積回路を定めるハードウエア記述言語としてプログラマブルチップを構成するためのコードとしてのコンピュータコードの形態とすることができる。表現によって定義されるように集積回路の製造定義を生成するために、論理的に集積回路(RTLなど)を定めるハイレベル表現は、回路要素の定義及びこれらの要素を結合するための規則を含むソフトウエア環境の関連で集積回路の製造定義を生成するように構成されたコンピュータシステムにおいて処理することができる。機械を定めるためにコンピュータシステムにおいて実行するソフトウエアを備えた場合に一般的であるように、1又は2以上の中間ユーザ段階(例えば、指令、変数などを提供)をこの集積回路の製造定義を生成するために集積回路を定めるコードを実行するための集積回路の製造定義を生成するように構成されたコンピュータシステムに対して要求することができる。
CNNのハードウエア実装を製造するように本発明のシステムを構成するために集積回路製造システムにおいて集積回路定義データセットを処理する実施例を図9に関してここで説明する。
図9は、レイアウト処理システム904及び集積回路発生システム906を含む集積回路(IC)製造システム902の実施例を示している。IC製造システム902は、IC定義データセット(例えば、本明細書の実施例のいずれかで説明したCNNのハードウエア実装を定める)を受信し、IC定義データセットを処理し、かつIC定義データセットに従ってICを発生させる(例えば、本明細書の実施例のいずれかに説明したCNNのハードウエア実装を具現化する)ように構成される。IC定義データセットの処理は、本明細書の実施例のいずれかで説明したCNNのハードウエア実装を具現化する集積回路を製造するようにIC製造システム902を構成する。
レイアウト処理システム904は、IC定義データセットを受信及び処理して回路レイアウトを決定するように構成される。IC定義データセットから回路レイアウトを決定する方法は、当業技術で既知であり、例えば、論理構成要素(例えば、NAND、NOR、AND、OR、MUX、及びFLIP-FLOP構成要素)の点で、発生される回路のゲートレベル表現を決定するためにRTLコードを合成する段階を含有することができる。回路レイアウトは、論理構成要素の位置情報を決定することによって回路のゲートレベル表現から決定することができる。これは、回路レイアウトを最適化するために自動的に又はユーザの介入により実行することができる。レイアウト処理システム804が回路レイアウトを決定した時に、レイアウト処理システム904は、回路レイアウト定義をIC発生システム906に出力することができる。回路レイアウト定義は、例えば、回路レイアウト記述とすることができる。
IC発生システム906は、当業技術で既知のように回路レイアウト定義に従ってICを発生させる。例えば、IC発生システム906は、ICを発生させるための半導体素子製造工程を実施することができ、半導体素子製造工程は、半導体材料から構築されたウェーハに電子回路が徐々に生成されていく過程のリソグラフィック及び化学的処理段階の複数段階シーケンスを含有することができる。回路レイアウト定義は、回路定義に従ってICを発生させるためのリソグラフィック処理に使用することができるマスクの形態とすることができる。これに代えて、IC発生システム906に提供される回路レイアウト定義は、ICを発生させる場合に使用する適切なマスクを形成するためにIC発生システム906を使用することができるコンピュータ可読コードの形態とすることができる。
IC製造システム902によって実行される異なる処理は、1つの位置で例えば1つの当事者によって全てを実施することができる。これに代えて、IC製造システム902は、処理の一部が異なる位置で実行することができるように分散システムとすることができ、異なる当事者によって実行することができる。例えば、(i)発生される回路のゲートレベル表現を形成するためにIC定義データセットを表すRTLコードを合成する段階、(ii)ゲートレベル表現に基づいて回路レイアウトを発生させる段階、(iii)回路レイアウトに従ってマスクを形成する段階、及び(iv)マスクを使用して集積回路を製造する段階の一部は、異なる位置で及び/又は異なる当事者によって実行することができる。
他の実施例では、集積回路製造システムにおける集積回路定義データセットの処理が、回路レイアウトを決定するためにIC定義データセットを処理する必要なくCNNのハードウエア実装を製造するように本発明のシステムを構成することができる。例えば、集積回路定義データセットは、FPGAのような再構成可能プロセッサの構成を定めることができ、このデータセットの処理は、この定義された構成を有する再構成可能プロセッサを生成するように(例えば、FPGAに構成データをロードすることにより)IC製造システムを構成することができる。
一部の実施形態において、集積回路製造定義データセットが、集積回路製造システムにおいて処理された時に、集積回路製造システムに本明細書に説明したデバイスを発生させることができる。例えば、集積回路製造定義データセットによる図9に関して上述した方法での集積回路製造システムの構成は、本明細書に説明したデバイスを製造させることができる。
一部の実施例では、集積回路定義データセットは、データセットで定義されたハードウエア、又はデータセットで定義されたハードウエアと組み合わせて実行されるソフトウエアを含むことができる。図9に示す実施例では、集積回路の製造段階で、集積回路定義データセットで定義されたプログラムコードに従ってこの集積回路にファームウエアをロードするか、又は他に集積回路と共に使用するプログラムコードを集積回路に提供するようにIC発生システムを集積回路定義データセットによって更に構成することができる。
本出願人は、本明細書により、これらの特徴又は組合せが当業者の共通する一般的な知識の点から全体として本明細書に基づいて実行することができる程度まで、そのような特徴又は特徴の組合せが本明細書に開示するいずれの問題も解決するか否かにかかわらず、本明細書に説明する各個々の特徴及び2又は3以上のこれらの特徴のいずれの組合せも個別に開示している。以上の説明の観点から、様々な修正を本発明の範囲内で行うことができることは当業者には明らかであろう。
400 数フォーマットを定義する方法
410 浮動点訓練
420 数フォーマットの決定
430 低精度重み調整
440 量子化

Claims (18)

  1. 畳み込みニューラルネットワーク(CNN)を実装するためのハードウエアであって、
    畳み込み演算ハードウエア要素(730)を備える畳み込みブロック(700)を備え、前記畳み込み演算ハードウエア要素(730)は、
    CNNの層に対し第1の重みベクトル(720b)と第1のデータベクトル(720a)の間の第1の内積を実行し、ここで前記第1の重みベクトル(720b)は複数の整数ビット(n)と指数(B)によって定義される固定小数点フォーマットにおける複数の重み値を有し、前記第1のデータベクトル(720a)は複数の整数ビット(m)と指数(A)によって定義される固定小数点フォーマットにおける複数のデータ値を有し、
    前記第1のデータベクトル(720a)のデータ値に対する指数(A)を示す第1のデータ指標を受け取り、
    前記第1の重みベクトル(720b)の重み値に対する指数(B)を示す第1の重み指標を受け取り、
    前記第1のデータベクトル(720a)のデータ値に対する指数(A)と前記第1の重みベクトル(720b)の重み値に対する指数(B)とを加算することによって、前記第1の内積の指数を計算する、
    よう構成されている、ハードウエア。
  2. 畳み込み演算ハードウエア要素(730)は、さらに、
    CNNの他の層に対し第2の重みベクトルと第2のデータベクトルの間の第2の内積を実行し、ここで前記第2の重みベクトルは複数の整数ビットと指数によって定義される固定小数点フォーマットにおける複数の重み値を有し、前記第2のデータベクトルは複数の整数ビットと指数によって定義される固定小数点フォーマットにおける複数のデータ値を有し、
    前記第2のデータベクトルのデータ値に対する指数を示す第2のデータ指標を受け取り、
    前記第2の重みベクトルの重み値に対する指数を示す第2の重み指標を受け取り、
    前記第2のデータベクトルのデータ値に対する指数と前記第2の重みベクトルの重み値に対する指数とを加算することによって、前記第2の内積の指数を計算する、
    よう構成され、
    前記第2のデータベクトルのデータ値に対する指数と前記第1のデータベクトルのデータ値に対する指数は異なっている、請求項1に記載のハードウエア。
  3. 畳み込み演算ハードウエア要素(730)は、さらに、
    CNNの他の層に対し第2の重みベクトルと第2のデータベクトルの間の第2の内積を実行し、ここで前記第2の重みベクトルは複数の整数ビットと指数によって定義される固定小数点フォーマットにおける複数の重み値を有し、前記第2のデータベクトルは複数の整数ビットと指数によって定義される固定小数点フォーマットにおける複数のデータ値を有し、
    前記第2のデータベクトルのデータ値に対する指数を示す第2のデータ指標を受け取り、
    前記第2の重みベクトルの重み値に対する指数を示す第2の重み指標を受け取り、
    前記第2のデータベクトルのデータ値に対する指数と前記第2の重みベクトルの重み値に対する指数とを加算することによって、前記第2の内積の指数を計算する、
    よう構成され、
    前記第2の重みベクトルの重み値に対する指数と、前記第1の重みベクトルの重み値に対する指数は異なっている、請求項1又は2に記載のハードウエア。
  4. 前記第1のデータベクトルのデータ値に対する整数ビットの数と、前記第2のデータベクトルのデータ値に対する整数ビットの数は同じである、請求項2又は3に記載のハードウエア。
  5. 前記第1の重みベクトルの重み値に対する整数ビットの数と、前記第2の重みベクトルの重み値に対する整数ビットの数は同じである、請求項2乃至4のいずれかに記載のハードウエア。
  6. 前記第1の重みベクトルの重み値に対する指数と、前記第1のデータベクトルのデータ値に対する指数は異なっている、請求項1乃至5のいずれかに記載のハードウエア。
  7. 前記第1の重みベクトルの重み値に対する整数ビットの数と、前記第1のデータベクトルのデータ値に対する整数ビットの数は異なっている、請求項1乃至6のいずれかに記載のハードウエア。
  8. 前記畳み込みブロック(700)はさらに、前記内積の結果を収容できるサイズの累積器(740)を備える、請求項1乃至7のいずれかに記載のハードウエア。
  9. 前記畳み込みブロック(700)はさらに、入力データに対する指数及び前記第1のデータベクトルの前記データ値に対する指数に基づいて前記入力データから前記第1のデータベクトルを生成するよう構成された刈り取りユニット(710)を備える、請求項1乃至8のいずれかに記載のハードウエア。
  10. さらに、前記第1の重みベクトル、及び、前記第1の重みベクトルの前記重み値に対する指数を識別する前記第1の重み指標を含む指令情報を受け取るよう構成されたメモリインタフェース(210)を備える、請求項1乃至9のいずれかに記載のハードウエア。
  11. さらに、前記第1の内積を実行する前記畳み込み演算ハードウエア要素(730)の前に、前記第1の重みベクトルを格納するよう構成された係数バッファ(230)を備える、請求項1乃至10のいずれかに記載のハードウエア。
  12. 請求項10に従属する請求項11に記載のハードウエアであって、さらに、
    前記メモリインタフェース(210)から前記第1の重みベクトルを受け取るよう構成された係数バッファコントローラ(225)と、
    前記指令情報を復号し、かつ、前記係数バッファコントローラ(225)に対して、前記係数バッファコントローラ(225)が前記第1の重みベクトルを前記係数バッファ(230)に格納する方式を制御する制御情報を発令するよう構成された指令復号器(220)と、
    を備える請求項11に記載のハードウエア。
  13. さらに、入力データ又は前記第1のデータベクトルと、前記第1のデータベクトルのデータ値に対する指数及び/又は前記入力データの指数を識別する前記第1のデータ指標を含む指令情報とを受け取るよう構成されたメモリインタフェース(210)を備える、請求項1乃至12のいずれかに記載のハードウエア。
  14. さらに、前記第1の内積を実行する前記畳み込み演算ハードウエア要素(730)の前に、前記第1のデータベクトル又は入力データを格納するよう構成された1又は2以上の入力バッファ(235a~235n)を備える、請求項1乃至13のいずれかに記載のハードウエア。
  15. 請求項13に従属する請求項14に記載のハードウエアであって、さらに、
    前記メモリインタフェース(210)から前記第1のデータベクトル又は前記入力データを受け取るよう構成された入力バッファコントローラ(215)と、
    前記指令情報を復号し、かつ、前記入力バッファコントローラ(215)に対して、前記入力バッファコントローラ(215)が前記入力データ又は前記第1のデータベクトルを前記1又は2以上の入力バッファ(235a~235n)に格納する方式を制御する制御情報を発令するよう構成された指令復号器(220)と、
    を備える請求項14に記載のハードウエア。
  16. 前記畳み込み演算ハードウエア要素(730)は、乗算論理部の複数の要素及び加算論理部の複数の要素を備える、請求項1乃至15のいずれかに記載のハードウエア。
  17. 集積回路に具現化されている、請求項1乃至16のいずれかに記載のハードウエア。
  18. 請求項1乃至17のいずれかに記載のハードウエアを備えるコンピュータシステム。
JP2022006207A 2016-05-03 2022-01-19 畳み込みニューラルネットワークハードウエア構成 Active JP7348971B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1607713.3 2016-05-03
GBGB1607713.3A GB201607713D0 (en) 2016-05-03 2016-05-03 Convolutional neural network
JP2017092266A JP7013143B2 (ja) 2016-05-03 2017-05-08 畳み込みニューラルネットワークハードウエア構成

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2017092266A Division JP7013143B2 (ja) 2016-05-03 2017-05-08 畳み込みニューラルネットワークハードウエア構成

Publications (2)

Publication Number Publication Date
JP2022058660A JP2022058660A (ja) 2022-04-12
JP7348971B2 true JP7348971B2 (ja) 2023-09-21

Family

ID=56234306

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2017092266A Active JP7013143B2 (ja) 2016-05-03 2017-05-08 畳み込みニューラルネットワークハードウエア構成
JP2022006207A Active JP7348971B2 (ja) 2016-05-03 2022-01-19 畳み込みニューラルネットワークハードウエア構成

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2017092266A Active JP7013143B2 (ja) 2016-05-03 2017-05-08 畳み込みニューラルネットワークハードウエア構成

Country Status (5)

Country Link
US (5) US11144819B2 (ja)
EP (5) EP4439272A2 (ja)
JP (2) JP7013143B2 (ja)
CN (2) CN107403221B (ja)
GB (6) GB201607713D0 (ja)

Families Citing this family (159)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180053086A1 (en) * 2016-08-22 2018-02-22 Kneron Inc. Artificial neuron and controlling method thereof
FR3057090B1 (fr) * 2016-09-30 2018-10-19 Safran Identity & Security Procedes d'apprentissage securise de parametres d'un reseau de neurones a convolution, et de classification securisee d'une donnee d'entree
GB2554711B (en) 2016-10-06 2020-11-25 Imagination Tech Ltd Buffer addressing for a convolutional neural network
US10366302B2 (en) 2016-10-10 2019-07-30 Gyrfalcon Technology Inc. Hierarchical category classification scheme using multiple sets of fully-connected networks with a CNN based integrated circuit as feature extractor
US10402628B2 (en) 2016-10-10 2019-09-03 Gyrfalcon Technology Inc. Image classification systems based on CNN based IC and light-weight classifier
US10360470B2 (en) 2016-10-10 2019-07-23 Gyrfalcon Technology Inc. Implementation of MobileNet in a CNN based digital integrated circuit
US9940534B1 (en) * 2016-10-10 2018-04-10 Gyrfalcon Technology, Inc. Digital integrated circuit for extracting features out of an input image based on cellular neural networks
US10043095B2 (en) * 2016-10-10 2018-08-07 Gyrfalcon Technology, Inc. Data structure for CNN based digital integrated circuit for extracting features out of an input image
US10339445B2 (en) 2016-10-10 2019-07-02 Gyrfalcon Technology Inc. Implementation of ResNet in a CNN based digital integrated circuit
US10366328B2 (en) 2017-09-19 2019-07-30 Gyrfalcon Technology Inc. Approximating fully-connected layers with multiple arrays of 3x3 convolutional filter kernels in a CNN based integrated circuit
US11003985B2 (en) * 2016-11-07 2021-05-11 Electronics And Telecommunications Research Institute Convolutional neural network system and operation method thereof
CN106557332A (zh) * 2016-11-30 2017-04-05 上海寒武纪信息科技有限公司 一种指令生成过程的复用方法及装置
US10096384B2 (en) 2016-12-21 2018-10-09 Disco Health, LLC Artificial intelligence expert system
KR102415508B1 (ko) * 2017-03-28 2022-07-01 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
CN107124609A (zh) * 2017-04-27 2017-09-01 京东方科技集团股份有限公司 一种视频图像的处理系统、其处理方法及显示装置
US10474458B2 (en) * 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US20180330234A1 (en) * 2017-05-11 2018-11-15 Hussein Al-barazanchi Partial weights sharing convolutional neural networks
WO2019005088A1 (en) * 2017-06-30 2019-01-03 Intel Corporation HETEROGENEOUS MULTIPLIER
US10600147B2 (en) * 2017-08-22 2020-03-24 Intel Corporation Efficient memory layout for enabling smart data compression in machine learning environments
JP2019057249A (ja) * 2017-09-22 2019-04-11 富士通株式会社 演算処理装置および演算処理方法
CN109754359B (zh) 2017-11-01 2021-12-07 腾讯科技(深圳)有限公司 一种应用于卷积神经网络的池化处理的方法及系统
GB2568084B (en) * 2017-11-03 2022-01-12 Imagination Tech Ltd Error allocation format selection for hardware implementation of deep neural network
GB2568086B (en) 2017-11-03 2020-05-27 Imagination Tech Ltd Hardware implementation of convolution layer of deep neutral network
GB2560600B (en) * 2017-11-06 2020-03-04 Imagination Tech Ltd Nueral Network Hardware
CN110059811B (zh) 2017-11-06 2024-08-02 畅想科技有限公司 权重缓冲器
KR20190052893A (ko) * 2017-11-09 2019-05-17 삼성전자주식회사 뉴럴 네트워크 연산을 위한 전처리 장치 및 방법
US10929746B2 (en) * 2017-11-27 2021-02-23 Samsung Electronics Co., Ltd. Low-power hardware acceleration method and system for convolution neural network computation
US11475305B2 (en) * 2017-12-08 2022-10-18 Advanced Micro Devices, Inc. Activation function functional block for electronic devices
CN110574371B (zh) * 2017-12-08 2021-12-21 百度时代网络技术(北京)有限公司 使用硬件加速器的立体摄像机深度确定
US11216719B2 (en) * 2017-12-12 2022-01-04 Intel Corporation Methods and arrangements to quantize a neural network with machine learning
JP6789919B2 (ja) * 2017-12-13 2020-11-25 日立オートモティブシステムズ株式会社 演算システム、サーバ、車載装置
CN109961133B (zh) * 2017-12-14 2020-04-24 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
WO2019114842A1 (zh) * 2017-12-14 2019-06-20 北京中科寒武纪科技有限公司 一种集成电路芯片装置
CN109961137B (zh) * 2017-12-14 2020-10-09 中科寒武纪科技股份有限公司 集成电路芯片装置及相关产品
CN108108811B (zh) * 2017-12-18 2021-07-30 南京地平线机器人技术有限公司 神经网络中的卷积计算方法和电子设备
CN109978131B (zh) * 2017-12-28 2020-05-22 中科寒武纪科技股份有限公司 集成电路芯片装置、方法及相关产品
WO2019136764A1 (zh) * 2018-01-15 2019-07-18 深圳鲲云信息科技有限公司 卷积器及其所应用的人工智能处理装置
KR102463532B1 (ko) * 2018-01-16 2022-11-08 한국전자통신연구원 신경망 컴퓨팅 장치 및 그것의 동작 방법
US11436483B2 (en) * 2018-01-17 2022-09-06 Mediatek Inc. Neural network engine with tile-based execution
JP7107797B2 (ja) * 2018-01-29 2022-07-27 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 情報処理方法及び情報処理システム
GB201801639D0 (en) * 2018-02-01 2018-03-21 Ruff Brendan Patrick Low precision efficient multiplication free convolutional filter bank device
KR102143928B1 (ko) 2018-02-05 2020-08-13 고려대학교 산학협력단 인공 신경망 장치 및 그 동작 방법
EP3651077B1 (en) * 2018-02-13 2021-10-27 Shanghai Cambricon Information Technology Co., Ltd Computation device and method
KR102683757B1 (ko) * 2018-02-20 2024-07-10 삼성전자주식회사 심층 신경망의 학습을 수행시키는 방법 및 그에 대한 장치
JP7056225B2 (ja) * 2018-02-26 2022-04-19 富士通株式会社 演算処理装置、情報処理装置、情報処理方法、およびプログラム
JP6540841B1 (ja) * 2018-02-27 2019-07-10 富士通株式会社 演算処理装置、情報処理装置、情報処理方法、およびプログラム
JP6757349B2 (ja) * 2018-03-12 2020-09-16 株式会社東芝 固定小数点を用いて認識処理を行う多層の畳み込みニューラルネットワーク回路を実現する演算処理装置
US11429862B2 (en) 2018-03-20 2022-08-30 Sri International Dynamic adaptation of deep neural networks
KR102329590B1 (ko) * 2018-03-19 2021-11-19 에스알아이 인터내셔널 딥 신경망들의 동적 적응
JP6961640B2 (ja) * 2018-03-22 2021-11-05 南京地平▲線▼机▲器▼人技▲術▼有限公司 データ処理のシステムおよび方法
US11475306B2 (en) 2018-03-22 2022-10-18 Amazon Technologies, Inc. Processing for multiple input data sets
CN118014031A (zh) * 2018-03-22 2024-05-10 亚马逊技术股份有限公司 针对多个输入数据集的处理
US10678508B2 (en) * 2018-03-23 2020-06-09 Amazon Technologies, Inc. Accelerated quantized multiply-and-add operations
CN108509382B (zh) * 2018-03-27 2022-06-07 南开大学 一种基于fpga实现超长序列快速卷积运算的方法
US10621489B2 (en) * 2018-03-30 2020-04-14 International Business Machines Corporation Massively parallel neural inference computing elements
US10558430B2 (en) * 2018-04-17 2020-02-11 Fotonation Limited Neural network engine
US11769036B2 (en) * 2018-04-18 2023-09-26 Qualcomm Incorporated Optimizing performance of recurrent neural networks
US11210586B1 (en) 2018-04-20 2021-12-28 Perceive Corporation Weight value decoder of neural network inference circuit
US12093696B1 (en) 2018-04-20 2024-09-17 Perceive Corporation Bus for transporting output values of a neural network layer to cores specified by configuration data
US11568227B1 (en) 2018-04-20 2023-01-31 Perceive Corporation Neural network inference circuit read controller with multiple operational modes
US11501138B1 (en) 2018-04-20 2022-11-15 Perceive Corporation Control circuits for neural network inference circuit
US11783167B1 (en) 2018-04-20 2023-10-10 Perceive Corporation Data transfer for non-dot product computations on neural network inference circuit
US10977338B1 (en) 2018-04-20 2021-04-13 Perceive Corporation Reduced-area circuit for dot product computation
US11468145B1 (en) 2018-04-20 2022-10-11 Perceive Corporation Storage of input values within core of neural network inference circuit
US11586910B1 (en) 2018-04-20 2023-02-21 Perceive Corporation Write cache for neural network inference circuit
CN108805265B (zh) * 2018-05-21 2021-03-30 Oppo广东移动通信有限公司 神经网络模型处理方法和装置、图像处理方法、移动终端
CN110533175A (zh) * 2018-05-23 2019-12-03 富士通株式会社 深度学习加速的方法和设备及深度神经网络
CN110533176B (zh) * 2018-05-25 2022-10-11 赛灵思电子科技(北京)有限公司 用于神经网络计算的缓存装置及其相关计算平台
KR102589616B1 (ko) 2018-06-05 2023-10-13 라이트엘리전스 피티이. 리미티드 광전자 컴퓨팅 시스템
US11507818B2 (en) 2018-06-05 2022-11-22 Lightelligence PTE. Ltd. Optoelectronic computing systems
DE102018209901A1 (de) * 2018-06-19 2019-12-19 Robert Bosch Gmbh Recheneinheit, Verfahren und Computerprogramm zum Multiplizieren zumindest zweier Multiplikanden
DE102019205079A1 (de) 2018-06-19 2019-12-19 Robert Bosch Gmbh Selektive Deaktivierung von Recheneinheiten für künstliche neuronale Netzwerke
US12056594B2 (en) * 2018-06-27 2024-08-06 International Business Machines Corporation Low precision deep neural network enabled by compensation instructions
US10417342B1 (en) 2018-07-03 2019-09-17 Gyrfalcon Technology Inc. Deep learning device for local processing classical chinese poetry and verse
WO2020008643A1 (ja) * 2018-07-06 2020-01-09 日本電気株式会社 データ処理装置、データ処理回路およびデータ処理方法
JP7044160B2 (ja) * 2018-07-06 2022-03-30 日本電気株式会社 学習装置、学習回路、学習方法および学習プログラム
JP7119107B2 (ja) * 2018-07-30 2022-08-16 インテル コーポレイション 8ビットウィノグラード畳み込みで統計推論確度を維持する方法及び装置
US10311149B1 (en) 2018-08-08 2019-06-04 Gyrfalcon Technology Inc. Natural language translation device
WO2020039493A1 (ja) * 2018-08-21 2020-02-27 日本電気株式会社 演算最適化装置、方法およびプログラム
US11836971B2 (en) * 2018-08-23 2023-12-05 Samsung Electronics Co., Ltd. Method and device with convolution neural network processing
KR20200026455A (ko) 2018-09-03 2020-03-11 삼성전자주식회사 인공 신경망 시스템 및 인공 신경망의 고정 소수점 제어 방법
KR20200028168A (ko) * 2018-09-06 2020-03-16 삼성전자주식회사 컨볼루셔널 뉴럴 네트워크를 이용하는 컴퓨팅 장치 및 그 동작 방법
KR102633139B1 (ko) 2018-09-07 2024-02-02 삼성전자주식회사 데이터를 추출하는 집적 회로, 그것을 포함하는 뉴럴 네트워크 프로세서 및 뉴럴 네트워크 장치
US10747502B2 (en) * 2018-09-19 2020-08-18 Xilinx, Inc. Multiply and accumulate circuit
WO2020065874A1 (ja) * 2018-09-27 2020-04-02 株式会社ソシオネクスト ネットワーク量子化方法、推論方法及びネットワーク量子化装置
JP7040771B2 (ja) * 2018-10-10 2022-03-23 LeapMind株式会社 ニューラルネットワーク処理装置、通信装置、ニューラルネットワーク処理方法、およびプログラム
US10769846B2 (en) * 2018-10-11 2020-09-08 GM Global Technology Operations LLC Point cloud data compression in an autonomous vehicle
CN112639838A (zh) * 2018-10-12 2021-04-09 奥林巴斯株式会社 运算处理装置
US10387772B1 (en) 2018-10-22 2019-08-20 Gyrfalcon Technology Inc. Ensemble learning based image classification systems
US11995533B1 (en) 2018-12-05 2024-05-28 Perceive Corporation Executing replicated neural network layers on inference circuit
US11586883B2 (en) * 2018-12-14 2023-02-21 Microsoft Technology Licensing, Llc Residual quantization for neural networks
CN111382832A (zh) * 2018-12-29 2020-07-07 佳能株式会社 多层神经网络模型的训练和应用方法、装置及存储介质
CN109740737B (zh) * 2018-12-30 2021-02-19 联想(北京)有限公司 卷积神经网络量化处理方法、装置及计算机设备
US12045724B2 (en) * 2018-12-31 2024-07-23 Microsoft Technology Licensing, Llc Neural network activation compression with outlier block floating-point
KR20200086581A (ko) * 2019-01-09 2020-07-17 삼성전자주식회사 뉴럴 네트워크 양자화를 위한 방법 및 장치
US11734556B2 (en) 2019-01-14 2023-08-22 Lightelligence PTE. Ltd. Optoelectronic computing systems
US11347297B1 (en) 2019-01-23 2022-05-31 Perceive Corporation Neural network inference circuit employing dynamic memory sleep
US11562247B2 (en) 2019-01-24 2023-01-24 Microsoft Technology Licensing, Llc Neural network activation compression with non-uniform mantissas
US20200249996A1 (en) * 2019-02-04 2020-08-06 Pathtronic Inc. Systems and methods for artificial intelligence hardware processing
US11544525B2 (en) 2019-02-04 2023-01-03 Sateesh Kumar Addepalli Systems and methods for artificial intelligence with a flexible hardware processing framework
US11150720B2 (en) 2019-02-04 2021-10-19 Sateesh Kumar Addepalli Systems and methods for power management of hardware utilizing virtual multilane architecture
US11507662B2 (en) * 2019-02-04 2022-11-22 Sateesh Kumar Addepalli Systems and methods of security for trusted artificial intelligence hardware processing
US11423454B2 (en) 2019-02-15 2022-08-23 Sateesh Kumar Addepalli Real-time customizable AI model collaboration and marketplace service over a trusted AI model network
JP7345262B2 (ja) 2019-03-11 2023-09-15 キヤノン株式会社 データ圧縮装置、データ処理装置、データ圧縮方法、プログラム、及び学習済みモデル
CN111695671B (zh) * 2019-03-12 2023-08-08 北京地平线机器人技术研发有限公司 训练神经网络的方法及装置、电子设备
JP7188237B2 (ja) * 2019-03-29 2022-12-13 富士通株式会社 情報処理装置、情報処理方法、情報処理プログラム
JP7177000B2 (ja) * 2019-05-16 2022-11-22 日立Astemo株式会社 演算装置および演算方法
US11941533B1 (en) 2019-05-21 2024-03-26 Perceive Corporation Compiler for performing zero-channel removal
CN112085191B (zh) * 2019-06-12 2024-04-02 上海寒武纪信息科技有限公司 一种神经网络的量化参数确定方法及相关产品
JP7243498B2 (ja) * 2019-07-11 2023-03-22 富士通株式会社 演算処理装置、制御プログラム、及び制御方法
CN112308199B (zh) * 2019-07-26 2024-05-10 杭州海康威视数字技术股份有限公司 数据块的处理方法、装置及存储介质
GB2581546B (en) * 2019-08-22 2021-03-31 Imagination Tech Ltd Methods and systems for converting weights of a deep neural network from a first number format to a second number format
JPWO2021039164A1 (ja) * 2019-08-26 2021-03-04
WO2021036905A1 (zh) 2019-08-27 2021-03-04 安徽寒武纪信息科技有限公司 数据处理方法、装置、计算机设备和存储介质
JP7419711B2 (ja) * 2019-09-09 2024-01-23 株式会社ソシオネクスト 量子化パラメータ最適化方法、及び、量子化パラメータ最適化装置
US11657282B2 (en) * 2019-09-16 2023-05-23 Qualcomm Incorporated Efficient inferencing with fast pointwise convolution
CN112561050B (zh) * 2019-09-25 2023-09-05 杭州海康威视数字技术股份有限公司 一种神经网络模型训练方法及装置
CN110879697B (zh) * 2019-10-29 2021-09-28 南京大学 一种近似计算tanh函数的装置
CN111091548B (zh) * 2019-12-12 2020-08-21 哈尔滨市科佳通用机电股份有限公司 基于深度学习的铁路货车承载鞍错位故障图像识别方法及系统
US11431688B2 (en) 2019-12-13 2022-08-30 TripleBlind, Inc. Systems and methods for providing a modified loss function in federated-split learning
US11528259B2 (en) 2019-12-13 2022-12-13 TripleBlind, Inc. Systems and methods for providing a systemic error in artificial intelligence algorithms
US11973743B2 (en) 2019-12-13 2024-04-30 TripleBlind, Inc. Systems and methods for providing a systemic error in artificial intelligence algorithms
US12026219B2 (en) * 2019-12-13 2024-07-02 TripleBlind, Inc. Systems and methods for efficient computations on split data and split algorithms
KR20210079785A (ko) * 2019-12-20 2021-06-30 삼성전자주식회사 뉴럴 네트워크의 컨볼루션 연산 처리 방법 및 장치
US11755683B2 (en) 2019-12-23 2023-09-12 Western Digital Technologies, Inc. Flexible accelerator for sparse tensors (FAST) in machine learning
JP2021111081A (ja) 2020-01-09 2021-08-02 富士通株式会社 情報処理装置、ニューラルネットワークの演算プログラム及びニューラルネットワークの演算方法
WO2021142713A1 (zh) * 2020-01-16 2021-07-22 北京比特大陆科技有限公司 神经网络处理的方法、装置与系统
CN110866862B (zh) * 2020-01-19 2020-05-15 光子算数(北京)科技有限责任公司 基于缓冲器的数据处理方法、装置、存储介质及电子设备
CN113408715B (zh) * 2020-03-17 2024-05-28 杭州海康威视数字技术股份有限公司 一种神经网络的定点化方法、装置
US11462003B2 (en) * 2020-03-25 2022-10-04 Western Digital Technologies, Inc. Flexible accelerator for sparse tensors in convolutional neural networks
US11797830B2 (en) 2020-03-25 2023-10-24 Western Digital Technologies, Inc. Flexible accelerator for sparse tensors in convolutional neural networks
KR20210121946A (ko) * 2020-03-31 2021-10-08 삼성전자주식회사 뉴럴 네트워크 양자화를 위한 방법 및 장치
US12079591B2 (en) 2020-04-07 2024-09-03 Samsung Electronics Co., Ltd. Neural network device, method of operating the neural network device, and application processor including the neural network device
TWI768326B (zh) * 2020-04-20 2022-06-21 國立陽明交通大學 卷積運算模組及方法以及其適用之卷積神經網路系統
US11763162B2 (en) * 2020-06-16 2023-09-19 National Tsing Hua University Dynamic gradient calibration method for computing-in-memory neural network and system thereof
GB2596150B (en) * 2020-06-19 2022-06-15 Imagination Tech Ltd Methods and systems for selecting number formats for deep neural networks based on network sensitivity and quantisation error
CN111832717B (zh) * 2020-06-24 2021-09-28 上海西井信息科技有限公司 芯片及用于卷积计算的处理装置
JP2022022876A (ja) 2020-07-09 2022-02-07 キヤノン株式会社 畳み込みニューラルネットワーク処理装置
GB2599098B (en) * 2020-09-22 2024-04-10 Imagination Tech Ltd Hardware implementation of windowed operations in three or more dimensions
US11797832B2 (en) * 2020-10-15 2023-10-24 Gigantor Technologies Inc. Composing arbitrary convolutional neural network models from a fixed set of duplicate pipelined components
WO2022109215A1 (en) 2020-11-20 2022-05-27 TripleBlind, Inc. Systems and methods for providing a blind de-identification of privacy data
US12112265B2 (en) 2020-12-18 2024-10-08 Analog Devices International Unlimited Company Architecture for running convolutional networks on memory and mips constrained embedded devices
US11144822B1 (en) 2021-01-04 2021-10-12 Edgecortix Pte. Ltd. Neural network accelerator run-time reconfigurability
CN113222148B (zh) * 2021-05-20 2022-01-11 浙江大学 一种面向物料识别的神经网络推理加速方法
GB2611521B (en) 2021-09-30 2024-04-10 Imagination Tech Ltd Neural network accelerator with a configurable pipeline
GB2611520B (en) 2021-09-30 2024-05-22 Imagination Tech Ltd Methods and devices for configuring a neural network accelerator with a configurable pipeline
GB2611522B (en) 2021-09-30 2024-04-10 Imagination Tech Ltd Neural network accelerator with a configurable pipeline
US20230177320A1 (en) 2021-09-30 2023-06-08 Imagination Technologies Limited Neural network accelerator with a configurable pipeline
WO2023113985A1 (en) * 2021-12-17 2023-06-22 SiFive, Inc. Quad narrowing operation
CN116384443A (zh) 2021-12-31 2023-07-04 想象技术有限公司 具有可配置池化处理单元的神经网络加速器
GB2614327A (en) 2021-12-31 2023-07-05 Imagination Tech Ltd Configurable pooling process unit for neural network accelerator
GB2614705B (en) 2021-12-31 2024-04-17 Imagination Tech Ltd Neural network accelerator with configurable pooling processing unit
GB2615754B (en) * 2022-02-15 2024-02-21 Advanced Risc Mach Ltd Method and processing unit for generating an output feature map
GB2620167A (en) 2022-06-29 2024-01-03 Imagination Tech Ltd Methods and systems for executing a neural network on a neural network accelerator
GB2622875A (en) 2022-09-30 2024-04-03 Imagination Tech Ltd Methods and systems for performing channel equalisation on a convolution layer in a neural network
GB2622869A (en) 2022-09-30 2024-04-03 Imagination Tech Ltd Methods and systems for online selection of number formats for network parameters of a neural network
KR20240077167A (ko) * 2022-11-24 2024-05-31 주식회사 모빌린트 합성곱 연산을 위한 데이터 처리 방법 및 컴퓨팅 장치
CN117217274B (zh) * 2023-11-08 2024-06-04 深圳市九天睿芯科技有限公司 向量处理器、神经网络加速器、芯片及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090164544A1 (en) 2007-12-19 2009-06-25 Jeffrey Dobbek Dynamic range enhancement for arithmetic calculations in real-time control systems using fixed point hardware
US20120191955A1 (en) 2011-01-20 2012-07-26 Jonsson Ragnar H Method and system for floating point acceleration on fixed point digital signal processors
US20160026912A1 (en) 2014-07-22 2016-01-28 Intel Corporation Weight-shifting mechanism for convolutional neural networks

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07200259A (ja) * 1993-12-28 1995-08-04 Hitachi Ltd 演算処理方法および演算処理装置
FR2743246B1 (fr) * 1995-12-29 1998-01-23 Thomson Broadcast Systems Procede et dispositif de compression de donnees numeriques
DE19826252C2 (de) * 1998-06-15 2001-04-05 Systemonic Ag Verfahren zur digitalen Signalverarbeitung
JP5171118B2 (ja) * 2007-06-13 2013-03-27 キヤノン株式会社 演算処理装置及びその制御方法
US8422821B2 (en) * 2008-12-19 2013-04-16 International Business Machines Corporation Selectively transforming a multi-dimensional array
US8442927B2 (en) * 2009-07-30 2013-05-14 Nec Laboratories America, Inc. Dynamically configurable, multi-ported co-processor for convolutional neural networks
GB2487375B (en) * 2011-01-18 2017-09-20 Aptina Imaging Corp Interest point detection
CN102420931B (zh) * 2011-07-26 2013-08-21 西安费斯达自动化工程有限公司 一种基于fpga的全帧率图像处理方法
US9811775B2 (en) * 2012-12-24 2017-11-07 Google Inc. Parallelizing neural networks during training
US9760966B2 (en) * 2013-01-08 2017-09-12 Nvidia Corporation Parallel processor with integrated correlation and convolution engine
US9190053B2 (en) * 2013-03-25 2015-11-17 The Governing Council Of The Univeristy Of Toronto System and method for applying a convolutional neural network to speech recognition
US9430829B2 (en) 2014-01-30 2016-08-30 Case Western Reserve University Automatic detection of mitosis using handcrafted and convolutional neural network features
FR3025344B1 (fr) * 2014-08-28 2017-11-24 Commissariat Energie Atomique Reseau de neurones convolutionnels
US10223333B2 (en) * 2014-08-29 2019-03-05 Nvidia Corporation Performing multi-convolution operations in a parallel processing system
US9563825B2 (en) 2014-11-20 2017-02-07 Adobe Systems Incorporated Convolutional neural network using a binarized convolution layer
US9805303B2 (en) * 2015-05-21 2017-10-31 Google Inc. Rotating data for neural network computations
US9747546B2 (en) * 2015-05-21 2017-08-29 Google Inc. Neural network processor
US10192162B2 (en) * 2015-05-21 2019-01-29 Google Llc Vector computation unit in a neural network processor
CN104915322B (zh) * 2015-06-09 2018-05-01 中国人民解放军国防科学技术大学 一种卷积神经网络硬件加速方法
US9886377B2 (en) * 2015-10-05 2018-02-06 Intel Corporation Pipelined convolutional operations for processing clusters
US10353860B2 (en) * 2015-10-08 2019-07-16 Via Alliance Semiconductor Co., Ltd. Neural network unit with neural processing units dynamically configurable to process multiple data sizes
CN105205479A (zh) 2015-10-28 2015-12-30 小米科技有限责任公司 人脸颜值评估方法、装置及终端设备
US9424494B1 (en) 2016-01-28 2016-08-23 International Business Machines Corporation Pure convolutional neural network localization

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090164544A1 (en) 2007-12-19 2009-06-25 Jeffrey Dobbek Dynamic range enhancement for arithmetic calculations in real-time control systems using fixed point hardware
US20120191955A1 (en) 2011-01-20 2012-07-26 Jonsson Ragnar H Method and system for floating point acceleration on fixed point digital signal processors
US20160026912A1 (en) 2014-07-22 2016-01-28 Intel Corporation Weight-shifting mechanism for convolutional neural networks

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Darryl D.Lin et al.,"FIXED POINT QUANTIZATION OF DEEP CONVOLUTIONAL NETWORKS",arXiv.org [online],arXiv:1511.06393v2,2016年01月,pp.1-15,[2021年5月17日検索],インターネット:<URL: https://arxiv.org/pdf/1511.06393v2.pdf>

Also Published As

Publication number Publication date
EP3242253B1 (en) 2021-07-14
EP3242254B1 (en) 2021-06-23
JP7013143B2 (ja) 2022-01-31
GB202008977D0 (en) 2020-07-29
GB201707039D0 (en) 2017-06-14
JP2018010618A (ja) 2018-01-18
GB201607713D0 (en) 2016-06-15
GB2585609A (en) 2021-01-13
GB2584243B (en) 2021-04-14
GB2552242B (en) 2020-12-30
GB2582519A (en) 2020-09-23
EP3242254A1 (en) 2017-11-08
EP3901835B1 (en) 2024-09-25
US11144819B2 (en) 2021-10-12
GB2584243A (en) 2020-11-25
GB201707040D0 (en) 2017-06-14
EP3242253A1 (en) 2017-11-08
EP3901832A1 (en) 2021-10-27
CN107403221A (zh) 2017-11-28
US20230306248A1 (en) 2023-09-28
US20170323197A1 (en) 2017-11-09
GB2552243B (en) 2020-07-22
EP4439272A2 (en) 2024-10-02
US11625581B2 (en) 2023-04-11
GB202015694D0 (en) 2020-11-18
GB2585609B (en) 2021-05-05
US20240249131A1 (en) 2024-07-25
GB2552242A (en) 2018-01-17
GB2552243A (en) 2018-01-17
CN107403221B (zh) 2023-10-13
GB202012271D0 (en) 2020-09-23
JP2022058660A (ja) 2022-04-12
US20220027717A1 (en) 2022-01-27
US20170323196A1 (en) 2017-11-09
EP3901835A1 (en) 2021-10-27
US11948070B2 (en) 2024-04-02
CN117217273A (zh) 2023-12-12
GB2582519B (en) 2021-01-13

Similar Documents

Publication Publication Date Title
JP7348971B2 (ja) 畳み込みニューラルネットワークハードウエア構成
CN110033080B (zh) 单平面滤波
US20190147323A1 (en) Activation Functions for Deep Neural Networks
CN110009099B (zh) 用于确定表示dnn的层的值的定点数格式的方法和系统
CN110033079B (zh) 深度神经网络的硬件实现的端到端数据格式选择
CN112418391B (zh) 用于对深度神经网络的权重进行转换的方法和系统
EP3480689B1 (en) Hierarchical mantissa bit length selection for hardware implementation of deep neural network
CN114816331B (zh) 具有时钟选通的用于执行矩阵乘法的硬件单元
EP4050522A1 (en) Implementation of softmax and exponential in hardware
GB2568102A (en) Exploiting sparsity in a neural network
CN113887710A (zh) 循环神经网络中的数字格式选择
CN116384443A (zh) 具有可配置池化处理单元的神经网络加速器
EP4345691A1 (en) Methods and systems for performing channel equalisation on a convolution layer in a neural network
EP4113384A1 (en) Running bidirectional recurrent neural networks in hardware
CN115545146A (zh) 双向rnn的数字格式选择
CN113887714A (zh) 用于在硬件中运行动态循环神经网络的方法和系统
GB2622869A (en) Methods and systems for online selection of number formats for network parameters of a neural network
GB2611521A (en) Neural network accelerator with a configurable pipeline
CN115906964A (zh) 具有可配置流水线的神经网络加速器
GB2603647A (en) End-to-end data format selection for hardware implementation of deep neural network
GB2603582A (en) End-to-end data format selection for hardware implementation of deep neural network

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220203

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220203

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230508

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230908

R150 Certificate of patent or registration of utility model

Ref document number: 7348971

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150