JP6726246B2 - 畳み込みニューラルネットワークにおいて演算を実行する方法および装置並びに非一時的な記憶媒体 - Google Patents

畳み込みニューラルネットワークにおいて演算を実行する方法および装置並びに非一時的な記憶媒体 Download PDF

Info

Publication number
JP6726246B2
JP6726246B2 JP2018176240A JP2018176240A JP6726246B2 JP 6726246 B2 JP6726246 B2 JP 6726246B2 JP 2018176240 A JP2018176240 A JP 2018176240A JP 2018176240 A JP2018176240 A JP 2018176240A JP 6726246 B2 JP6726246 B2 JP 6726246B2
Authority
JP
Japan
Prior art keywords
parameter
array
calculation
partial
neural network
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
JP2018176240A
Other languages
English (en)
Other versions
JP2019082996A (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.)
Nanjing Horizon Robotics Technology Co Ltd
Original Assignee
Nanjing Horizon Robotics Technology Co Ltd
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 Nanjing Horizon Robotics Technology Co Ltd filed Critical Nanjing Horizon Robotics Technology Co Ltd
Publication of JP2019082996A publication Critical patent/JP2019082996A/ja
Application granted granted Critical
Publication of JP6726246B2 publication Critical patent/JP6726246B2/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/08Learning methods
    • 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
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Image Analysis (AREA)
  • Complex Calculations (AREA)
  • Apparatus For Radiation Diagnosis (AREA)

Description

本発明は、人工的な畳み込みニューラルネットワークに関し、より詳細には、畳み込みニューラルネットワークにおいて演算を実行する方法および装置並びに非一時的な記憶媒体に関する。
畳み込みニューラルネットワークに基づく深層学習技術は、画像認識、映像解析、自然言語処理、運転補助などのさまざまな分野において幅広く使用されてきた。
畳み込みニューラルネットワークは、多数の層を含むことができる。各層において、層の入力データ(入力特徴データとも称する)に対する層の畳み込み演算が、その層の重みパラメータを使用して実行され、対応する出力データ(活性化値(activation value)または出力特徴データとも称される)を得る。
畳み込みニューラルネットワークにおいては、各特徴データは、特定の幅および高さを有することができ、さらに、1つまたは複数のチャンネルを有することができる。各チャンネルは、特徴データの1種類の情報を伝えることができる。各層の重みパラメータは、1つまたは複数のカーネル(畳み込みカーネルとも称される)を含むことができ、すべてのカーネルが、同じ幅、同じ高さ、および同じ深さ(チャンネル数とも称される)を有することができる。言い換えれば、各層の重みパラメータは、例えば幅、高さ、深さ、およびカーネル数などの次元を有することができる。
畳み込みニューラルネットワークにおける演算は、汎用の中央処理装置(CPU)もしくは汎用のグラフィック処理装置(GPU)、または専用アクセラレータなどのハードウェアを使用することによって、効率的に実行できることが望ましい。しかしながら、畳み込みニューラルネットワークにおいて前向き推論プロセスが進むにつれて、各層の重みパラメータのサイズが次第に大きくなりうる。例えば重みパラメータは、より大きい数のチャンネル、および/または、より大きい数のカーネルを有しうる。ニューラルネットワークにおいて演算を実行するために使用されるプロセッサに関連付けられる高速メモリ(例えばプロセッサ内のキャッシュ、またはプロセッサに関連付けられるキャッシュ)に全体をバッファリングするには、特定の層の重みパラメータが大きすぎる場合、その層の演算を、正確に、および/または効率的に実行することができない。
本開示の一態様は、
畳み込みニューラルネットワークにおける選択された層の重みパラメータを、深さの次元およびカーネル数の次元の少なくとも一方において分割することによって複数の演算パラメータを含む演算パラメータ配列を得るステップと、
演算パラメータ配列の中の各演算パラメータを使用し、選択された層の入力データのうち、使用される演算パラメータのチャンネルに対応するデータに対して、選択された層の演算を実行することによって複数の部分演算結果を含む部分演算結果配列を得るステップと、
部分演算結果配列に基づいて、選択された層の1つまたは複数の出力データを生成するステップと、
を含み、
演算パラメータ配列の各行におけるそれぞれの演算パラメータは、重みパラメータのカーネルのセットの同じサブセットであり、かつ、それぞれ異なるチャンネルを有し、
演算パラメータ配列の各列におけるそれぞれの演算パラメータは、重みパラメータのカーネルのセットのそれぞれ異なるサブセットであり、かつ、同じ1つまたは複数のチャンネルを有する、
畳み込みニューラルネットワークにおいて演算を実行する方法に関する。
本開示の別の態様は、
1つまたは複数のプロセッサと、
命令を記憶するメモリと、
を備え、
命令が1つまたは複数のプロセッサによって実行された場合、1つまたは複数のプロセッサは、
畳み込みニューラルネットワークにおける選択された層の重みパラメータを、深さの次元およびカーネル数の次元の少なくとも一方において分割することによって複数の演算パラメータを含む演算パラメータ配列を得るステップと、
演算パラメータ配列の中の各演算パラメータを使用し、選択された層の入力データのうち、使用される演算パラメータのチャンネルに対応するデータに対して、選択された層の演算を実行することによって複数の部分演算結果を含む部分演算結果配列を得るステップと、
部分演算結果配列に基づいて、選択された層の1つまたは複数の出力データを生成するステップと、
を実行し、
演算パラメータ配列の各行におけるそれぞれの演算パラメータは、重みパラメータのカーネルのセットの同じサブセットであり、かつ、それぞれ異なるチャンネルを有し、
演算パラメータ配列の各列におけるそれぞれの演算パラメータは、重みパラメータのカーネルのセットのそれぞれ異なるサブセットであり、かつ、同じ1つまたは複数のチャンネルを有する、
畳み込みニューラルネットワークにおいて演算を実行する装置、に関する。
本開示の別の態様は、
畳み込みニューラルネットワークにおける選択された層の重みパラメータを、深さの次元およびカーネル数の次元の少なくとも一方において分割することによって複数の演算パラメータを含む演算パラメータ配列を得るように構成されている分割器と、
演算パラメータ配列の中の各演算パラメータを使用し、選択された層の入力データのうち、使用される演算パラメータのチャンネルに対応するデータに対して、選択された層の演算を実行することによって複数の部分演算結果を含む部分演算結果配列を得るように構成されている演算器と、
部分演算結果配列に基づいて、選択された層の1つまたは複数の出力データを生成するように構成されている生成器と、
を備え、
演算パラメータ配列の各行におけるそれぞれの演算パラメータは、重みパラメータのカーネルのセットの同じサブセットであり、かつ、それぞれ異なるチャンネルを有し、
演算パラメータ配列の各列におけるそれぞれの演算パラメータは、重みパラメータのカーネルのセットのそれぞれ異なるサブセットであり、かつ、同じ1つまたは複数のチャンネルを有する、
畳み込みニューラルネットワークにおいて演算を実行する装置、に関する。
本開示の別の態様は、
命令を記憶する非一時的な記憶媒体であって、
命令が、畳み込みニューラルネットワークにおいて演算を実行するように構成されているプロセッサによって実行された場合、プロセッサは、
畳み込みニューラルネットワークにおける選択された層の重みパラメータを、深さの次元およびカーネル数の次元の少なくとも一方において分割することによって複数の演算パラメータを含む演算パラメータ配列を得るステップと、
演算パラメータ配列の中の各演算パラメータを使用し、選択された層の入力データのうち、使用される演算パラメータのチャンネルに対応するデータに対して、選択された層の演算を実行することによって複数の部分演算結果を含む部分演算結果配列を得るステップと、
部分演算結果配列に基づいて、選択された層の1つまたは複数の出力データを生成するステップと、
を実行し、
演算パラメータ配列の各行におけるそれぞれの演算パラメータは、重みパラメータのカーネルのセットの同じサブセットであり、かつ、それぞれ異なるチャンネルを有し、
演算パラメータ配列の各列におけるそれぞれの演算パラメータは、重みパラメータのカーネルのセットのそれぞれ異なるサブセットであり、かつ、同じ1つまたは複数のチャンネルを有する非一時的な記憶媒体、に関する。
本開示の実施形態に係る方法を使用すると、ハードウェアの動作効率または利用率を改善することができ、さらに、パラメータのサイズに対してハードウェアが限定されることを回避することもできる。
本開示の実施形態に係る例示的な方法のフローを示している。 本開示の実施形態に係る、重みパラメータおよび対応する配列表現の例を示している。 本開示の実施形態に係る、重みパラメータを分割する例示的な方法を示している。 本開示の実施形態に係る、入力データに従って重みパラメータを分割する例を示している。 本開示の実施形態に係る、分割された演算パラメータを使用して演算を実行する例を示している。 本開示の実施形態に係る、出力データを生成する例を示している。 本開示の実施形態に係る、出力データを生成する例を示している。 本開示の実施形態に係る、出力データを生成する例を示している。 本開示の実施形態に係る、出力データを生成する例を示している。 本開示の実施形態に係る、出力データを生成する例を示している。 本開示の実施形態に係る方法を実施する、本開示の実施形態に係る装置のブロック図を示している。 本開示の実施形態に係る方法を実施する、本開示の実施形態に係る装置のブロック図を示している。
図1は、本開示の実施形態に係る例示的な方法のフローを示している。図1に示したように、畳み込みニューラルネットワークにおける選択された層において、ステップS101で、畳み込みニューラルネットワークにおける選択された層の重みパラメータを、深さの次元およびカーネル数の次元の少なくとも一方において分割して、複数の演算パラメータを含む演算パラメータ配列を得る。次いで、ステップS105においては、ステップS101で得られた演算パラメータ配列の中の各演算パラメータを使用して、選択された層の入力データのうち、使用される演算パラメータのチャンネルに対応する、チャンネル内のデータに対して、選択された層の演算を実行し、複数の部分演算結果を含む部分演算結果配列を得る。次いで、ステップS110においては、ステップS105で得られた部分演算結果配列に基づいて、選択された層の1つまたは複数の出力データを生成することができる。
一実施形態においては、畳み込みニューラルネットワークの各層において実行される演算と、各層において使用される重みパラメータのサイズおよび各次元の大きさを、畳み込みニューラルネットワークが設計されるときに事前に決定する、または既知とすることができ、また、畳み込みニューラルネットワークを実行するときに、それぞれの層における重みパラメータをキャッシュするための高速メモリの容量、または、各層の重みパラメータ用もしくは複数の層の重みパラメータ用に高速メモリ内に確保される容量を、事前に決定する、または既知とすることができ、あるいは、畳み込みニューラルネットワークにおける乗算演算および加算演算をサポートするハードウェア回路内の乗算器および加算器の配置が既知である場合には、より良好な、または所望のハードウェア利用率または実行効率を得るため、カーネル演算のいくつのセットまたはチャンネル演算のいくつのセットを同時に処理する必要があるかを、事前に決定する、または既知とすることができる。
したがって、畳み込みニューラルネットワークにおけるどの層の重みパラメータを分割する必要があるか、すなわち言い換えれば、畳み込みニューラルネットワークにおけるどの層を、ステップS101における選択される層として選択する必要があるかを、1つまたは複数の側面、例えば、高速メモリの容量、重みパラメータ用に確保される高速メモリにおける容量、乗算器および加算器の配置、演算の並列処理に関する要件、畳み込みニューラルネットワークの設計、畳み込みニューラルネットワークの演算を実行するためのプロセスまたはスレッドの上限または下限、(1つまたは複数の)特定の適用シナリオにおける経験的データなどに従って、事前に決定することができる。
いくつかの別の実施形態においては、特定の中間層の重みパラメータを分割する必要があるかを、畳み込みニューラルネットワークの演算中に(例えばその中間層の演算を実際に実行する前に)、1つまたは複数の側面、例えば、高速メモリの容量、重みパラメータ用に確保される高速メモリにおける容量、その層の重みパラメータ用に現在利用可能な高速メモリにおける容量、乗算器および加算器の配置、演算の並列処理に関する要件、畳み込みニューラルネットワークの設計、プロセッサおよび/またはオペレーティングシステムの現在の動作性能などに従って、決定することができる。必要な場合、その層を、ステップS101において選択される層とみなすことができる。
いくつかの別の実施形態においては、特定の中間層から始まる複数の層における(1つまたは複数の)どの層の重みパラメータを分割する必要があるかと、(1つまたは複数の)どの層を選択される層としてみなすことができるかとを、畳み込みニューラルネットワークの演算中に(例えばその中間層の演算を実際に実行する前に)、1つまたは複数の側面、例えば、高速メモリの容量、(1つまたは複数の)重みパラメータ用に確保される高速メモリにおける容量、(1つまたは複数の)層の(1つまたは複数の)重みパラメータ用に現在利用可能な高速メモリにおける容量、乗算器および加算器の配置、演算の並列処理に関する要件、畳み込みニューラルネットワークの設計、プロセッサおよび/またはオペレーティングシステムの現在の動作性能などに従って、決定することができる。
畳み込みニューラルネットワークでは、通常、順序が後ろの方の1つまたは複数の層がより大きい重みパラメータを有し、したがっていくつかの別の実施形態においては、畳み込みニューラルネットワークにおけるこれら1つまたは複数の順序が後ろの方の層を、畳み込みニューラルネットワークの設計時に、ステップS101における選択される層とみなすことができる。
いくつかの別の実施形態においては、畳み込みニューラルネットワークの特定の層が、全体として完全な入力データを構成する複数の部分入力データを受け取り、かつ、これらの部分入力データの任意の2つが同じチャンネルを共有しない、すなわち言い換えれば、入力特徴データが深さ方向において複数の部分入力データに分割されており、かつこれら複数の部分入力データそれぞれがその層に提供されるならば、この特定の層を、ステップS101における選択される層とみなすことができる。
いくつかの別の実施形態においては、畳み込みニューラルネットワークにおける各層の重みパラメータを、上述した事前の決定またはリアルタイムでの決定なしに、分割することができる。言い換えれば、畳み込みニューラルネットワークにおける各層を、ステップS101における選択される層とみなすことができる。
さらには、畳み込みニューラルネットワークにおける(1つまたは複数の)特定の層を、選択される層とみなすことができるかを、ステップS101において判定することができる。
分割する場合と分割しない場合とで演算結果の一貫性を維持する目的で、選択された層の重みパラメータを、深さ(すなわちチャンネル方向)の次元およびカーネル数の次元の少なくとも一方において分割することができる。重みパラメータが、深さの次元およびカーネル数の次元における配列とみなされる(各行が各カーネルの複数の異なるチャンネルに対応し、各列が同じチャンネルにおけるそれぞれのカーネルの部分に対応する)場合、選択された層の重みパラメータを、深さの次元およびカーネル数の次元の少なくとも一方において分割することは、その配列を、行方向および/または列方向においていくつかの部分に分割することと考えることができる。
図2は、本開示の実施形態に係る、重みパラメータおよび対応する配列表現の例を示している。
図2で矢印の左側には、3つのカーネルK1〜K3を有する重みパラメータを示してあり、各カーネル(K1またはK2またはK3)は、3つのチャンネルC1〜C3を有する。カーネルK1の3つのチャンネルを、それぞれK1_C1、K1_C2、K1_C3と表してあり、カーネルK2の3つのチャンネルを、それぞれK2_C1、K2_C2、K2_C3と表してあり、カーネルK3の3つのチャンネルを、それぞれK3_C1、K3_C2、K3_C3と表してある。
図2で矢印の右側には、深さおよびカーネル数の2つの次元における配列表現を示してある。この配列は、3行3列を有する。カーネルK1の3つのチャンネルK1_C1、K1_C2、K1_C3は、配列の第1行に対応しており、カーネルK2の3つのチャンネルK2_C1、K2_C2、K2_C3は、配列の第2行に対応しており、カーネルK3の3つのチャンネルK3_C1、K3_C2、K3_C3は、配列の第3行に対応している。チャンネルC1に対応する、カーネルK1〜K3の部分K1_C1、K2_C1、K3_C1は、配列の第1列に対応しており、チャンネルC2に対応する、カーネルK1〜K3の部分K1_C2、K2_C2、K3_C2は、配列の第2列に対応しており、チャンネルC3に対応する、カーネルK1〜K3の部分K1_C3、K2_C3、K3_C3は、配列の第3列に対応している。
なお、畳み込みニューラルネットワークにおける重みパラメータは図2に示した例に限定されず、任意の数のカーネルおよび任意の数のチャンネルを有することができることを理解されたい。
したがって、上述したように、選択された層の重みパラメータを深さおよびカーネル数の次元の少なくとも一方において分割することは、対応する配列を行方向および/または列方向において分割することと考えることができる。
図3は、本開示の実施形態に係る、重みパラメータを分割する例示的な方法を示している。
一例においては、図2における配列を、図3(a)に示したように、列に従って3つの部分に分割することができ(すなわち重みパラメータが深さ方向において3つの部分に分割される)、したがって1行3列を有する演算パラメータの配列が形成される。この配列は、チャンネルC1に対応する、カーネルK1〜K3の部分と、チャンネルC2に対応する、カーネルK1〜K3の部分と、チャンネルC3に対応する、カーネルK1〜K3の部分とに、それぞれ対応する3つの演算パラメータを含む。
いくつかの別の例においては、図2における配列を、図3(b)に示したように、行に従って3つの部分に分割することができ(すなわち重みパラメータがカーネル数の次元において3つの部分に分割される)、したがって3行1列を有する演算パラメータの配列が形成され、この配列は、カーネルK1〜K3にそれぞれ対応する3つの演算パラメータを含む。
いくつかの別の例においては、図2における配列を、図3(c)に示したように、3行3列に分割することができ(すなわち重みパラメータが、深さおよびカーネル数の両方の次元において9つの部分に分割される)、したがって3行3列を有する演算パラメータの配列が形成され、この配列は、各カーネルの各チャンネルにそれぞれ対応する9つの演算パラメータを含む。
いくつかの別の例においては、図2における配列を、図3(d)に示したように1行2列を有する演算パラメータの配列が形成されるように分割することができ(すなわち重みパラメータが、深さの次元において2つの部分に分割される)、この配列は2つの演算パラメータを含む。第1列における演算パラメータは、チャンネルC1におけるカーネルK1〜K3の部分に対応しており(図3ではK1_C1、K2_C1、K3_C1として表してある)、第2列における演算パラメータは、チャンネルC2およびC3におけるカーネルK1〜K3の部分に対応している(図3ではK1_(C2−C3)、K2_(C2−C3)、K3_(C2−C3)として表してある)。
いくつかの別の例においては、図2における配列を、図3(e)に示したように2行3列を有する演算パラメータの配列が形成されるように分割することができ(すなわち重みパラメータが、深さおよびカーネル数の両方の次元において6つの部分に分割される)、この配列は6つの演算パラメータを含む。第1行における演算パラメータは、チャンネルC1,C2,C3におけるカーネルK1およびK2の部分にそれぞれ対応しており、第2行における演算パラメータは、チャンネルC1,C2,C3におけるカーネルK3の部分にそれぞれ対応している。
いくつかの別の例においては、図2における配列を、図3(f)に示したように2行2列を有する演算パラメータの配列が形成されるように分割することができ(すなわち重みパラメータが、深さおよびカーネル数の両方の次元において4つの部分に分割される)、この配列は4つの演算パラメータを含む。第1行第1列の演算パラメータは、チャンネルC1およびC2におけるカーネルK1の部分に対応しており(図3ではK1_(C1−C2)として表してある)、第1行第2列の演算パラメータは、チャンネルC3におけるカーネルK1の部分に対応しており、第2行第1列における演算パラメータは、チャンネルC1およびC2におけるカーネルK2およびK3の部分に対応しており(図3ではK2_(C1−C2)およびK3_(C1−C2)として表してある)、第2行第2列の演算パラメータは、チャンネルC3におけるカーネルK2およびK3の部分に対応している。
なお、重みパラメータを深さの次元およびカーネル数の次元の少なくとも一方において分割することは、図3に示した例に限定されないことを理解されたい。演算パラメータ配列の各行におけるそれぞれの演算パラメータが、重みパラメータのカーネルのセットの同じサブセットからであり、かつそれぞれ異なるチャンネルを有し、かつ、演算パラメータ配列の各列におけるそれぞれの演算パラメータが、重みパラメータのカーネルのセットのそれぞれ異なるサブセットからであり、かつ同じ1つまたは複数のチャンネルを有するように、重みパラメータを深さの次元およびカーネル数の次元の少なくとも一方において任意の適切な方法で分割して、複数の演算パラメータを含む演算パラメータの配列を得ることができる。
上述したように、ステップS101においては、選択された層の重みパラメータを分割するかを、さまざまな基準に従って決定することができ、したがって、分割によって得られる演算パラメータ配列が、関連する要件を満たすかを、そのような基準に従って判定することができる。
実施形態においては、ステップS101において、重みパラメータのサイズが第1のしきい値を超えるときに、分割によって得られる演算パラメータ配列の中の各演算パラメータのサイズが第1のしきい値より小さいかまたは等しいように、その重みパラメータを分割することができる。
一例においては、第1のしきい値は、重みパラメータをキャッシュするための高速メモリの容量、または重みパラメータを記憶するために利用可能な高速メモリの容量に従って、設定することができる。
いくつかの別の例においては、第1のしきい値を、高速メモリの容量の1/5、1/2、2/3として設定することができ、または、第1のしきい値を、高速メモリの容量に等しいように設定することができる。
いくつかの別の例においては、第1のしきい値は、畳み込みニューラルネットワークの設計手順において、その畳み込みニューラルネットワークを適用するシナリオに関連する経験的データまたは統計的データと考慮事項との組合せに基づいて、畳み込みニューラルネットワークの設計者によって設定することができる。例えば、第1のしきい値を、32kb、64kb、128kbなどとして設定することができる。
なお、第1のしきい値の設定は、上述した例に限定されないことを理解されたい。第1のしきい値は、必要な場合に任意の適切な値または任意の望ましい値として設定することができる。さらには、畳み込みニューラルネットワーク全体に対して第1のしきい値を設定することができ、それを各層に適用することができる。または、それぞれの選択された層に対して、第1のしきい値を設定することができる。さらには、第1のしきい値は固定値を有することができる、または第1のしきい値を、畳み込みニューラルネットワークの前向き推論プロセスにおいて、システム(ハードウェアおよび/またはソフトウェアを含む)の条件(例えば動作性能、利用可能なリソースなど)、および/または、学習の条件に従って、更新することができる(例えば畳み込みニューラルネットワークにおける各層のパラメータも、前向き推論プロセスにおける学習によって動的に調整することができる)。
いくつかの別の実施形態においては、ステップS101において、重みパラメータのカーネル数が第2のしきい値を超えるときに、分割によって得られる演算パラメータ配列の中の各演算パラメータのカーネル数が第2のしきい値より小さいかまたは等しいように、その重みパラメータを分割することができる。
一例においては、第2のしきい値は、畳み込みニューラルネットワークの設計手順において、その畳み込みニューラルネットワークを適用するシナリオに関連する経験的データまたは統計的データと考慮事項との組合せに基づいて、畳み込みニューラルネットワークの設計者によって設定することができる。例えば、第2のしきい値を、8、32、64などとして設定することができる。
いくつかの別の例においては、第2のしきい値は、高速メモリの容量と、各カーネルのサイズとに従って設定することができる。例えば、各カーネルのサイズに対する、重みパラメータを記憶するために利用可能な高速メモリの容量の比率よりも小さいかまたは等しい値として、第2のしきい値を設定することができる。
いくつかの別の例においては、ソフトウェアおよび/またはハードウェアのコストおよび動作性能が、N個の畳み込みカーネルの場合に比較的良好である(例えば、加算器のための選択/イネーブル回路を省くことができる、または比較的良好な並列処理を達成することができる)ことが、ニューラルネットワークの演算をサポートするハードウェアに関連するパラメータに基づいて判断される場合、第2のしきい値をNとして設定することができる。例えば、重みパラメータのカーネル数がKであり、第2のしきい値がNであると想定すると、演算パラメータ配列を、K/N個の行を有し、かつ、各行における各演算パラメータがN個以下のカーネルを有するように、形成することができ、このことは、各演算パラメータの演算を並列モードにおいて実行するときの並列処理またはリソース利用率を改善するうえで有利であり得る。
なお、第2のしきい値の設定は、上記の例に限定されないことを理解されたい。第2のしきい値は、必要な場合に任意の適切な値または任意の望ましい値として設定することができる。さらには、畳み込みニューラルネットワーク全体に対して第2のしきい値を設定することができ、その第2のしきい値を各層に適用することができる。または、それぞれの選択された層に対して、第2のしきい値を設定することができる。さらには、第2のしきい値は固定値を有することができる、または第2のしきい値を、畳み込みニューラルネットワークの前向き推論プロセスにおいて、システム(ハードウェアおよび/またはソフトウェアを含む)の条件(例えば動作性能、利用可能なリソースなど)、および/または、学習の条件に従って、更新することができる(例えば畳み込みニューラルネットワークにおける各層のパラメータも、前向き推論プロセスにおける学習によって動的に調整することができる)。
いくつかの別の実施形態においては、ステップS101において、重みパラメータのカーネル数が第1の所定の数より大きいかまたは等しい場合に、分割によって得られる演算パラメータ配列の行の数が第1の所定の数の倍数に等しいように、その重みパラメータを分割することができる。
一例においては、第1の所定の数は、畳み込みニューラルネットワークにおいて演算を処理するために使用されるプロセッサ(CPU、GPU、または専用アクセラレータなど)またはプロセッサコアの数に従って、設定することができる。
いくつかの別の例においては、第1の所定の数は、畳み込みニューラルネットワークにおける特定の重みパラメータ(例えば、最も大きいサイズの重みパラメータまたは最も小さいサイズの重みパラメータ)のカーネルのサイズに対する、高速メモリの容量(例えば、合計容量、または重みパラメータを記憶するために確保される容量)の比率に従って、設定することができる。
いくつかの別の例においては、ソフトウェアおよび/またはハードウェアのコストおよび動作性能が、N個の畳み込みカーネルの場合に比較的良好である(例えば、加算器のための選択/イネーブル回路を省くことができる、または比較的良好な並列処理を達成することができる)ことが、ニューラルネットワークの演算をサポートするハードウェアに関連するパラメータに基づいて判断される場合、第1の所定の数をNとして設定することができる。このような設定は、各演算パラメータの演算を並列モードにおいて実行するときの並列処理またはリソース利用率を改善するうえで有利であり得る。
なお、第1の所定の数の設定は、上記の例に限定されないことを理解されたい。第1の所定の数は、必要な場合に任意の適切な値または任意の望ましい値として設定することができる。さらには、畳み込みニューラルネットワーク全体に対して第1の所定の数を設定することができ、その第1の所定の数を各層に適用することができる。または、それぞれの選択された層に対して、第1の所定の数を設定することができる。さらには、第1の所定の数は固定値を有することができる、または第1の所定の数を、畳み込みニューラルネットワークの前向き推論プロセスにおいて、システム(ハードウェアおよび/またはソフトウェアを含む)の条件(例えば動作性能、利用可能なリソースなど)、および/または、学習の条件に従って、更新することができる(例えば畳み込みニューラルネットワークにおける各層のパラメータも、前向き推論プロセスにおける学習によって動的に調整することができる)。
いくつかの別の実施形態においては、ステップS101において、重みパラメータのチャンネルの数が第3のしきい値を超える場合に、分割によって得られる演算パラメータ配列の中の各演算パラメータが第3のしきい値以下の数のチャンネルを有するように、その重みパラメータを分割することができる。
一例においては、第3のしきい値は、畳み込みニューラルネットワークの設計手順において、その畳み込みニューラルネットワークを適用するシナリオに関連する経験的データまたは統計的データと考慮事項との組合せに基づいて、畳み込みニューラルネットワークの設計者によって設定することができる。例えば、第3のしきい値を、8、32、64などとして設定することができる。
いくつかの別の例においては、第3のしきい値は、畳み込みニューラルネットワークにおける特定の重みパラメータ(例えば、最も大きいサイズの重みパラメータまたは最も小さいサイズの重みパラメータ)の1つのチャンネルにおけるサイズに対する、高速メモリの容量(例えば、合計容量、または重みパラメータを記憶するために確保される容量)の比率に従って、設定することができる。
いくつかの別の例においては、ニューラルネットワークの乗算演算および加算演算をサポートするハードウェア回路は、乗算器および加算器の1つまたは複数のグループの配置を含むことができ、乗算器および加算器の各グループの配置が、1つまたは複数の乗算器と、1つまたは複数の加算器とを含むことができる。重みパラメータが深さMを有するときに、乗算器および加算器が最も高い(または比較的高い)利用率を有し、例えば選択/イネーブル回路の設計/配置を省くことができることが、乗算器および加算器の各グループの配置に基づいて判断される場合、第3のしきい値をMとして設定することができる。例えば、重みパラメータが深さDを有し、第3のしきい値がMであると想定すると、演算パラメータ配列を、D/M個の列を有しかつ各列における各演算パラメータがMより小さいかまたは等しい深さを有するように形成することができ、このことは、各演算パラメータの演算を並列モードにおいて実行するときの並列処理またはリソース利用率を改善するうえで有利であり得る。
なお、第3のしきい値の設定は、上記の例に限定されないことを理解されたい。第3のしきい値は、必要な場合に任意の適切な値または任意の望ましい値として設定することができる。さらには、畳み込みニューラルネットワーク全体に対して第3のしきい値を設定することができ、その第3のしきい値を各層に適用することができる。または、それぞれの選択された層に対して、第3のしきい値を設定することができる。さらには、第3のしきい値は固定値を有することができる、または第3のしきい値を、畳み込みニューラルネットワークの前向き推論プロセスにおいて、システム(ハードウェアおよび/またはソフトウェアを含む)の条件(例えば動作性能、利用可能なリソースなど)、および/または、学習の条件に従って、更新することができる(例えば畳み込みニューラルネットワークにおける各層のパラメータも、前向き推論プロセスにおける学習によって動的に調整することができる)。
いくつかの別の実施形態においては、ステップS101において、重みパラメータのチャンネルの数が第2の所定の数より大きいかまたは等しいときに、分割によって得られる演算パラメータ配列の列の数が第2の所定の数の倍数に等しいように、その重みパラメータを分割することができる。
一例においては、第2の所定の数は、畳み込みニューラルネットワークにおいて演算を処理するために使用されるプロセッサ(CPU、GPU、または専用アクセラレータなど)またはプロセッサコアの数に従って、設定することができる。
いくつかの別の例においては、第2の所定の数は、畳み込みニューラルネットワークにおける特定の重みパラメータ(例えば、最も大きいサイズの重みパラメータまたは最も小さいサイズの重みパラメータ)の深さに対する、高速メモリの容量(例えば、合計容量、または重みパラメータを記憶するために確保される容量)の比率に従って、設定することができる。
いくつかの別の例においては、ニューラルネットワークの乗算演算および加算演算をサポートするハードウェア回路は、乗算器および加算器の1つまたは複数のグループの配置を含むことができ、乗算器および加算器の各グループの配置が、1つまたは複数の乗算器と、1つまたは複数の加算器とを含むことができる。重みパラメータが深さMを有するときに、乗算器および加算器が最も高い(または比較的高い)利用率を有し、例えば選択/イネーブル回路の設計/配置を省くことができることが、乗算器および加算器の各グループの配置に基づいて判断される場合、第2の所定の数をMとして設定することができる。このような設定は、各演算パラメータの演算を並列モードにおいて実行するときの並列処理またはリソース利用率を改善するうえで有利であり得る。
なお、第2の所定の数の設定は、上記の例に限定されないことを理解されたい。第2の所定の数は、必要な場合に任意の適切な値または任意の望ましい値として設定することができる。さらには、畳み込みニューラルネットワーク全体に対して第2の所定の数を設定することができ、その第2の所定の数を各層に適用することができる。または、それぞれの選択された層に対して、第2の所定の数を設定することができる。さらには、第2の所定の数は固定値を有することができる、または第2の所定の数を、畳み込みニューラルネットワークの前向き推論プロセスにおいて、システム(ハードウェアおよび/またはソフトウェアを含む)の条件(例えば動作性能、利用可能なリソースなど)、および/または、学習の条件に従って、更新することができる(例えば畳み込みニューラルネットワークにおける各層のパラメータも、前向き推論プロセスにおける学習によって動的に調整することができる)。
いくつかの別の実施形態においては、畳み込みニューラルネットワークの特定の層が、全体として完全な入力データを構成する複数の部分入力データを受け取り、かつ、これらの部分入力データの任意の2つが同じチャンネルを共有しない、すなわち言い換えれば、入力特徴データが深さ方向において複数の部分入力データに分割されており、かつこれらの複数の部分入力データそれぞれがその層に提供されるならば、ステップS101において、分割によって得られる演算パラメータ配列が、受け取った複数の部分入力データの数に等しい数の列を有し、かつ各列におけるすべての演算パラメータが、受け取った複数の部分入力データの1つと同じ1つまたは複数のチャンネルに対応するように、この層の重みパラメータを各部分入力データに従って分割することができる。
例えば、図4に示したように、畳み込みニューラルネットワークにおける特定の層が2つの入力データFD1およびFD2を受け取り、これらの入力データFD1およびFD2が、(図4で矢印A1によって示したように)実際には完全な特徴データFDの2つの部分に対応しているものと判定できるものと想定する。入力データFD1は、特徴データFDのうちチャンネルC1およびC2における部分(図4にはそれぞれFD_C1およびFD_C2として示してある)に対応しており、入力データFD2は、特徴データFDのうちチャンネルC3〜C5における部分(図4にはそれぞれFD_C3、FD_C4、FD_C5として示してある)に対応している。上述したように、この層をステップS101における選択される層として使用することができる、すなわち上記の判定を実行して、この層をステップS101における選択される層とみなすことができる。
このような場合、この層の2つのカーネル(K1およびK2)を含む重みパラメータを、受け取った入力データFD1およびFD2に従って、(図4で矢印A2によって示したように)深さの次元において2つの部分に分割することができ、一方の部分は入力データFD1に対応しており、かつ部分カーネルFD1_K1(カーネルK1のチャンネルC1およびC2を含む)および部分カーネルFD1_K2(カーネルK2のチャンネルC1およびC2を含む)を含み、他方の部分は入力データFD2に対応しており、かつ部分カーネルFD2_K1(カーネルK1のチャンネルC3〜C5を含む)および部分カーネルFD2_K2(カーネルK2のチャンネルC3〜C5を含む)を含む。すなわち、この重みパラメータに対応する配列が、(図4で矢印A3によって示したように)縦方向に2つの部分に分割され、これによって、1行2列(すなわち2つの演算パラメータ)を有する演算パラメータ配列(図4で矢印A4が指している部分)が生成される。第1行第1列の演算パラメータは、入力データFD1と同じ複数のチャンネル(すなわちC1およびC2)に対応しており、第1行第2列の演算パラメータは、入力データFD2と同じ複数のチャンネル(すなわちC3〜C5)に対応している。
いくつかの別の実施形態においては、ステップS101において、重みパラメータを分割するかを、複数の基準に従って決定することができ、得られる演算パラメータの配列は、複数の条件を同時に満たすことができる。
一例においては、得られる演算パラメータ配列の中の各演算パラメータが、第1のしきい値より小さいかまたは等しいサイズを有し、かつ、第2のしきい値より小さいかまたは等しい数のカーネルを含むように、重みパラメータを分割することができる。
いくつかの別の例においては、得られる演算パラメータ配列が、第1の所定の数の倍数に等しい数の行を有し、かつ、演算パラメータ配列の中の各演算パラメータが、第3のしきい値より小さいかまたは等しい数のチャンネルを有するように、重みパラメータを分割することができる。
いくつかの別の例においては、得られる演算パラメータ配列が、第1の所定の数の倍数に等しい数の行と、第2の所定の数の倍数に等しい数の列とを有するように、重みパラメータを分割することができる。
いくつかの別の例においては、得られた演算パラメータ配列が、第1のしきい値を超えるサイズを有する演算パラメータを含む場合、第1のしきい値を超えるサイズを有する演算パラメータが位置する少なくとも行および/または列を、深さの次元およびカーネル数の次元の少なくとも一方においてさらに分割し、この場合、さらに分割された演算パラメータ配列の中の各演算パラメータが、第1のしきい値より小さいかまたは等しいサイズを有するように分割することができる。
ステップS101において、複数の演算パラメータを含む演算パラメータ配列を得た後、方法100はステップS105に進むことができ、ステップS105においては、得られた演算パラメータ配列の中の各演算パラメータをそれぞれ使用して、選択された層の入力データのうち、使用される演算パラメータの(1つまたは複数の)チャンネルに対応する、(1つまたは複数の)チャンネル内であるデータに対して、選択された層の演算を実行することができ、結果として、複数の部分演算結果を含む部分演算結果配列が得られる。
図5は、本開示の実施形態に係る、分割された演算パラメータを使用して演算を実行する例を示している。図5に示したように、入力データFDに対して畳み込み演算を実行するために3つのカーネルK1〜K3が使用され、入力データFDが5つのチャンネルFD_C1〜FD_C5を有し、各カーネルK1〜K3も5つのチャンネル(すなわちそれぞれK1_C1〜K1_C5、K2_C1〜K2_C5、K3_C1〜K3_C5)を有するものと想定する。
図5を参照し、重みパラメータがステップS101において深さおよびカーネル数の両方の次元において4つの部分に分割されており、したがって2行2列を有する演算パラメータ配列が得られているものと想定する。この演算パラメータ配列の第1行第1列の演算パラメータは、チャンネルC1およびC2におけるカーネルK1およびK2の部分に対応しており、第1行第2列の演算パラメータは、チャンネルC3〜C5におけるカーネルK1およびK2の部分に対応しており、第2行第1列の演算パラメータは、チャンネルC1およびC2におけるカーネルK3〜K5の部分に対応しており、第2行第2列の演算パラメータは、チャンネルC3〜C5におけるカーネルK3〜K5の部分に対応している。
ステップS105においては、演算パラメータ配列の第1行第1列の演算パラメータを使用して、入力データFDのうちチャンネルC1およびC2における部分に対して畳み込み演算を実行し、これによって部分演算結果FD’_(C1−C2)_1が生成される。さらに演算パラメータ配列の第1行第2列の演算パラメータを使用して、入力データFDのうちチャンネルC3〜C5における部分に対して畳み込み演算を実行し、これによって部分演算結果FD’_(C3−C5)_1が生成される。さらに演算パラメータ配列の第2行第1列の演算パラメータを使用して、入力データFDのうちチャンネルC1およびC2における部分に対して畳み込み演算を実行し、これによって部分演算結果FD’_(C1−C2)_2が生成される。さらに演算パラメータ配列の第2行第2列の演算パラメータを使用して、入力データFDのうちチャンネルC3〜C5における部分に対して畳み込み演算を実行し、これによって部分演算結果FD’_(C3−C5)_2が生成される。
図5に示したように、生成された4つの部分演算結果は、2行2列を有する部分演算結果配列を形成することができる。生成された部分演算結果配列は、図5における両方向矢印の下に示してあり、部分演算結果配列の中の各部分演算結果のさらに分かりやすい表現が、図5における両方向矢印の上に示してある。
図5は、畳み込み層の一例を示している。しかしながら、本開示の実施形態に係る本方法の原理は、畳み込みニューラルネットワークにおける別のタイプの層にも適用することができる。例えば、図5における特徴データFDが、残余層(residual layer)の入力データの役割を果たす場合、この残余層の重みパラメータを、ステップS101において深さの次元およびカーネル数の次元の少なくとも一方において分割して、複数の演算パラメータを含む演算パラメータ配列を得ることができる。次いでステップS105において、演算パラメータ配列の中の各演算パラメータをそれぞれ使用して、残余層の入力データのうち、使用される演算パラメータの(1つまたは複数の)チャンネルに対応する、(1つまたは複数の)チャンネル内のデータに対して演算を実行することができ、このステップは、各演算パラメータと、入力データのうち対応する(1つまたは複数の)チャンネル内のデータとを使用することによって計算された部分結果に対して、対応する部分ごとの加算演算(point-to-point add operations)を実行するステップを含む。したがって、複数の部分演算結果を含む部分演算結果配列を得ることができる。
ステップS105は、複数の演算パラメータに対して連続的に、または並行して実行することができる、あるいは、演算パラメータの行または列に対して並行して実行することができる。
部分演算結果配列を得た後、方法100はステップS110に進み、得られた部分演算結果配列に基づいて1つまたは複数の出力データを生成することができる。選択された層が畳み込みニューラルネットワークの最後の出力層である場合、出力データは、得られた部分演算結果配列に基づいて、畳み込みニューラルネットワーク全体の最終出力として生成することができる。選択された層が畳み込みニューラルネットワークの入力層または中間層(隠れ層)である場合、出力データは、必要に応じて以下の方法のいずれかにおいて生成することができ、生成された出力データを次の層に提供することができる。
− 部分演算結果配列の中の各部分演算結果を、選択された層の出力データとして次の層に提供する。
− 得られた部分演算結果配列に基づいて出力データを生成し、生成された出力データを次の層に提供する。
− 部分演算結果配列を、より少ない行および/またはより少ない列を有する部分演算結果配列に圧縮するため、部分演算結果配列の隣接する行および/または列におけるいくつかの部分演算結果を結合し、次いで、圧縮された部分演算結果配列の中の各部分演算結果を、選択された層の出力データとして次の層に提供する。
実施形態においては、部分演算結果配列の各行におけるすべての部分演算結果に対して、対応する部分ごとの加算演算を実行することによって、複数の列を有する部分演算結果配列を1列に圧縮することができ、次いで、圧縮された部分演算結果配列の中の各部分演算結果を、選択された層の1つの出力データとして次の層に提供することができる。
例えば、図5における部分演算結果配列FD’の場合、図6に示したように、部分演算結果配列FD’の第1行におけるすべての部分演算結果(FD’_(C1−C2)_1およびFD’_(C1−C2)_2)を、対応する部分ごとに加算することができ、部分演算結果配列FD’の第2行におけるすべての部分演算結果(FD’_(C3−C5)_1、FD’_(C3−C5)_2)を、対応する部分ごとに加算することができ、これによって、圧縮された部分演算結果配列FD’’が生成される。圧縮された部分演算結果配列FD’’は、2行1列を有し、第1行における部分演算結果FD’_(C1−C2)は、チャンネルC1およびC2における部分演算結果に対応しており、第2行における部分演算結果FD’_(C3−C5)は、チャンネルC3〜C5における部分演算結果に対応している。次いで、FD’_(C1−C2)およびFD’_(C3−C5)を、2つの出力データとして次の層に提供することができる。
次いで、次の層において方法100を再び適用することができる。例えば、上述したように、ステップS101においては、複数の部分入力データを受け取ると、それに応えて、その層の重みパラメータを、各部分入力データに従って分割することができ、この場合、分割によって得られる演算パラメータ配列が、その層が受け取った複数の部分入力データの数に等しい数の列を有し、かつ、各列におけるすべての演算パラメータが、その層が受け取った複数の部分入力データの1つと同じ1つまたは複数のチャンネルに対応するように、分割する。
いくつかの別の実施形態においては、部分演算結果配列の各列におけるすべての部分演算結果を深さ方向において一緒に結合することによって、複数の行を有する部分演算結果配列を、1行に圧縮することができ、次いで、圧縮された部分演算結果配列の中の各部分演算結果を、選択された層の1つの出力データとしてそれぞれ次の層に提供することができる。
例えば、図5における部分演算結果配列FD’の場合、図7に示したように、部分演算結果配列FD’の第1列におけるすべての部分演算結果(FD’_(C1−C2)_1およびFD’_(C3−C5)_1)は、深さ方向において一緒に結合されたそれぞれのチャンネルを有することができ、部分演算結果配列FD’の第2列におけるすべての部分演算結果(FD’_(C1−C2)_2およびFD’_(C3−C5)_2)は、深さ方向において一緒に結合されたそれぞれのチャンネルを有することができ、したがって、圧縮された部分演算結果配列FD’’が生成される。圧縮された部分演算結果配列FD’’は、1行2列を有し、第1列における部分演算結果FD’_1および第2列における部分演算結果FD’_2それぞれが、チャンネルC1〜C5を有する。次いで、部分演算結果FD’_1およびFD’_2を、2つの出力データとして次の層に提供することができる。
次いで、次の層において、例えば、その層の重みパラメータを使用して、各部分入力データに対して演算を実行することができ、演算によって得られた結果を、対応する部分ごとに加算することができる。例えば図8に示したように、図7に示した2つの部分入力データFD’_1およびFD’_2を次の層が受け取り、次の層の重みパラメータは3つのカーネルK1〜K3を有し、各カーネルが5つのチャンネルC1〜C5を含む。次いで、2つの部分出力データFD’’_1およびFD’’_2を得るために、この重みパラメータを使用して、部分入力データFD’_1およびFD’_2それぞれに対して演算を実行することができ、2つの部分出力データFD’’_1およびFD’’_2を、対応する部分ごとに互いに加算することができ、最終的に次の層の出力データFD’’’が得られる。図8に示した例においては、2つの部分出力データFD’’_1およびFD’’_2を、対応する部分ごとの加算演算を行わずに、さらに次の層に直接提供してもよい。いくつかの別の例においては、次の層が受け取る2つの部分入力データを、最初に対応する部分ごとに加算して完全な入力データを得ることができ、次いで、この完全な入力データに対して従来の演算を実行することができる、または本開示の実施形態に係る方法を使用することによって演算を実行することができる。別の例においては、次の層において、本開示の実施形態に係る方法を直接適用することができ、次の層の重みパラメータを最初に分割することができる。
いくつかの別の実施形態においては、複数の行および複数の列を含む部分演算結果配列の場合、部分演算結果配列の各行における部分演算結果を、対応する部分ごとに加算し、圧縮された部分演算結果配列の各列におけるすべての部分演算結果を深さ方向に一緒に結合することによって、出力データを生成することができる、または、部分演算結果配列の各列におけるすべての部分演算結果を深さ方向に一緒に結合し、圧縮された部分演算結果配列の各行における部分演算結果を、対応する部分ごとに加算することによって、出力データを生成することができる。
例えば、図6および図7に示した例を、図9または図10に示したように組み合わせて、出力データFD’を生成することができる。最終的な出力データは、図9に示した例と図10に示した例とで同じであることがわかる。
いくつかの別の実施形態においては、複数の行および複数の列を含む部分演算結果配列を、上述した圧縮方法に類似する方法で、行および/または列において圧縮し、より少ない行および/またはより少ない列を有する部分演算結果配列を得ることができ、次いで、圧縮された部分演算結果配列の中の各部分演算結果を、それぞれ出力データとして次の層に提供することができる。
例えば、3行3列を有する部分演算結果配列の場合、第1列のすべての部分演算結果と、第2列のすべての部分演算結果を、対応する部分ごとに加算して、結果として3行2列を有する部分演算結果配列を得ることができる。次いで、圧縮された部分演算結果配列の第2行のすべての部分演算結果と、第3行のすべての部分演算結果のそれぞれのチャンネルを深さ方向において一緒に結合して、2行2列を有するさらに小さい部分演算結果配列を得ることができる。次いで、2行2列を有する、このさらに小さい部分演算結果配列の中の各部分演算結果を、出力データとして次の層に提供することができる。
図11および図12は、上記の方法を実行する、本開示の実施形態に係る装置のブロック図を示している。
図11に示したように、例示的な装置1100は、1つまたは複数のプロセッサ1110を含むことができる。プロセッサ1110は、データを処理する、および/または、命令を実行することのできる任意の処理装置(汎用CPU、GPU、またはニューラルネットワーク専用プロセッサもしくはアクセラレータなど)とすることができる。例えば、プロセッサ1110は、本開示の実施形態に係る方法を実行することができる。これに加えて、プロセッサ1110は、装置1100の中の別の構成要素を、所望の機能を実行するように制御することもできる。
プロセッサ1110は、バスシステムおよび/または別の相互接続機構(図示していない)を通じて、メモリ1120およびI/Oインタフェース1130に接続することができる。
メモリ1120は、さまざまな形態におけるコンピュータ読み取り可能かつ書き込み可能記憶媒体(例えば揮発性メモリおよび/または不揮発性メモリ)を含むことができる。揮発性メモリとしては、例えば、ランダムアクセスメモリ(RAM)、キャッシュなどが挙げられる。不揮発性メモリとしては、例えば、読み出し専用メモリ(ROM)、ハードディスク、フラッシュメモリなどが挙げられる。読み取り可能かつ書き込み可能記憶媒体としては、以下に限定されないが、電気、磁気、光学、電磁気、赤外、または半導体の、システム、装置、またはデバイス、あるいはこれらの任意の組合せが挙げられる。例えば、ニューラルネットワーク専用のプロセッサと一緒に使用される場合、メモリ1120を、その専用プロセッサを担持するチップ上のRAMとすることもできる。メモリ1120は、ニューラルネットワークの特徴データを適合させる、本開示の実施形態に係る方法を実行するように、装置1100に命令するプログラム命令を含むことができる。
I/Oインタフェース1130は、パラメータまたはデータをプロセッサ1110に提供するようにと、プロセッサ1110によって処理された結果データを出力するように構成することができる。
さらに、図12に示したように、例示的な装置1200は、分割器1210と、演算器1220と、生成器1230とを含むことができる。
分割器1210は、複数の演算パラメータを含む演算パラメータ配列を得るために、畳み込みニューラルネットワークにおける選択された層の重みパラメータを、深さの次元およびカーネル数の次元の少なくとも一方において分割するように構成することができる。演算パラメータ配列の各行におけるすべての演算パラメータは、重みパラメータのカーネルのセットの同じサブセットからであり、かつ異なるチャンネルを有し、各列における各演算パラメータは、重みパラメータのカーネルのセットの異なるサブセットからであり、かつ同じ1つまたは複数のチャンネルを有する。一実施形態においては、分割器1210は、例えば例示的な方法100におけるステップS101を実行するように構成することができる。
演算器1220は、複数の部分演算結果を含む部分演算結果配列を得るために、演算パラメータ配列の中の各演算パラメータを使用して、選択された層の入力データのうち、使用される演算パラメータの(1つまたは複数の)チャンネルに対応する、(1つまたは複数の)チャンネル内であるデータに対して、選択された層の演算を実行するように構成することができる。一実施形態においては、演算器1220は、例えば例示的な方法100におけるステップS105を実行するように構成することができる。
生成器1230は、選択された層の1つまたは複数の出力データを、部分演算結果配列に基づいて生成するように構成することができる。一実施形態においては、生成器1230は、例えば例示的な方法100におけるステップS110を実行するように構成することができる。
なお、図11に示した装置1100および図12に示した装置1200は、単なる例であり、本発明の範囲をいかようにも制限しないことを理解されたい。本開示に実施形態に係る装置は、必要な場合に別の構成要素および/または別の構造を有することができる。
本開示の実施形態に係る方法および/または装置によって、畳み込みニューラルネットワークにおける大きなパラメータの畳み込み演算を、より小さいいくつかの畳み込み演算に分割することができ、かつ分割前と分割後とで結果の一貫性が維持され、このことは、演算の並列処理および/または実行効率を改善するうえで有利である。これに加えて、ハードウェアが限定されること(専用のハードウェアアクセラレータなど)を回避することができ、したがって、ハードウェアを任意のサイズの重みパラメータの畳み込み演算用に使用することができる。さらには、大きな重みパラメータを、より小さいいくつかの重みパラメータに分割することによって、各演算の重みパラメータ全体を高速メモリにキャッシュすることができ、これによって演算の正確さを確保することができ、また、データの受渡しを小さくすることができ、これらは、ハードウェアの実行効率を改善するうえで有利である。
文脈において明らかに求められない限り、説明および請求項全体を通じて、「〜を備えている」および「〜を含む」などの語は、記載されていない要素は含まない、またはすべての要素を網羅している意味ではなく、記載されていない要素も含みうるように(すなわち「〜を含み、ただしそれらに限定されない」という意味として)解釈されるものとする。さらには、語「ここで」、「上に」、「下に」、および類似する語は、本開示の中で使用されているとき、本開示のいずれかの特定の部分ではなく、本開示を全体として指すものとする。上の説明において使用されている単数形の語または複数形の語は、文脈において許容されるとき、それぞれ複数の要素または単数の要素を含みうる。2つ以上の項目のリスト(羅列)に関連する語「または」は、この語の次の解釈、すなわち、リストの中の項目のいずれか、リストの中の項目すべて、リストの中の項目の任意の組合せ、のすべてをカバーする。
本開示の実施形態の上の詳細な説明は、本開示のあらゆる形態を網羅すること、または本開示を上に開示した特定の形態に限定することを意図していない。上記には、実例を目的として本開示の特定の実施形態および例を説明したが、当業者に理解されるように、本開示の範囲内で、さまざまな同等の変形形態が可能である。例えば、プロセスやブロックは特定の順序で提示してあるが、代替実施形態では、これらのステップを別の順序で含むプロセスを実行する、またはこれらのブロックを別の順序で含むシステムを採用することができ、また、いくつかのプロセスまたはブロックを、削除する、移動する、加える、分割する、組み合わせる、および/または修正することができる。これらのプロセスまたはブロックのそれぞれは、さまざまな異なる方法で実施することができる。さらに、場合によってはこれらのプロセスまたはブロックが連続して実行されるものとして示してあるが、これらのプロセスまたはブロックを並列に実行する、または異なるタイミングで実行してもよい。
本明細書に提供されている本開示の教示内容は、必ずしも上述したシステムではなく、別のシステムに適用することができる。上述したさまざまな実施形態の要素および動作を組み合わせて、さらなる実施形態を提供することができる。
本開示のいくつかの実施形態を説明してきたが、これらの実施形態は一例として提示されているにすぎず、本開示の範囲を制限するようには意図されていない。本明細書に記載されている新規の方法およびシステムは、実際にはさまざまな別の形態に具体化することができる。さらには、本明細書に記載されている方法およびシステムの形態において、本開示の趣旨から逸脱することなく、さまざまな省略、置き換え、および変更を行うことができる。

Claims (15)

  1. 畳み込みニューラルネットワークにおける選択された層の重みパラメータを、深さの次元およびカーネル数の次元の少なくとも一方において分割することによって複数の演算パラメータを含む演算パラメータ配列を得るステップと、
    前記演算パラメータ配列の中の各演算パラメータを使用し、前記選択された層の入力データのうち、使用される前記演算パラメータのチャンネルに対応するデータに対して、前記選択された層の演算を実行することによって複数の部分演算結果を含む部分演算結果配列を得るステップと、
    前記部分演算結果配列に基づいて、前記選択された層の1つまたは複数の出力データを生成するステップと、
    を含み、
    前記演算パラメータ配列の各行におけるそれぞれの演算パラメータは、前記重みパラメータのカーネルのセットの同じサブセットであり、かつ、それぞれ異なるチャンネルを有し、
    前記演算パラメータ配列の各列におけるそれぞれの演算パラメータは、前記重みパラメータのカーネルの前記セットのそれぞれ異なるサブセットであり、かつ、同じ1つまたは複数のチャンネルを有する、
    畳み込みニューラルネットワークにおいて演算を実行する方法。
  2. 前記重みパラメータのサイズが第1のしきい値を超える場合、前記分割によって得られる前記演算パラメータ配列の中の各演算パラメータが前記第1のしきい値以下のサイズを有するように、前記重みパラメータを分割する、
    を含む、
    請求項1に記載の畳み込みニューラルネットワークにおいて演算を実行する方法。
  3. 前記重みパラメータのカーネル数が第2のしきい値を超える場合、前記分割によって得られる前記演算パラメータ配列の中の各演算パラメータが前記第2のしきい値以下の数のカーネルを有するように、前記重みパラメータを分割する、
    請求項1に記載の畳み込みニューラルネットワークにおいて演算を実行する方法。
  4. 前記重みパラメータが第1の所定の数以上の数のカーネルを有する場合、前記分割によって得られる前記演算パラメータ配列が前記第1の所定の数の倍数に等しい数の行を有するように、前記重みパラメータを分割する、
    請求項1に記載の畳み込みニューラルネットワークにおいて演算を実行する方法。
  5. 前記重みパラメータが第3のしきい値を超える数のチャンネルを有する場合、前記分割によって得られる前記演算パラメータ配列の中の各演算パラメータが前記第3のしきい値以下の数のチャンネルを有するように、前記重みパラメータを分割する、
    請求項1に記載の畳み込みニューラルネットワークにおいて演算を実行する方法。
  6. 前記重みパラメータが第2の所定の数以上の数のチャンネルを有する場合、前記分割によって得られる前記演算パラメータ配列が前記第2の所定の数の倍数に等しい数の列を有するように、前記重みパラメータを分割する、
    請求項1に記載の畳み込みニューラルネットワークにおいて演算を実行する方法。
  7. 前記選択された層が複数の部分入力データを受け取り、
    前記複数の部分入力データの任意の2つが同じチャンネルを有しておらず、かつ前記複数の部分入力データが、全体として、前記選択された層の完全な入力データに対応している場合、前記分割によって得られる前記演算パラメータ配列が、前記受け取った複数の部分入力データの数に等しい数の列を有し、かつ各列におけるすべての前記演算パラメータが、前記複数の部分入力データの1つと同じ1つまたは複数のチャンネルに対応するように、各部分入力データに従って前記重みパラメータを分割する、
    を含む、
    請求項1に記載の畳み込みニューラルネットワークにおいて演算を実行する方法。
  8. 前記行および/または前記列が、第1のしきい値を超えるサイズを有する演算パラメータを含む場合、さらに分割することによって得られる前記演算パラメータ配列の中の各演算パラメータが、前記第1のしきい値以下のサイズを有するように、前記演算パラメータ配列の少なくとも行および/または列を、深さの次元およびカーネル数の次元の少なくとも一方においてさらに分割するステップ、
    をさらに含む、
    請求項1に記載の畳み込みニューラルネットワークにおいて演算を実行する方法。
  9. 前記部分演算結果配列の中の各部分演算結果は、前記選択された層の1つの出力データに対応する、
    請求項1に記載の畳み込みニューラルネットワークにおいて演算を実行する方法。
  10. 前記部分演算結果配列が複数の列を含む場合、前記部分演算結果配列の各行におけるすべての前記部分演算結果を、対応する部分ごとに加算することによって、前記部分演算結果配列を1列に圧縮し、
    前記圧縮された部分演算結果配列の中の各部分演算結果は、前記選択された層の出力データに対応する、
    請求項1に記載の畳み込みニューラルネットワークにおいて演算を実行する方法。
  11. 前記部分演算結果配列が複数の行を含む場合、前記部分演算結果配列の各列におけるすべての前記部分演算結果を深さ方向において結合することによって、前記部分演算結果配列を1行に圧縮し、
    前記圧縮された部分演算結果配列の中の各部分演算結果は、前記選択された層の出力データに対応する、
    請求項1に記載の畳み込みニューラルネットワークにおいて演算を実行する方法。
  12. 前記部分演算結果配列が複数の行および複数の列を含む場合、
    前記部分演算結果配列の各行におけるすべての前記部分演算結果を、対応する部分ごとに加算した後、前記加算によって圧縮された前記部分演算結果配列の各列におけるすべての前記部分演算結果を、深さ方向において結合することによって、または、
    前記部分演算結果配列の各列におけるすべての部分演算結果を前記深さ方向において結合した後、前記結合によって圧縮された前記部分演算結果配列の各行におけるすべての部分演算結果配列を、対応する部分ごとに加算することによって、
    前記選択された層の出力データを生成する、
    請求項1に記載の畳み込みニューラルネットワークにおいて演算を実行する方法。
  13. 1つまたは複数のプロセッサと、
    命令を記憶するメモリと、
    を備え、
    前記命令が前記1つまたは複数のプロセッサによって実行された場合、前記1つまたは複数のプロセッサは、
    畳み込みニューラルネットワークにおける選択された層の重みパラメータを、深さの次元およびカーネル数の次元の少なくとも一方において分割することによって複数の演算パラメータを含む演算パラメータ配列を得るステップと、
    前記演算パラメータ配列の中の各演算パラメータを使用し、前記選択された層の入力データのうち、使用される前記演算パラメータのチャンネルに対応するデータに対して、前記選択された層の演算を実行することによって複数の部分演算結果を含む部分演算結果配列を得るステップと、
    前記部分演算結果配列に基づいて、前記選択された層の1つまたは複数の出力データを生成するステップと、
    を実行し、
    前記演算パラメータ配列の各行におけるそれぞれの演算パラメータは、前記重みパラメータのカーネルのセットの同じサブセットであり、かつ、それぞれ異なるチャンネルを有し、
    前記演算パラメータ配列の各列におけるそれぞれの演算パラメータは、前記重みパラメータのカーネルの前記セットのそれぞれ異なるサブセットであり、かつ、同じ1つまたは複数のチャンネルを有する、
    畳み込みニューラルネットワークにおいて演算を実行する装置。
  14. 畳み込みニューラルネットワークにおける選択された層の重みパラメータを、深さの次元およびカーネル数の次元の少なくとも一方において分割することによって複数の演算パラメータを含む演算パラメータ配列を得るように構成されている分割器と、
    前記演算パラメータ配列の中の各演算パラメータを使用し、前記選択された層の入力データのうち、使用される前記演算パラメータのチャンネルに対応するデータに対して、前記選択された層の演算を実行することによって複数の部分演算結果を含む部分演算結果配列を得るように構成されている演算器と、
    前記部分演算結果配列に基づいて、前記選択された層の1つまたは複数の出力データを生成するように構成されている生成器と、
    を備え、
    前記演算パラメータ配列の各行におけるそれぞれの演算パラメータは、前記重みパラメータのカーネルのセットの同じサブセットであり、かつ、それぞれ異なるチャンネルを有し、
    前記演算パラメータ配列の各列におけるそれぞれの演算パラメータは、前記重みパラメータのカーネルの前記セットのそれぞれ異なるサブセットであり、かつ、同じ1つまたは複数のチャンネルを有する、
    畳み込みニューラルネットワークにおいて演算を実行する装置。
  15. 命令を記憶する非一時的な記憶媒体であって、
    前記命令が、畳み込みニューラルネットワークにおいて演算を実行するように構成されているプロセッサによって実行された場合、前記プロセッサは、
    前記畳み込みニューラルネットワークにおける選択された層の重みパラメータを、深さの次元およびカーネル数の次元の少なくとも一方において分割することによって複数の演算パラメータを含む演算パラメータ配列を得るステップと、
    前記演算パラメータ配列の中の各演算パラメータを使用し、前記選択された層の入力データのうち、使用される前記演算パラメータのチャンネルに対応するデータに対して、前記選択された層の演算を実行することによって複数の部分演算結果を含む部分演算結果配列を得るステップと、
    前記部分演算結果配列に基づいて、前記選択された層の1つまたは複数の出力データを生成するステップと、
    を実行し、
    前記演算パラメータ配列の各行におけるそれぞれの演算パラメータは、前記重みパラメータのカーネルのセットの同じサブセットであり、かつ、それぞれ異なるチャンネルを有し、
    前記演算パラメータ配列の各列におけるそれぞれの演算パラメータは、前記重みパラメータのカーネルの前記セットのそれぞれ異なるサブセットであり、かつ、同じ1つまたは複数のチャンネルを有する、
    非一時的な記憶媒体。
JP2018176240A 2017-10-31 2018-09-20 畳み込みニューラルネットワークにおいて演算を実行する方法および装置並びに非一時的な記憶媒体 Active JP6726246B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201711041806.5 2017-10-31
CN201711041806.5A CN107832839B (zh) 2017-10-31 2017-10-31 执行卷积神经网络中的运算的方法和装置

Publications (2)

Publication Number Publication Date
JP2019082996A JP2019082996A (ja) 2019-05-30
JP6726246B2 true JP6726246B2 (ja) 2020-07-22

Family

ID=61650154

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018176240A Active JP6726246B2 (ja) 2017-10-31 2018-09-20 畳み込みニューラルネットワークにおいて演算を実行する方法および装置並びに非一時的な記憶媒体

Country Status (5)

Country Link
US (1) US20190130265A1 (ja)
EP (1) EP3477556A1 (ja)
JP (1) JP6726246B2 (ja)
KR (1) KR20190049593A (ja)
CN (1) CN107832839B (ja)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10387740B2 (en) * 2016-10-10 2019-08-20 Gyrfalcon Technology Inc. Object detection and recognition apparatus based on CNN based integrated circuits
KR102548718B1 (ko) * 2017-06-07 2023-06-28 삼성전자주식회사 전자 장치 및 그 제어 방법
CN107633295B (zh) * 2017-09-25 2020-04-28 南京地平线机器人技术有限公司 用于适配神经网络的参数的方法和装置
WO2019090325A1 (en) * 2017-11-06 2019-05-09 Neuralmagic, Inc. Methods and systems for improved transforms in convolutional neural networks
US11715287B2 (en) 2017-11-18 2023-08-01 Neuralmagic Inc. Systems and methods for exchange of data in distributed training of machine learning algorithms
CN108647773B (zh) * 2018-04-20 2021-07-23 复旦大学 一种可重构卷积神经网络的硬件互连系统
KR20190136431A (ko) * 2018-05-30 2019-12-10 삼성전자주식회사 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법
US11449363B2 (en) 2018-05-31 2022-09-20 Neuralmagic Inc. Systems and methods for improved neural network execution
US10832133B2 (en) 2018-05-31 2020-11-10 Neuralmagic Inc. System and method of executing neural networks
CN108984426B (zh) * 2018-08-03 2021-01-26 北京字节跳动网络技术有限公司 用于处理数据的方法和装置
CN109284817B (zh) * 2018-08-31 2022-07-05 中国科学院上海高等研究院 深度可分离卷积神经网络处理架构/方法/系统及介质
WO2020072274A1 (en) 2018-10-01 2020-04-09 Neuralmagic Inc. Systems and methods for neural network pruning with accuracy preservation
US10726073B2 (en) * 2018-10-26 2020-07-28 Tensil AI Company Method and apparatus for compiling computation graphs into an integrated circuit
CN109697500B (zh) * 2018-12-29 2020-06-09 中科寒武纪科技股份有限公司 数据处理方法、装置、电子设备及存储介质
US11544559B2 (en) 2019-01-08 2023-01-03 Neuralmagic Inc. System and method for executing convolution in a neural network
CN109919311B (zh) * 2019-03-13 2020-04-10 北京地平线机器人技术研发有限公司 生成指令序列的方法、执行神经网络运算的方法和装置
CN110334798B (zh) * 2019-03-13 2021-06-08 北京地平线机器人技术研发有限公司 特征数据提取方法及装置、指令生成方法及装置
CN111832585B (zh) * 2019-04-16 2023-04-18 杭州海康威视数字技术股份有限公司 图像处理的方法和装置
CN110377342B (zh) * 2019-06-10 2022-08-30 平安科技(深圳)有限公司 基于卷积神经网络的显存处理方法、装置及存储介质
JP7391553B2 (ja) * 2019-06-28 2023-12-05 キヤノン株式会社 情報処理装置、情報処理方法、及びプログラム
WO2021012215A1 (zh) * 2019-07-24 2021-01-28 华为技术有限公司 神经网络切分方法、预测方法及相关装置
KR102372869B1 (ko) * 2019-07-31 2022-03-08 한양대학교 산학협력단 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법
US11195095B2 (en) 2019-08-08 2021-12-07 Neuralmagic Inc. System and method of accelerating execution of a neural network
JP2021047711A (ja) 2019-09-19 2021-03-25 キオクシア株式会社 演算装置、演算方法、及び学習方法
CN110633153A (zh) * 2019-09-24 2019-12-31 上海寒武纪信息科技有限公司 一种用多核处理器实现神经网络模型拆分方法及相关产品
CN110826708B (zh) * 2019-09-24 2022-05-31 安徽寒武纪信息科技有限公司 一种用多核处理器实现神经网络模型拆分方法及相关产品
CN110689115B (zh) * 2019-09-24 2023-03-31 安徽寒武纪信息科技有限公司 神经网络模型处理方法、装置、计算机设备及存储介质
US11163453B2 (en) * 2019-11-01 2021-11-02 Samsung Electronics Co., Ltd. Memory device, memory system including memory device and vehicle-based system including memory system
KR20210053390A (ko) 2019-11-01 2021-05-12 삼성전자주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
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
US10924460B2 (en) 2019-12-13 2021-02-16 TripleBlind, Inc. Systems and methods for dividing filters in neural networks for private data computations
KR102384587B1 (ko) * 2020-08-25 2022-04-08 오픈엣지테크놀로지 주식회사 하드웨어 가속기의 출력 데이터를 압축하는 방법, 하드웨어 가속기로의 입력 데이터를 디코딩하는 방법, 및 이를 위한 하드웨어 가속기
WO2022109215A1 (en) 2020-11-20 2022-05-27 TripleBlind, Inc. Systems and methods for providing a blind de-identification of privacy data
US11556757B1 (en) 2020-12-10 2023-01-17 Neuralmagic Ltd. System and method of executing deep tensor columns in neural networks
JP2022178465A (ja) 2021-05-20 2022-12-02 日立Astemo株式会社 演算装置、認識装置および制御装置
US11960982B1 (en) 2021-10-21 2024-04-16 Neuralmagic, Inc. System and method of determining and executing deep tensor columns in neural networks
WO2024014002A1 (ja) * 2022-07-15 2024-01-18 日本電信電話株式会社 推論処理装置、推論処理方法、及び推論処理プログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7142626B2 (en) * 2003-05-30 2006-11-28 George Shu-Xing Cheng Apparatus and method of controlling multi-input-single-output systems
AU2016222894A1 (en) * 2015-02-23 2017-08-31 Cellanyx Diagnostics, Llc Cell imaging and analysis to differentiate clinically relevant sub-populations of cells
US10204301B2 (en) * 2015-03-18 2019-02-12 International Business Machines Corporation Implementing a neural network algorithm on a neurosynaptic substrate based on criteria related to the neurosynaptic substrate
US10438117B1 (en) * 2015-05-21 2019-10-08 Google Llc Computing convolutions using a neural network processor
US10049322B2 (en) * 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
CN106650922B (zh) * 2016-09-29 2019-05-03 清华大学 硬件神经网络转换方法、计算装置、软硬件协作系统
US10565492B2 (en) * 2016-12-31 2020-02-18 Via Alliance Semiconductor Co., Ltd. Neural network unit with segmentable array width rotator
CN106909970B (zh) * 2017-01-12 2020-04-21 南京风兴科技有限公司 一种基于近似计算的二值权重卷积神经网络硬件加速器计算装置
CN107273969B (zh) * 2017-05-11 2020-06-19 西安交通大学 一种参数化可扩展的神经网络全连接层多层互连结构
WO2019051658A1 (en) * 2017-09-13 2019-03-21 Intel Corporation INCREMENTAL NETWORK QUANTIFICATION

Also Published As

Publication number Publication date
EP3477556A1 (en) 2019-05-01
CN107832839A (zh) 2018-03-23
KR20190049593A (ko) 2019-05-09
JP2019082996A (ja) 2019-05-30
US20190130265A1 (en) 2019-05-02
CN107832839B (zh) 2020-02-14

Similar Documents

Publication Publication Date Title
JP6726246B2 (ja) 畳み込みニューラルネットワークにおいて演算を実行する方法および装置並びに非一時的な記憶媒体
US11461632B2 (en) Method and apparatus for adapting parameters of neural network
JP6856609B2 (ja) 畳み込みニューラルネットワークの畳み込み層における演算を実行する方法及び装置
US11847569B2 (en) Training and application method of a multi-layer neural network model, apparatus and storage medium
KR102011671B1 (ko) 이종 계산 장치 기반의 질의 처리 방법 및 장치
WO2019128475A1 (zh) 数据训练方法及装置、存储介质、电子装置
US20220147795A1 (en) Neural network tiling method, prediction method, and related apparatus
CN109190758B (zh) 用于展开卷积神经网络的张量数据的方法和装置
KR20180073118A (ko) 컨볼루션 신경망 처리 방법 및 장치
CN111831254A (zh) 图像处理加速方法、图像处理模型存储方法及对应装置
WO2017124930A1 (zh) 一种特征数据处理方法及设备
JP7042210B2 (ja) 学習モデル生成装置、学習モデル生成方法、及びプログラム
JP2021507345A (ja) 畳み込みニューラル・ネットワークの完全なカーネルを近似するためのスパース・カーネルの融合
WO2020253117A1 (zh) 一种数据处理方法及装置
JP7332722B2 (ja) データ処理方法、装置、記憶媒体及び電子機器
KR20220154698A (ko) 병렬 프로세싱 동안 전력 영향들을 감소시키기 위한 프로세싱 데이터 스트림 수정
CN104866297A (zh) 一种优化核函数的方法和装置
CN115130672B (zh) 一种软硬件协同优化卷积神经网络计算的方法及装置
CN111027688A (zh) 一种基于fpga的神经网络计算器生成方法及装置
US20220222318A1 (en) Performing tensor operations using a programmable control engine
CN114021708B (zh) 一种数据处理方法、装置、系统、电子设备及存储介质
WO2015062035A1 (zh) 一种列式数据库处理方法及装置
US11748251B2 (en) Storing tensors in memory based on depth
US20240080255A1 (en) Network traffic control using estimated maximum gap
US20230316080A1 (en) Sparsity masking methods for neural network training

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181116

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20190109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20190110

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200306

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20200306

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20200311

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200626

R150 Certificate of patent or registration of utility model

Ref document number: 6726246

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250