JP2021034024A - データを処理する方法及びその装置 - Google Patents

データを処理する方法及びその装置 Download PDF

Info

Publication number
JP2021034024A
JP2021034024A JP2020109945A JP2020109945A JP2021034024A JP 2021034024 A JP2021034024 A JP 2021034024A JP 2020109945 A JP2020109945 A JP 2020109945A JP 2020109945 A JP2020109945 A JP 2020109945A JP 2021034024 A JP2021034024 A JP 2021034024A
Authority
JP
Japan
Prior art keywords
data
processor
input
rearranged
input data
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.)
Granted
Application number
JP2020109945A
Other languages
English (en)
Other versions
JP7234185B2 (ja
Inventor
▲ひょん▼宣 朴
HyunSun PARK
▲ひょん▼宣 朴
▲ゆ▼珍 金
Yoojin Kim
▲ゆ▼珍 金
炯碩 兪
Hyeongseok Yu
炯碩 兪
世煥 李
Sehwan Lee
世煥 李
準▲う▼ 張
Junwoo Jang
準▲う▼ 張
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2021034024A publication Critical patent/JP2021034024A/ja
Application granted granted Critical
Publication of JP7234185B2 publication Critical patent/JP7234185B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/048Activation functions

Landscapes

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

Abstract

【課題】 データを処理する方法及びその装置を提供すること。【解決手段】 一側面によるデータを処理する方法は、入力データに含まれた有効情報に基づいて、入力データのスパース性を確認する段階と、スパース性の形態に基づいて、入力データを再配列する段階と、再配列されたデータを処理し、出力データを生成する段階と、を含む。【選択図】 図4

Description

本発明は、データを処理する方法及びその装置に関する。
ニューラルネットワーク(neural network)は、生物学的な脳をモデリングしたコンピュータ科学的アーキテクチャ(computational architecture)を参照する。最近の、ニューラルネットワーク技術の発展により、多種の電子システムにおいて、ニューラルネットワーク装置を使用して入力データを分析し、有効な情報を抽出している。
ニューラルネットワーク装置は、入力データに係わる多量の演算を行う。そのようなニューラルネットワーク演算を効率的に処理することができる技術が研究されている。
米国特許出願公開第2018/0046898号明細書
本発明が解決しようとする課題は、データを処理する方法及びその装置を提供するところにある。
また、前記方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を提供するところにある。
本発明で解決すべき技術的課題は、前述のような技術的課題に限定されるものではなく、他の技術的課題が存在するものである。
一側面によるデータを処理する方法は、入力データに含まれた有効情報に基づいて、前記入力データのスパース性(sparsity)を確認する段階と、前記スパース性の形態に基づいて、前記入力データを再配列(rearrangement)する段階と、前記再配列されたデータを処理し、出力データを生成する段階と、を含む。
他の側面による不揮発性記録媒体は、前述の方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を含む。
さらに他の側面によるデータを処理する装置は、少なくとも1つのプログラムが保存されたメモリと、前記少なくとも1つのプログラムを実行するプロセッサと、を含み、前記プロセッサは、入力データに含まれた有効情報に基づいて、前記入力データのスパース性を確認し、前記スパース性の形態に基づいて、前記入力データを再配列し、前記再配列されたデータを処理し、出力データを生成する。
本発明によれば、データ処理装置は、コンボリューション演算が行われるロジック回路に入力される0の数が最小化されるように、入力フィーチャマップデータ及び/又はカーネルデータを再配列する。従って、データ処理装置は、不要な演算が行われる数を最小化させることができる。
ニューラルネットワークのアーキテクチャについて説明するための図面である。 ニューラルネットワークのコンボリューション演算の例示について説明するための図面である。 ニューラルネットワークのコンボリューション演算の例示について説明するための図面である。 データ処理装置の一例を図示した構成図である。 データを処理する方法の一例について説明するためのフローチャートである。 プロセッサが入力データのスパース性を確認する一例について説明するための図面である。 プロセッサが入力データのスパース性を確認する一例について説明するための図面である。 プロセッサが入力データを再配列する一例について説明するための図面である。 プロセッサが入力データを再配列する他の例について説明するための図面である。 プロセッサが入力データを再配列するさらに他の例について説明するための図面である。 プロセッサが入力データを再配列するさらに他の例について説明するための図面である。 プロセッサが再配列されたデータを処理し、出力データを生成する例を図示したフローチャートである。 プロセッサが再配列されたデータに、第2規則を適用する例について説明するための図面である。 プロセッサが再配列されたデータに、第3規則を適用する例について説明するための図面である。
本発明の実施形態で使用される用語は、可能な限り、現在広く使用される一般的な用語を選択したが、それは、当技術分野における当業者の意図、判例、新たな技術の出現などによって異なり得る。また、特定の場合、出願人が任意に選定した用語もあり、その場合、当該説明部分で詳細にその意味を記載する。従って、明細書で使用される用語は、単純な用語の名称ではなく、その用語が有する意味と、明細書の全般にわたる内容とに基づいて定義されなければならない。
明細書全体において、ある部分がある構成要素を「含む」という場合には、特に明記されない限り、他の構成要素を排除するものではなく、他の構成要素をさらに含んでもよいということを意味する。また、明細書に記載された「…ユニット」、「…モジュール」というような用語は、少なくとも1つの機能や動作を処理する単位を意味し、それは、ハードウェアまたはソフトウェアによって具現されるか、あるいはハードウェアとソフトウェアとの結合によって具現されるものである。
以下では、添付図面を参照し、実施形態について詳細に説明する。しかし、本実施形態は、さまざまに異なる形態にも具現され、ここで説明する例に限定されるものではない。
以下では、図面を参照し、本実施形態について詳細に説明する。
図1は、ニューラルネットワークのアーキテクチャについて説明するための図面である。
図1を参照すれば、ニューラルネットワーク1は、ディープニューラルネットワーク(DNN:deep neural network)、またはn階層ニューラルネットワーク(n−layers neural networks)のアーキテクチャでもある。DNNまたはn階層ニューラルネットワークは、コンボリューションニューラルネットワーク(CNN:convolution nalneural networks)、リカレントニューラルネットワーク(RNN:recurrent neural networks)、Deep Belief Networks、Restricted Boltzman Machinesなどに該当する。例えば、ニューラルネットワーク1は、コンボリューションニューラルネットワーク(CNN)としても具現されるが、それに限定されるものではない。図1においては、ニューラルネットワーク1の例示に該当するコンボリューションニューラルネットワークにおいて、一部のコンボリューションレイヤが図示されているが、該コンボリューションニューラルネットワークは、図示されたコンボリューションレイヤード以外にも、プーリングレイヤ(pooling layer)、フルコネクティッド(fully connected)レイヤなどをさらに含んでもよい。
ニューラルネットワーク1は、入力イメージ、フィーチャマップ(feature maps)及び出力を含む複数レイヤを有するアーキテクチャによっても具現される。ニューラルネットワーク1において、入力イメージは、カーネル(kernel)と呼ばれるフィルタとのコンボリューション演算が行われ、その結果、フィーチャマップが出力される。このときに生成された出力フィーチャマップは、入力フィーチャマップとして、さらにカーネルとのコンボリューション演算が行われ、新たなフィーチャマップが出力される。そのようなコンボリューション演算が反復的に行われた結果、最終的には、ニューラルネットワーク1を介した入力イメージの特徴に係わる認識結果が出力される。
例えば、図1のニューラルネットワーク1に、24x24ピクセルサイズのイメージが入力された場合、入力イメージは、カーネルとのコンボリューション演算を介して、20x20ピクセルサイズを有する4チャネルのフィーチャマップにも出力される。その後にも、20x20フィーチャマップは、カーネルとの反復的なコンボリューション演算を介して大きさを小さくしながら、最終的には、1x1ピクセルサイズの特徴が出力されもする。ニューラルネットワーク1は、さまざまなレイヤにおいて、コンボリューション演算及びサブサンプリング(または、プーリング)演算を反復的に行うことにより、入力イメージからイメージ全体を代表することができるロバストな特徴をフィルタリングして出力し、出力された最終特徴を介して、入力イメージの認識結果を導き出すことができる。
図2及び図3は、ニューラルネットワークのコンボリューション演算の例示について説明するための図面である。
図2を参照すれば、入力フィーチャマップ210は、6x6ピクセルサイズであり、カーネル220は、3x3ピクセルサイズであり、出力フィーチャマップ230は、4x4ピクセルサイズであると仮定するが、それに限定されるものではない。ニューラルネットワークは、多様なサイズのフィーチャマップ及びカーネルによっても具現される。また、入力フィーチャマップ210、カーネル220及び出力フィーチャマップ230に定義された値は、いずれも単に例示的な値であり、本実施形態は、それに限定されるものではない。
カーネル220は、入力フィーチャマップ210において、3x3ピクセルサイズの領域(または、タイル)単位でスライディングしながら、コンボリューション演算を行う。該コンボリューション演算は、入力フィーチャマップ210のある領域の各ピクセル値と対応するカーネル220のエレメントであるウェイト(weight)間の乗算が行われ、乗算によって獲得された値をいずれも合算し、出力フィーチャマップ230の各ピクセル値を求める演算を意味する。
まず、カーネル220は、入力フィーチャマップ210の第1領域211とコンボリューション演算を行う。すなわち、第1領域211のピクセル値1,2,3,4,5,6,7,8,9は、それぞれカーネル220のエレメントであるウェイト1,−3,+4,+7,−2,−1,−5,+3,+1とそれぞれ乗ぜられ、その結果として、−1,−6,12,28,−10,−6,−35,24,9が獲得される。次に、獲得された値1,−6,12,28,−10,−6,−35,24,9をいずれも加えた結果である17が計算され、出力フィーチャマップ230の1行1列のピクセル値231は、17に決定される。ここで、出力フィーチャマップ230の1行1列のピクセル値231は、第1領域211に対応する。
前述したのt同一方式で、入力フィーチャマップ210の第2領域212と、カーネル220とのコンボリューション演算が行われることにより、出力フィーチャマップ230の1行2列のピクセル値232である4が決定される。最終的に、入力フィーチャマップ210の最後のウィンドウである第16領域213と、カーネル220とのコンボリューション演算が行われることにより、出力フィーチャマップ230の4行4列のピクセル値233である11が決定される。
一方、図2においては、二次元コンボリューション演算について説明されたが、コンボリューション演算は、複数チャネルの入力フィーチャマップ、カーネル、出力フィーチャマップが存在する三次元コンボリューション演算にも該当する。それについては、図3を参照して説明する。
図3を参照すれば、入力フィーチャマップ201は、三次元サイズを有することができ、X個の入力チャネルが存在し、各入力チャネルの二次元入力フィーチャマップは、H行W列の大きさを有することができる(X、W、Hは、自然数である)。カーネル202は、四次元サイズを有することができ、R行S列の大きさを有する二次元のカーネルが、X個の入力チャネル、及びY個の出力チャネルほど存在することができる(R、S、Yは、自然数である)。言い換えれば、カーネル202は、入力フィーチャマップ201の入力チャネル数X、及び出力フィーチャマップ203の出力チャネル数Yに対応する個数のチャネルを有することができ、各チャネルの二次元カーネルは、R行S列の大きさを有することができる。出力フィーチャマップ203は、三次元入力フィーチャマップ201と4次元カーネル202との三次元コンボリューション演算を介して生成され、三次元コンボリューション演算結果により、Y個のチャネルが存在することができる。
1つの二次元入力フィーチャマップと、1つの二次元カーネルとのコンボリューション演算を介して出力フィーチャマップが生成される過程は、図2を参照して説明した通りであり、図2で説明された二次元コンボリューション演算が、X個の入力チャネルの入力フィーチャマップ201と、X個の入力チャネル及びY個の出力チャネルのカーネル202との間で反復的に行われることにより、Y個の出力チャネルの出力フィーチャマップ203が生成される。
図4は、データ処理装置の一例を図示した構成図である。
図4を参照すれば、データ処理装置400は、メモリ410及びプロセッサ420を含む。また、図4には、図示されていないが、データ処理装置400は、外部メモリとも連結されている。図4のデータ処理装置400には、本実施形態と係わる構成要素だけが図示されている。従って、図4に図示された構成要素以外に、他の汎用的な構成要素がデータ処理装置400にさらに含まれてもよいことが、当業者に自明であろう。
データ処理装置400は、図1ないし図3を参照して説明したニューラルネットワークが具現された装置でもある。例えば、データ処理装置400は、PC(personal computer)、サーバデバイス、モバイルデバイス、埋め込みデバイスのような多種のデバイスによっても具現される。具体的な例として、データ処理装置400は、ニューラルネットワークを利用した音声認識、映像認識、映像分類などを行うスマートフォン、タブレットデバイス、AR(augmented reality)デバイス、IoT(internet of things)デバイス、自律走行自動車、ロボティックス、医療機器などに含まれてもよいが、それらに限定されるものではない。また、データ処理装置400は、前述のデバイスに搭載される専用ハードウェアアクセラレータ(HW accelerator)にも該当し、ニューラルネットワーク駆動のための専用モジュールであるNPU(neural processing unit)、TPU(tensor processing unit)、Neural Engineのようなハードウェアアクセラレータでもある。
メモリ410は、データ処理装置400内で処理される各種データを保存する。例えば、メモリ410は、データ処理装置400で処理されたデータ及び処理されるデータを保存することができる。また、メモリ410は、データ処理装置400によって駆動されるアプリケーション、ドライバなどを保存することができる。
例えば、メモリ410は、DRAM(dynamic random access memory)、SRAM(static random access memory)のようなRAM(random access memory)、ROM(read-only memory)、EEPROM(electrically erasable programmable read-only memory)、CD−ROM(compact disc read only memory)、ブルーレイ(Blu-ray)、他の光学ディスクストレージ、;HDD(hard disk drive)、SSD(solid state drive)またはフラッシュメモリを含んでもよい。
プロセッサ420は、データ処理装置400において、ニューラルネットワークを駆動するための全般的な機能を制御する役割を行う。例えば、プロセッサ420は、メモリ410に保存されたプログラムを実行することにより、データ処理装置400を全般的に制御する。プロセッサ420は、データ処理装置400内に具備されたCPU(central processing unit)、GPU(graphics processing unit)、AP(application processor)などによっても具現される、それらに限定されるものではない。
プロセッサ420は、メモリ410から、データ(例えば、イメージデータ、フィーチャマップデータ、カーネルデータなど)をリード/ライト(read/write)し、リード/ライトされたデータを利用し、ニューラルネットワークを実行する。ニューラルネットワークが実行されるとき、プロセッサ420は、内部に含まれるプロセシングユニットを駆動させ、出力フィーチャマップに係わるデータを生成するための入力フィーチャマップとカーネルとのコンボリューション演算を反復的に行う。このとき、入力フィーチャマップのチャネル数、カーネルのチャネル数、入力フィーチャマップの大きさ、カーネルの大きさ、値の精度(precision)のような多様なファクタに依存し、コンボリューション演算の演算量が決定される。
例えば、プロセシングユニットは、コンボリューション演算のためのロジック回路を含んでもよい。具体的には、プロセシングユニットは、乗算器(multiplier)、加算器(adder)及び累算器(accumulator)の組み合わせによって具現された演算器を含んでもよい。また、該乗算器は、多数のサブ乗算器の組み合わせによっても具現され、該加算器も多数のサブ加算器の組み合わせによっても具現される。
プロセッサ420は、コンボリューション演算を処理するために、キャッシュ(cache)機能を担当するオンチップ(on-chip)メモリ、及び入力フィーチャマップのピクセル値、またはカーネルのウェイト値のような多様なオペランド(operand)をディスパッチするためのディスパッチャ(dispatcher)をさらに含んでもよい。例えば、該ディスパッチャは、メモリ410に保存されているデータから、プロセシングユニットが行う演算に必要なピクセル値及びウェイト値などのオペランドを、オンチップメモリにディスパッチする。そして、該ディスパッチャは、オンチップメモリにディスパッチされたオペランドを、コンボリューション演算のために、プロセシングユニットにさらにディスパッチする。
プロセッサ420が入力フィーチャマップデータとカーネルデータとのコンボリューション演算を行うために、演算の対象であるデータに有効ではない情報が含まれる場合、当該演算は、不要な演算になる。例えば、演算の対象であるデータが0である場合、当該データ間のコンボリューション演算は、0に出力されるので、そのような演算は、プロセッサ420の演算量を増加させるだけで不要である。
一方、入力フィーチャマップデータ及びカーネルデータは、M行N列のマトリックスによっても表現される(M、Nは、自然数である)。すなわち、入力フィーチャマップマトリックスとカーネルマトリックスは、複数のエレメントを含み、複数のエレメントにおいて、0が含まれる数と、不要な演算の回数は、比例する。
データ処理装置400は、入力データ(例えば、入力フィーチャマップデータ及びカーネルデータ)に含まれる有効情報(例えば、0ではないデータ)に基づいて、入力データを再配列(rearrangement)する。ここで、入力データ再配列は、マトリックスに含まれる一部エレメントの位置を変更したり、マトリックスに含まれる一部行または一部列を省略(skip)したりするように、マトリックスの最初構成を変更する作業を意味する。
それにより、データ処理装置400は、不要な演算を行わなくとも、有効な結果を出力することができるが、所望結果が出力されながらも、全体演算量が低減される。
以下、図5ないし図13を参照して、データ処理装置400が、入力データを再配列し、再配列されたデータを処理し、出力データを生成する例について説明する。
図5は、データを処理する方法の一例について説明するためのフローチャートである。
図5を参照すれば、データを処理する方法は、図4に図示されたデータ処理装置400において、時系列的に処理される段階によって構成される。従って、以下で省略された内容であるとしても、図4に図示されたデータ処理装置400について、前述の内容は、図5のデータを処理する方法にも適用されるということが分かる。
510段階において、プロセッサ420は、入力データに含まれた有効情報に基づいて、入力データのスパース性(sparsity)を確認する。
該入力データは、プロセッサ420がコンボリューション演算を行う対象を意味する。例えば、該入力データは、イメージデータ、フィーチャマップデータまたはカーネルデータが含まれてもよい。このとき、該フィーチャマップデータは、入力フィーチャマップデータまたは出力フィーチャマップデータでもある。プロセッサ420が複数のレイヤにおいて、コンボリューション演算を行い、以前レイヤでの出力フィーチャマップデータが、次のレイヤでの入力フィーチャマップデータになる。従って、510段階の入力データは、入力フィーチャマップデータでもあり、または出力フィーチャマップデータでもある。該入力データは、データがエレメントとして含まれたマトリックスにもなるということは、図4を参照して説明した通りである。
有効情報(valid information)は、意味の有るコンボリューション演算が行われるデータを意味する。一般的には、情報は、数字によって表現されるものであるために、有効情報は、0ではない数字であるデータを意味する。言い換えれば、無意味な情報は、そのデータが0であるによっても表現される。
プロセッサ420は、入力データのスパース性を確認する。ここで、スパース性とは、データに空白があるか否かということ、または空白が含まれたデータの状態を意味する。前述のとおり、有効情報は、0ではない数字であるデータによっても表現される。従って、0であるデータは、無意味な情報を意味し、それは、当該データが空白であること(すなわち、データがないこと)とも解釈される。従って、プロセッサ420が入力データのスパース性を確認することは、プロセッサ420が入力データ内の0分布を確認することと同一である。
以下、図6A及び図6Bを参照し、プロセッサ420が入力データのスパース性を確認する例について説明する。
図6A及び図6Bは、プロセッサが入力データのスパース性を確認する一例について説明するための図面である。
図6A及び図6Bには、プロセッサ420が行うコンボリューション演算を図式化されている。プロセッサ420は、入力データ610,620,630,640間のコンボリューション演算を行い、出力データを生成する。例えば、入力データ610,620,630,640は、マトリックスによっても表現され、プロセッサ420は、マトリックスに含まれたチャネルのエレメント間の積の和(sum of product)を実行し、出力データを生成することができる。
図6Aには、入力データとして、入力フィーチャマップデータ610とカーネルデータ620とが図示されており、図6Bには、入力データとして、入力フィーチャマップデータ630とカーネルデータ640が図示されている。以下では、説明の便宜のために、入力フィーチャマップデータ610,630に含まれるエレメントをアクティベーション(activation)と言い、カーネルデータ620,640に含まれたエレメントをウェイト(weight)と言う。
カーネルデータ620とカーネルデータ640とを比較すれば、カーネルデータ640の一部には、空白が含まれている。ここで、該空白は、ウェイトが0であるとも解釈される。すなわち、カーネルデータ640は、カーネルデータ620に比べ、スパース性が大きく、それは、カーネルデータ620に含まれたウェイトよりも、カーネルデータ640に含まれたウェイトに、0がさらに多いということを意味する。
一方、図6A及び図6Bには、カーネルデータ640にだけ0が含まれているように図示されているが、それに限定されるものではない。言い換えれば、入力データ610,620,630,640のうち少なくとも一つには、0が含まれ、入力データ610,620,630,640に含まれる0の個数、及び0が分布される形態は、多様でもあってもよい。
プロセッサ420は、入力データ610,620,630,640に含まれた有効情報(例えば、0ではない数)に基づいて、入力データ610,620,630,640のスパース性を確認する。言い換えれば、プロセッサ420は、入力データ610,620,630,640内の0の分布を確認する。
再び、図5を参照すれば、520段階において、プロセッサ420は、入力データのスパース性の形態に基づいて、入力データを再配列する。
プロセッサ420は、入力データ内の0の分布に基づいて、入力データを再配列することができる。一例として、プロセッサ420は、入力データの複数行それぞれに含まれる0の個数に基づいて、複数行を再配列することができる。他の例として、プロセッサ420は、入力データの複数列それぞれのエレメントを、第1規則によって移動させることができる。他の例として、プロセッサ420は、入力データの複数列のうち、0のみを含む少なくとも1列に対する処理が省略されるように、複数列を再配列することができる。さらに他の例として、プロセッサ420は、入力データの第1列の最初のエレメントを、第1列と隣接した第2列の最後のエレメントの位置に移動させることができる。
プロセッサ420が入力データを再配列する例は、図7ないし図10を参照して後述する。
図7は、プロセッサが入力データを再配列する一例について説明するための図面である。
図7には、入力データとして、入力フィーチャマップデータ710及びカーネルデータ720が図示されている。入力フィーチャマップデータ710は、6行6列のマトリックス、カーネルデータ720は、6行4列のマトリックスであるように図示されているが、それに限定されるものではない。
入力フィーチャマップデータ710の一部には、空白が含まれている。ここで、該空白は、有効情報がないとも解釈され、例えば、空白に対応するアクティベーションが0でもある。また、図7には、空白が入力フィーチャマップデータ710にだけ含まれているように図示されているが、それに限定されるものではない。言い換えれば、カーネルデータ720に含まれるウェイトのうち少なくとも一つにも、0が含まれる。
プロセッサ420は、入力フィーチャマップデータ710のスパース性の形態に基づいて、入力フィーチャマップ710を再配列することができる。例えば、プロセッサ420は、入力フィーチャマップデータ710に含まれた複数行row0〜5それぞれに含まれた空白の個数に基づいて、複数行row0〜5を再配列することができる。
例えば、フィーチャマップデータ710と、再配列されたフィーチャマップデータ711とを参照すれば、プロセッサ420は、入力フィーチャマップデータ710の複数行row0〜5において、空白が最も多く含まれる行row2と、空白が最も少なく含まれる行row0とを互いに隣接するように配列することができる。また、プロセッサ420は、入力フィーチャマップデータ710の複数行row0〜5において、空白が2番目に多く含まれる行row4と、空白が2番目に少なく含まれる行row3とを互いに隣接するように配列することができる。そのような方式で、プロセッサ420は、空白が含まれる個数を基準に、入力フィーチャマップデータ710の複数行row0〜5を再配列し、フィーチャマップデータ711を生成することができる。
再配列されたフィーチャマップデータ711により、プロセッサ420は、不要な演算遂行を最小化させることができる。例えば、カーネルデータ720とのコンボリューション演算のために、プロセッサ420は、再配列されたフィーチャマップデータ711を、部分別にロジック回路730に入力することができる。例えば、プロセッサ420は、再配列されたフィーチャマップデータ711において、ウィンドウ740内に含まれたアクティベーションを、ロジック回路730に入力することができる。
また、プロセッサ420は、カーネルデータ720にも、同一サイズのウィンドウ750を適用し、ウィンドウ750に含まれたウェイトを、ロジック回路730に入力することができる。このとき、プロセッサ420は、再配列されたフィーチャマップデータ711に対応するように、カーネルデータ720も再配列する。再配列されたフィーチャマップデータ711において、ロジック回路730に入力されるアクティベーションの順序と、入力フィーチャマップデータ710において、ロジック回路730に入力されるアクティベーションの順序は、互いに異なる。従って、カーネルデータ720の再配列なしに、ウェイトがロジック回路730に入力される場合は、不正確な演算結果が出力されてしまう。
プロセッサ420は、ロジック回路730に入力されたアクティベーションと演算されなければならないウェイトが、ロジック回路730に正確に入力されるように、カーネルデータ720を再配列する。そして、プロセッサ420は、再配列されたカーネルデータにより、ウェイトをロジック回路730に入力する。従って、再配列されたフィーチャマップデータ711によっても、ロジック回路730から正確な演算結果が出力されるのである。
もしカーネルデータ720が再配列される場合、プロセッサ420は、前述の方式と同様に、入力フィーチャマップデータ710を再配列し、ロジック回路730に入力する。
プロセッサ420は、ウィンドウ740内に含まれるアクティベーションの位置を調整し、不要なコンボリューション演算が行われることを防止することができる。プロセッサ420がウィンドウ740内に含まれるアクティベーションの位置を調整し、コンボリューション演算を行う例は、図11ないし図13を参照して後述する。
図8は、プロセッサが入力データを再配列する他の例について説明するための図面である。
図8には、入力データとして、入力フィーチャマップデータ810及びカーネルデータ820が図示されている。入力フィーチャマップデータ810の一部には、空白が含まれている。また、図8には、空白が入力フィーチャマップデータ810にだけ含まれているように図示されているが、それに限定されるものではない。言い換えれば、カーネルデータ820に含まれたウェイトのうち少なくとも一つにも、0が含まれる。
プロセッサ420は、入力フィーチャマップデータ810のスパース性の形態に基づいて、入力フィーチャマップ810を再配列することができる。例えば、プロセッサ420は、入力フィーチャマップデータ810に含まれる複数列col0〜5それぞれのエレメントを、第1規則によって移動させることができる。
第1規則は、複数列col0〜5それぞれのエレメントを、同一方向に所定サイズだけ移動させる規則でもある。ここで、該所定サイズは、入力フィーチャマップデータ810のスパース性の形態により、プロセッサ420が適応的に変更することができ、複数列col0〜5それぞれに適用される移動の大きさは、いずれも異なってもよい。例えば、フィーチャマップデータ810と、再配列されたフィーチャマップデータ811とを参照すれば、プロセッサ420は、フィーチャマップデータ810の2番目列col1に含まれるアクティベーションを1マスずつ移動させ、再配列されたフィーチャマップデータ811の2番目列col1を生成することができる。また、プロセッサ420は、フィーチャマップデータ810の5番目列col4に含まれるアクティベーションを2マスずつ移動させ、再配列されたフィーチャマップデータ811の5番目列col4を生成することができる。また、フィーチャマップデータ810のスパース性の形態により、プロセッサ420は、フィーチャマップデータ810の他の列col0,2,3,5については、アクティベーションを移動させない。
また、第1規則は、複数列col0〜5について、周期的にも適用される。図8に図示されているように、プロセッサ420は、「0−1−0−0−2−0」の移動規則を、フィーチャマップデータ810の次に入力されるフィーチャマップデータに周期的に適用することができる。例えば、該周期は、カーネルデータ820の大きさと同一でもあるが、それに限定されるものではない。そのような過程を介して、プロセッサ420は、不要なコンボリューション演算が行われることを防止することができる。
また、プロセッサ420は、再配列されたフィーチャマップデータ811に対応するように、カーネルデータ820も再配列する。例えば、プロセッサ420は、ロジック回路に入力されたアクティベーションと演算されることを要するウェイトが、正確にロジック回路に入力されるように、カーネルデータ820を再配列する。そして、プロセッサ420は、再配列されたカーネルデータにより、ウェイトをロジック回路に入力する。従って、再配列されたフィーチャマップデータ811によっても、ロジック回路から正確な演算結果が出力されるのである。
もしカーネルデータ720が再配列される場合、プロセッサ420は、前述の方式と同一に、入力フィーチャマップデータ710を再配列し、ロジック回路730に入力する。
プロセッサ420が、再配列されたフィーチャマップデータ811とカーネルデータ820とを処理し、出力データを生成する例は、図11ないし図13を参照して後述する。
図9は、プロセッサが入力データを再配列するさらに他の例について説明するための図面である。
図9には、入力データとして、入力フィーチャマップデータ910及びカーネルデータ920が図示されている。入力フィーチャマップデータ910の一部には、空白が含まれている。また、図9には、空白が、入力フィーチャマップデータ910にだけ含まれているように図示されているが、それに限定されるものではない。言い換えれば、カーネルデータ920に含まれたウェイトのうち少なくとも一つにも、0が含まれる。
プロセッサ420は、入力フィーチャマップデータ910のスパース性の形態に基づいて、入力フィーチャマップデータ910を再配列することができる。例えば、プロセッサ420は、入力フィーチャマップデータ910に含まれる列col1の最初のエレメント(アクティベーション)を、列col1と隣接した列col0の最後のエレメント(アクティベーション)の位置に移動させることができる。
具体的には、列col1及び列col0の最初の位置には、いずれも有効情報が含まれている。また、列col0の最後の位置には、有効情報が含まれていない。その場合、プロセッサ420は、列col1の最初の位置のエレメントを、列col0の最後の位置に移動させることができる。そのような過程を介して、プロセッサ420は、不要なコンボリューション演算が行われることを防止することができる。同様に、プロセッサ420は、列col1の2番目位置にあるエレメントを、列col0の3番目位置に移動させ、列col1の5番目位置にあるエレメントを、列col0の5番目位置に移動させることができる。
一方、入力フィーチャマップデータ910が再配列される場合、カーネルデータ920も、再配列されるということは、図7及び図8を参照して説明した通りである。
図10は、プロセッサが入力データを再配列するさらに他の例について説明するための図面である。
図10には、入力フィーチャマップデータ1010が図示されている。入力フィーチャマップデータ1010の一部には、空白が含まれている。特に、入力フィーチャマップデータ1010の一部列col1〜3は、いずれも空白だけによって構成されている。
プロセッサ420は、入力フィーチャマップデータ1010のスパース性の形態に基づいて、入力フィーチャマップ1010を再配列することができる。例えば、プロセッサ420は、入力フィーチャマップデータ1010に含まれる複数列col0〜5において、0のみを含む列col1〜3に対する処理が省略されるように、入力フィーチャマップデータ1010を再配列することができる。
例えば、プロセッサ420は、入力フィーチャマップデータ1010から列col1〜3を省略し、残りの列col0,4,5のみに再配列されたフィーチャマップデータ1020を生成することができる。そして、プロセッサ420は、列col1〜3が省略されたことをメモリ410に記録する。そのような過程を介して、プロセッサ420は、不要なコンボリューション演算が行われることを防止することができる。
一方、入力フィーチャマップデータ1010が再配列される場合、カーネルデータも、再配列されるということは、図7及び図8を参照して説明した通りである。
再び図5を参照すれば、530段階において、プロセッサ420は、再配列されたデータを処理し、出力データを生成する。
例えば、プロセッサ420は、再配列されたデータを利用し、コンボリューション演算を行うことにより、出力データを生成することができる。ただし、プロセッサ420は、不要な演算を低減させるために、520段階の再配列されたデータに、追加して第2規則または第3規則を適用することができる。
以下、図11ないし図13を参照し、プロセッサ420が出力データを生成する例について説明する。
図11は、プロセッサが再配列されたデータを処理し、出力データを生成する例を図示したフローチャートである。
1110段階において、プロセッサ420は、再配列されたデータに、第2規則および第3規則のうち少なくとも一つを適用する。
図7を参照して説明した通り、プロセッサ420は、再配列されたデータを順次にロジック回路に入力することができる。例えば、プロセッサ420は、再配列されたデータに、所定サイズを有するウィンドウを適用し、ウィンドウ内に含まれたエレメントをロジック回路に入力することができる。もしウィンドウ内に含まれたエレメントにおいて、一部に有効ではない情報(例えば、0)が含まれる場合、プロセッサ420は、第2規則または第3規則を適用し、ウィンドウ内に含まれるエレメントを再配列することができる。
1120段階において、プロセッサ420は、少なくとも1つの規則が適用されたデータと異なるデータのコンボリューション演算を行う。例えば、プロセッサ420は、ロジック回路に再配列されたアクティベーション、または再配列されたウェイトを入力することにより、コンボリューション演算を行うことができる。
以下、図12を参照し、プロセッサ420が再配列されたデータに、第2規則を適用する例について説明し、図13を参照し、プロセッサ420が再配列されたデータに、第3規則を適用する例について説明する。
図12は、プロセッサが再配列されたデータに、第2規則を適用する例について説明するための図面である。
図12には、フィーチャマップデータ1210及びカーネルデータ1220が図示されている。以下においては、フィーチャマップデータ1210は、520段階の再配列が行われたデータであると仮定する。
プロセッサ420は、フィーチャマップデータ1210のうち一部を、ロジック回路1230に入力する。例えば、プロセッサ420は、フィーチャマップデータ1210において、ウィンドウ1240内に含まれるアクティベーションを、ロジック回路1230に入力することができる。このとき、プロセッサ420は、ウィンドウ1240内に含まれるアクティベーションについて第2規則を適用し、ロジック回路1230に、最大のアクティベーションを入力することができる。言い換えれば、プロセッサ420は、ロジック回路1230の入力レイヤ1231において空白が最小化されるように、ウィンドウ1240内に含まれたアクティベーションについて第2規則を適用することができる。ここで、該第2規則は、列col0,1のアクティベーションが、隣接した列と同一位置に移動する規則を意味する。
例えば、プロセッサ420は、ウィンドウ1240内の列col0,1の空白を確認し、列col1のアクティベーション、を列col0の空白に割り当てることができる。図12を参照すれば、列col1のアクティベーション2及びアクティベーション4を列col0と同一位置に移動することができる。
プロセッサ420は、第2規則が適用されたアクティベーションを、ロジック回路1230の入力レイヤ1231に入力する。列col0及び入力レイヤ1231を比較すれば、列col0の空白数よりも、入力レイヤ1231の空白数がさらに少ない。空白は、データ0が含まれるところと同一であるので、空白に対応するウェイトがいかなる値を有するかということを問わず、出力は、0になる。従って、入力レイヤ1231に含まれる空白の数が多いほど(すなわち、入力レイヤ1231に、0が多く含まれるほど)、不要な演算の数が増加する。
前述の通り、プロセッサ420は、第2規則を適用し、入力レイヤ1231に含まれる0の数を最小化させる。従って、プロセッサ420は、ロジック回路1230において、不要な演算が行われる回数を最小化させることができる。
図13は、プロセッサが再配列されたデータに、第3規則を適用する例について説明するための図面である。
図13には、フィーチャマップデータ1310及びカーネルデータ1320が図示されている。以下では、フィーチャマップデータ1310は、520段階の再配列が行われたデータであると仮定する。
プロセッサ420は、ウィンドウ1340内に含まれるアクティベーションについて第3規則を適用し、ロジック回路1330に最大のアクティベーションを入力することができる。ここで、第3規則は、列col0,1のアクティベーションが、隣接した列を横切った位置に移動する規則を意味する。
例えば、プロセッサ420は、ウィンドウ1340内の列col0,1の空白を確認し、列col1のアクティベーションを、列col0の空白に割り当てることができる。図13を参照すれば、列col1のアクティベーション0,1,及び3が、列col0を横切った位置に移動することができる。
プロセッサ420は、第3規則が適用されたアクティベーションを、ロジック回路1330の入力レイヤ1331に入力する。列col0及び入力レイヤ1331を比較すれば、列col0には、空白が存在(具体的には、3つの空白が存在する)するが、入力レイヤ1331には、空白がない。従って、プロセッサ420は、ロジック回路1230において、不要な演算が行われる回数を最小化させることができる。
図12及び図13を参照して説明したところによれば、プロセッサ420が、第2規則と第3規則とを別途に適用するように図示されているが、それに限定されるものではない。プロセッサ420は、フィーチャマップデータ1210,1310及びカーネルデータ1220,1320のスパース性を確認し、適応的に、第2規則及び第3規則のうち少なくとも一つをフィーチャマップデータ1210,1310及び/又はカーネルデータ1220,1320に適用することができる。
前述のとおり、データ処理装置400は、コンボリューション演算が行われるロジック回路に入力される0の数が最小化されるように、入力フィーチャマップデータ及び/又はカーネルデータを再配列する。従って、データ処理装置400は、不要な演算が行われる数を最小化させることができる。
なお、前述の方法は、コンピュータで実行されるプログラムに作成可能であり、コンピュータで読み取り可能な記録媒体を利用して、前記プログラムを動作させる汎用デジタルコンピュータにおいても具現される。また、前述の方法で使用されたデータの構造は、コンピュータで読み取り可能な記録媒体に、さまざまな手段を介しても記録される。前記コンピュータで読み取り可能な記録媒体は、磁気記録媒体(例えば、ROM、RAM、USB(universal serial bus)、フロッピー(登録商標)ディスク、ハードディスクなど)、光学的読み取り媒体(例えば、CD−ROM、DVD(digital versatile disc)など)のような記録媒体を含む。
本実施形態と関連する技術分野における当業者であるならば、本発明は、前述の記載の本質的な特性から外れない範囲で変形された形態に具現されるということを理解することができるであろう。従って、開示された方法は、限定的な観点ではなく、説明的な観点から考慮されなければならず、権利範囲は、前述の説明ではなく、特許請求の範囲に示されており、それと均等な範囲内にある全ての差異を含むものであると解釈されなければならないのである。
400 データ処理装置
410 メモリ
420 プロセッサ

Claims (27)

  1. データを処理する方法であって、
    入力データに含まれる有効情報に基づいて、前記入力データのスパース性を確認する段階と、
    前記スパース性の形態に基づいて、前記入力データを再配列する段階と、
    前記再配列されたデータを処理し、出力データを生成する段階と、
    を含む、方法。
  2. 前記再配列する段階は、
    前記入力データ内の無効値の分布に基づいて、前記入力データを再配列する、
    ことを特徴とする請求項1に記載の方法。
  3. 前記再配列する段階は、
    前記入力データに含まれる複数行それぞれに含まれた無効値の個数に基づいて、前記行を再配列することを特徴とする請求項1に記載の方法。
  4. 前記再配列する段階は、
    前記複数行において、無効値が最も多く含まれた第1行と、前記複数行において無効値が最も少なく含まれた第2行とを互いに隣接するように、前記行を再配列する、
    ことを特徴とする請求項3に記載の方法。
  5. 前記再配列する段階は、
    前記入力データに含まれる複数列それぞれのエレメントを、第1規則によって移動させる、
    ことを特徴とする請求項1乃至請求項4いずれか一項に記載の方法。
  6. 前記第1規則は、前記複数列それぞれのエレメントを同一方向に所定サイズだけ移動させる規則を含み、
    前記第1規則は、前記複数列に対して周期的に適用される、
    ことを特徴とする請求項5に記載の方法。
  7. 前記再配列する段階は、
    前記入力データに含まれる複数列において、無効値だけを含む少なくとも1列に対する処理が省略されるように、前記複数列を再配列する、
    ことを特徴とする請求項1に記載の方法。
  8. 前記再配列する段階は、
    前記入力データに含まれる第1列の最初のエレメントを、前記第1列と隣接した第2列の最後のエレメントの位置に移動させる、
    ことを特徴とする請求項1に記載の方法。
  9. 前記生成する段階は、
    前記再配列されたデータに、第2規則及び第3規則のうち少なくとも一つを適用する段階と、
    前記少なくとも1つの規則が適用されたデータと異なるデータのコンボリューション演算を行う段階と、を含む、
    ことを特徴とする請求項1に記載の方法。
  10. 請求項1ないし9のうちいずれか1項に記載の方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な不揮発性の記憶媒体。
  11. データを処理する装置において、
    少なくとも1つのプログラムが保存されたメモリと、
    前記少なくとも1つのプログラムを実行するプロセッサと、を含み、
    前記プロセッサは、
    入力データに含まれた有効情報に基づいて、前記入力データのスパース性を確認し、前記スパース性の形態に基づいて、前記入力データを再配列し、前記再配列されたデータを処理し、出力データを生成する、
    装置。
  12. 前記プロセッサは、
    前記入力データ内の無効値の分布に基づいて、前記入力データを再配列する、
    ことを特徴とする請求項11に記載の装置。
  13. 前記プロセッサは、
    前記入力データに含まれる複数行それぞれに含まれる無効値の個数に基づいて、前記行を再配列する、
    ことを特徴とする請求項11に記載の装置。
  14. 前記プロセッサは、
    前記複数行において、無効値が最も多く含まれる第1行と、前記複数行において無効値が最も少なく含まれる第2行とを互いに隣接するように、前記行を再配列する、
    ことを特徴とする請求項13に記載の装置。
  15. 前記プロセッサは、
    前記入力データに含まれる複数列それぞれのエレメントを、第1規則によって移動させる、
    ことを特徴とする請求項11乃至請求項14いずれか一項に記載の装置。
  16. 前記第1規則は、前記複数列それぞれのエレメントを同一方向に所定サイズだけ移動させる規則を含み、
    前記第1規則は、前記複数列に対して周期的に適用される、
    ことを特徴とする請求項15に記載の装置。
  17. 前記プロセッサは、
    前記入力データに含まれる複数列において、無効値だけを含む少なくとも1列に対する処理が省略されるように、前記複数列を再配列する、
    ことを特徴とする請求項11に記載の装置。
  18. 前記プロセッサは、
    前記入力データに含まれる第1列の最初のエレメントを、前記第1列と隣接した第2列の最後のエレメントの位置に移動させる、
    ことを特徴とする請求項11に記載の装置。
  19. 前記プロセッサは、
    前記再配列されたデータに、第2規則及び第3規則のうち少なくとも一つを適用し、前記少なくとも1つの規則が適用されたデータと異なるデータのコンボリューション演算を行う、
    ことを特徴とする請求項11に記載の装置。
  20. 前記装置は、ニューラルネットワーク装置を含む、
    ことを特徴とする請求項11に記載の装置。
  21. 少なくとも1つのプログラムを保存する少なくとも1つのメモリと、
    前記少なくとも1つのプログラムを実行する少なくとも1つのプロセッサと、を含み、
    前記プロセッサは、
    無効値を含む入力データの位置を決定し、
    前記無効値を含む入力データの位置を操作することにより、再配列されたデータを生成し、前記再配列されたデータに規則を適用する、
    装置。
  22. 前記少なくとも1つのプロセッサは、
    前記入力データに含まれる有効値を、前記無効値を含む前記入力データ内の位置に移動させることにより、前記再配列されたデータを生成する、
    ことを特徴とする請求項21に記載の装置。
  23. 前記少なくとも1つのプロセッサは、
    前記無効値を、前記入力データの他の位置に移動させることにより、前記再配列されたデータを生成する、
    ことを特徴とする請求項21に記載の装置。
  24. 前記入力データの前記無効値を除去することにより、前記再配列されたデータを生成する、
    ことを特徴とする請求項21に記載の装置。
  25. ロジック回路に入力されるウィンドウの入力レイヤに含まれる無効値の数を最小化させるために、前記再配列されたデータのウィンドウに含まれる有効値に、前記規則を適用する、
    ことを特徴とする請求項21に記載の装置。
  26. 前記規則は、前記入力レイヤに隣接した前記再配列されたデータのウィンドウのレイヤに含まれる少なくとも1つの有効値を、無効値を含む前記入力レイヤの対応する位置に移動させること、を含む、
    ことを特徴とする請求項25に記載の装置。
  27. 前記規則は、前記入力レイヤに隣接した前記再配列されたデータのウィンドウのレイヤに含まれる少なくとも1つの有効値を、無効値を含む前記入力レイヤの横切った位置に移動させること、を含む、
    ことを特徴とする請求項25に記載の装置。
JP2020109945A 2019-08-26 2020-06-25 データを処理する方法及びその装置 Active JP7234185B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190104578A KR20210024865A (ko) 2019-08-26 2019-08-26 데이터를 처리하는 방법 및 장치
KR10-2019-0104578 2019-08-26

Publications (2)

Publication Number Publication Date
JP2021034024A true JP2021034024A (ja) 2021-03-01
JP7234185B2 JP7234185B2 (ja) 2023-03-07

Family

ID=71786774

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020109945A Active JP7234185B2 (ja) 2019-08-26 2020-06-25 データを処理する方法及びその装置

Country Status (5)

Country Link
US (2) US11875255B2 (ja)
EP (1) EP3789892A1 (ja)
JP (1) JP7234185B2 (ja)
KR (1) KR20210024865A (ja)
CN (1) CN112434803A (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210082970A (ko) 2019-12-26 2021-07-06 삼성전자주식회사 컨볼루션 연산을 수행하는 방법 및 장치
US11676068B1 (en) 2020-06-30 2023-06-13 Cadence Design Systems, Inc. Method, product, and apparatus for a machine learning process leveraging input sparsity on a pixel by pixel basis
US11823018B1 (en) 2020-06-30 2023-11-21 Cadence Design Systems, Inc. Method, product, and apparatus for a machine learning process using weight sharing within a systolic array having reduced memory bandwidth
US11615320B1 (en) 2020-06-30 2023-03-28 Cadence Design Systems, Inc. Method, product, and apparatus for variable precision weight management for neural networks
US11687831B1 (en) 2020-06-30 2023-06-27 Cadence Design Systems, Inc. Method, product, and apparatus for a multidimensional processing array for hardware acceleration of convolutional neural network inference
US11651283B1 (en) * 2020-06-30 2023-05-16 Cadence Design Systems, Inc. Method, product, and apparatus for a machine learning process using dynamic rearrangement of sparse data and corresponding weights
US11544213B2 (en) * 2021-03-04 2023-01-03 Samsung Electronics Co., Ltd. Neural processor
JP2024514374A (ja) * 2021-04-09 2024-04-02 エヌビディア コーポレーション データ・セットにおけるスパース性を増大させること

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017154946A1 (ja) * 2016-03-09 2017-09-14 日本電気株式会社 情報処理装置、情報処理方法、データ構造およびプログラム
CN108009626A (zh) * 2016-10-27 2018-05-08 谷歌公司 利用神经网络计算单元中的输入数据稀疏
US20190087713A1 (en) * 2017-09-21 2019-03-21 Qualcomm Incorporated Compression of sparse deep convolutional network weights

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7127435B2 (en) * 2001-07-03 2006-10-24 Honeywell International Inc. Distribution theory based enrichment of sparse data for machine learning
US7543010B2 (en) * 2003-11-03 2009-06-02 Board Of Regents, The University Of Texas System Modular pipeline fast Fourier transform
US10817312B2 (en) * 2013-03-14 2020-10-27 Microsoft Technology Licensing, Llc Programming model for performant computing in document-oriented storage services
KR101590896B1 (ko) 2014-11-26 2016-02-02 경북대학교 산학협력단 일반화 성능을 갖는 심화학습 장치 및 방법, 그 방법을 수행하기 위한 기록 매체 및 장치
US10242311B2 (en) 2016-08-11 2019-03-26 Vivante Corporation Zero coefficient skipping convolution neural network engine
KR20180052069A (ko) 2016-11-07 2018-05-17 한국전자통신연구원 콘볼루션 신경망 시스템 그리고 콘볼루션 신경망의 시냅스 데이터를 압축하는 방법
US20180131946A1 (en) 2016-11-07 2018-05-10 Electronics And Telecommunications Research Institute Convolution neural network system and method for compressing synapse data of convolution neural network
CN109146073B (zh) * 2017-06-16 2022-05-24 华为技术有限公司 一种神经网络训练方法和装置
US11693662B2 (en) * 2018-05-04 2023-07-04 Cornami Inc. Method and apparatus for configuring a reduced instruction set computer processor architecture to execute a fully homomorphic encryption algorithm
US10572409B1 (en) * 2018-05-10 2020-02-25 Xilinx, Inc. Sparse matrix processing circuitry
US11257254B2 (en) * 2018-07-20 2022-02-22 Google Llc Data compression using conditional entropy models
US11442889B2 (en) 2018-09-28 2022-09-13 Intel Corporation Dynamic deep learning processor architecture
US11341414B2 (en) * 2018-10-15 2022-05-24 Sas Institute Inc. Intelligent data curation
US20200151569A1 (en) * 2018-11-08 2020-05-14 International Business Machines Corporation Warping sequence data for learning in neural networks
US11126690B2 (en) * 2019-03-29 2021-09-21 Intel Corporation Machine learning architecture support for block sparsity

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017154946A1 (ja) * 2016-03-09 2017-09-14 日本電気株式会社 情報処理装置、情報処理方法、データ構造およびプログラム
CN108009626A (zh) * 2016-10-27 2018-05-08 谷歌公司 利用神经网络计算单元中的输入数据稀疏
US20190087713A1 (en) * 2017-09-21 2019-03-21 Qualcomm Incorporated Compression of sparse deep convolutional network weights

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
KUNG,H.T.: "Packing Sparse Convolutional Neural Networks for Efficient Systolic Array Implementations: Column Co", [ONLINE], JPN6022008110, 7 November 2018 (2018-11-07), US, pages 1 - 13, ISSN: 0004893018 *
LU,LIQIANG ET.AL: "SpWA:An Efficient Sparse Winograd Convolutional Neural Networks Accelerator on FPGAs", 2018 55TH ACM/ESDA/IEEE DESIGN AUTOMATION CONFERENCE (DAC), JPN6022008111, 24 June 2018 (2018-06-24), US, pages 1 - 6, XP033405932, ISSN: 0004893017, DOI: 10.1109/DAC.2018.8465842 *

Also Published As

Publication number Publication date
US11875255B2 (en) 2024-01-16
CN112434803A (zh) 2021-03-02
US20240095532A1 (en) 2024-03-21
US20210064992A1 (en) 2021-03-04
JP7234185B2 (ja) 2023-03-07
EP3789892A1 (en) 2021-03-10
KR20210024865A (ko) 2021-03-08

Similar Documents

Publication Publication Date Title
JP7234185B2 (ja) データを処理する方法及びその装置
JP7132824B2 (ja) ニューラルネットワークにおいてデコンボルーション演算を実行する装置及びその方法
CN108229655B (zh) 卷积神经网络(cnn)处理方法和设备
KR102452953B1 (ko) 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
US10909418B2 (en) Neural network method and apparatus
CN108073981B (zh) 处理卷积神经网络的方法和设备
JP7304148B2 (ja) ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置
KR102452951B1 (ko) 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
JP2020126651A (ja) ニューラルネットワークのコンボルーション演算を処理する方法及び装置
JP6724267B1 (ja) 学習装置、推論装置、学習モデルの生成方法及び推論方法
KR20210039197A (ko) 데이터를 처리하는 방법 및 장치
KR20200081044A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
US11836971B2 (en) Method and device with convolution neural network processing
TW202018598A (zh) 神經網路處理器及其卷積操作方法
CN112651485A (zh) 识别图像的方法和设备以及训练神经网络的方法和设备
JP6955598B2 (ja) 複数の畳み込みウィンドウ内の画像データの並行抽出方法、装置、機器及びコンピュータ可読記憶媒体
US12014505B2 (en) Method and apparatus with convolution neural network processing using shared operand
KR20200072308A (ko) 뉴럴 네트워크에서 컨볼루션 연산을 수행하는 방법 및 장치
KR102559036B1 (ko) 음수값을 갖는 활성화 함수에서 제로 스키핑을 제공하는 방법 및 장치
EP3832551B1 (en) Method and apparatus for processing data
KR20210082970A (ko) 컨볼루션 연산을 수행하는 방법 및 장치
US11842273B2 (en) Neural network processing
CN116128023A (zh) 硬件加速器、电子装置和用于神经网络的装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210415

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220308

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220602

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221011

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230105

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230222

R150 Certificate of patent or registration of utility model

Ref document number: 7234185

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150