JP2020107338A - ニューラルネットワークのコンボルーション演算を処理する方法及びその装置 - Google Patents

ニューラルネットワークのコンボルーション演算を処理する方法及びその装置 Download PDF

Info

Publication number
JP2020107338A
JP2020107338A JP2019232816A JP2019232816A JP2020107338A JP 2020107338 A JP2020107338 A JP 2020107338A JP 2019232816 A JP2019232816 A JP 2019232816A JP 2019232816 A JP2019232816 A JP 2019232816A JP 2020107338 A JP2020107338 A JP 2020107338A
Authority
JP
Japan
Prior art keywords
feature map
kernel
output
output feature
weight
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
JP2019232816A
Other languages
English (en)
Other versions
JP7475855B2 (ja
Inventor
世煥 李
Sehwan Lee
世煥 李
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 JP2020107338A publication Critical patent/JP2020107338A/ja
Application granted granted Critical
Publication of JP7475855B2 publication Critical patent/JP7475855B2/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/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/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
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • 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/044Recurrent networks, e.g. Hopfield networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (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)

Abstract

【課題】ニューラルネットワークのコンボルーション演算を効率的に処理する方法及び装置を提供する。【解決手段】ニューラルネットワーク装置100は、少なくとも1つのプログラムが保存されたメモリ120と、少なくとも1つのプログラムを実行することによりニューラルネットワークのコンボルーション演算を処理するプロセッサ110と、を含む。プロセッサは、カーネルのウェイトそれぞれと入力フィーチャマップとの演算を実行して出力値を生成し、ウェイトのカーネル内位置を基に設定された出力フィーチャマップ内位置において、出力値を累算して出力フィーチャマップを生成する。【選択図】図3

Description

本発明は、ニューラルネットワークのコンボルーション演算を処理する方法及びその装置に関する。
ニューラルネットワーク(neural network)は、生物学的脳をモデリングしたコンピュータ科学的アーキテクチャ(computational architecture)を参照する。最近、ニューラルネットワーク技術の発展により、多様な種類の電子システムにおいて、ニューラルネットワーク装置を使用し、入力データを分析して有効な情報を抽出している。
ニューラルネットワーク装置は、入力データに対する多量の演算を行う。そのようなニューラルネットワーク演算を効率的に処理することができる技術が研究されている。
本発明が解決しようとする課題は、ニューラルネットワークのコンボルーション演算を処理する方法及びその装置を提供するところにある。本実施形態がなすべき技術的課題は、前述のような技術的課題に限定されるものではなく、以下の実施形態から他の技術的課題が類推されもする。
一側面により、ニューラルネットワーク装置は、少なくとも1つのプログラムが保存されたメモリと、少なくとも1つのプログラムを実行することにより、ニューラルネットワークのコンボルーション演算を処理するプロセッサと、を含み、該プロセッサは、カーネルのウェイトそれぞれと入力フィーチャマップとの演算を実行して出力値を生成し、ウェイトのカーネル内位置を基に設定された出力フィーチャマップ内位置において、出力値を累算して出力フィーチャマップを生成することができる。
他の側面により、ニューラルネットワークのコンボルーション演算を処理する方法は、カーネルのウェイトそれぞれと入力フィーチャマップとの演算を実行して出力値を生成する段階と、ウェイトのカーネル内位置を基に設定された出力フィーチャマップ内位置において、出力値を累算して出力フィーチャマップを生成することができる。
さらに他の側面により、ニューラルネットワークのコンボルーション演算を処理する方法を具現化するためのプログラムが記録されたコンピュータで読み取り可能な記録媒体が提供される。
本実施形態によれば、メモリから読み取った入力フィーチャマップを再使用して出力フィーチャマップを生成するが、効率的なコンボルーション演算を行うことができ、特に、カーネルサイズと関係なく、入力フィーチャマップをメモリから読み取る回数を1回に最小化させることができる。また、入力フィーチャマップとカーネルそれぞれとの演算が行われるが、ゼロスキッピング(zero skipping)を介して、ゼロ値を有するウェイトの個数のサイクル(cycle)だけ入力ピッチャーマップとカーネルとの演算時間を短縮させることができる。
また、本実施形態によれば、プロセッサは、入力フィーチャマップだけではなく、圧縮された入力フィーチャマップ、または圧縮された入力フィーチャマップの一領域も、連続したストリーム(stream)のように読み出し、コンボルーション演算を行うことができるが、コンボルーション演算速度を速めることができる。特に、圧縮された入力フィーチャマップは、非ゼロ(non-zero)値を有するピクセルによっても構成されるが、本実施形態によれば、圧縮された入力フィーチャマップとカーネルとの演算を行い、ゼロスキッピングを具現化することができ、結果として、メモリ帯域幅を狭めることができる。
また、本実施形態によれば、複数の演算ユニットそれぞれが、入力フィーチャマップの複数領域のうち互いに異なる領域について、互いに独立して並列的な演算を行うが、ニューラルネットワークのコンボルーション演算を効率的に処理することができる。
一実施形態によるニューラルネットワークのアーキテクチャについて説明するための図面である。 ニューラルネットワークのコンボルーション演算の例示について説明するための図面である。 ニューラルネットワークのコンボルーション演算の例示について説明するための図面である。 ニューラルネットワークのコンボルーション演算の例示について説明するための図面である。 一実施形態によるニューラルネットワーク装置のハードウェア構成を図示したブロック図である。 プロセッサが入力フィーチャマップを再使用して出力フィーチャマップを生成する実施形態を示す図面である。 プロセッサが入力フィーチャマップの一領域を再使用し、部分出力フィーチャマップを生成する実施形態を示す図面である。 プロセッサが部分出力フィーチャマップを生成する具体的な実施形態を示す図面である。 カーネルとの演算のための入力フィーチャマップの多様な形態の領域の実施形態を示す図面である。 プロセッサが入力フィーチャマップの一領域を再使用し、部分出力フィーチャマップを生成する他の実施形態を示す図面である。 プロセッサがカーネルの一部のみを利用し、部分出力フィーチャマップを生成する実施形態を示す図面である。 プロセッサが、圧縮された入力フィーチャマップを、ストリームのように読み出し、コンボルーション演算を行う実施形態を示す図面である。 プロセッサのハードウェア構成を図示した一実施形態を示す図面である。 プロセッサのハードウェア構成を図示した他の実施形態を示す図面である。 プロセッサのハードウェア構成を図示したさらに他の実施形態を示す図面である。 プロセッサの演算ユニットが、カーネルと、入力フィーチャマップの領域それぞれとの演算を行う実施形態を示す図面である。 プロセッサの演算ユニットが、カーネルと、入力フィーチャマップの領域それぞれとの演算を行う他の実施形態を示す図面である。 一実施形態により、ニューラルネットワーク装置の動作方法について説明するための図面である。
本実施形態で使用される用語は、可能な限り、現在汎用される一般的な用語を選択したが、それは、当分野の当業者の意図、判例、または新たな技術の出現などによっても異なる。また、特定の場合、出願人が任意に選定した用語もあり、その場合、当該説明部分において、詳細にその意味を記載する。従って、明細書で使用される用語は、単なる用語の名称ではなく、その用語が有する意味と、明細書の全般にわたる内容とを基に定義されなければならない。
明細書全体において、ある部分がある構成要素を「含む」とするとき、それは、特に明記しない限り、他の構成要素を除くものではなく、他の構成要素をさらに含んでもよいということを意味する。また、明細書に記載された「…部」、「…モジュール」というような用語は、少なくとも1つの機能や動作を処理する単位を意味し、それは、ハードウェアまたはソフトウェアによっても具現化され、ハードウェアとソフトウェアとの結合によっても具現化される。
本実施形態は、ニューラルネットワークのコンボルーション演算を処理する方法及びその装置に係わるものであり、以下の実施形態が属する技術分野において当業者に広く知られている事項については、詳細な説明を省略する。
図1は、一実施形態によるニューラルネットワークのアーキテクチャについて説明するための図面である。
図1を参照すると、ニューラルネットワーク1は、ディープニューラルネットワーク(DNN:deep neural network)またはn階層ニューラルネットワーク(n-layers neural networks)のアーキテクチャでもある。DNNまたはn階層ニューラルネットワークは、コンボルーションニューラルネットワーク(CNN:convolutional neural networks、CNN)、リカレントニューラルネットワーク(RNN:recurrent neural networks)、Deep Belief Networks、Restricted Boltzman Machines、フリコネクティッドニューラルネットワーク(FCN:fully-connected network、FCN)、デープコンボルーションネットワーク(deep convolutional network)、LSTM(long short-term memory)ネットワーク、GRU(grated recurrent unit)などに該当する。例えば、ニューラルネットワーク1は、コンボルーションニューラルネットワーク(CNN)によっても具現化されるが、それに制限されるものではない。図1においては、ニューラルネットワーク1の例示に該当するコンボルーションニューラルネットワークにおける一部のコンボルーションレイヤが図示されているが、該コンボルーションニューラルネットワークは、図示されたコンボルーションレイヤ以外にも、プーリングレイヤ(pooling layer)、フリコネクティッド(fully connected)レイヤなどをさらに含んでもよい。
ニューラルネットワーク1は、入力イメージ、フィーチャマップ(feature maps)、及び出力を含む複数レイヤを有するアーキテクチャによっても具現化される。ニューラルネットワーク1において入力イメージは、カーネル(kernel)と呼ばれるフィルタとのコンボルーション演算が行われ、その結果、フィーチャマップが出力される。このとき、生成された出力フィーチャマップは、入力フィーチャマップとして、さらにカーネルとのコンボルーション演算が行われ、新たなフィーチャマップが出力される。そのようなコンボルーション演算が反復的に行われた結果、最終的には、ニューラルネットワーク1を介した入力イメージの特徴に係わる認識結果が出力される。
例えば、図1のニューラルネットワーク1に、24×24ピクセルサイズのイメージが入力された場合、該入力イメージは、カーネルとのコンボルーション演算を介して、20×20ピクセルサイズを有する4チャネルのフィーチャマップとしても出力される。その後にも、20×20フィーチャマップは、カーネルとの反復的なコンボルーション演算を介してサイズが小さくなりながら、最終的には、1×1ピクセルサイズの特徴が出力される。ニューラルネットワーク1は、多くのレイヤにおいて、コンボルーション演算及びサブサンプリング(または、プーリング)演算を反復的に行うことにより、入力イメージから、イメージ全体を代表することができる強靭な特徴をフィルタリングして出力し、出力された最終特徴を介して、入力イメージの認識結果を導き出すことができる。
他の例として、ニューラルネットワーク1は、入力イメージの代わりに、入力ソース文章(input source sentence)(例えば、音声入力)を受信することができる。そのような例において、カーネルと共に、入力ソース文章に対して、コンボルーション演算が行われ、その結果、フィーチャマップが出力される。このとき、生成された出力フィーチャマップは、入力フィーチャマップとして、さらにカーネルとのコンボルーション演算が行われ、新たなフィーチャマップが出力される。そのように、コンボルーション動作が反復して遂行される結果、ニューラルネットワーク1を介して、入力ソース文章の特徴に係わる認識結果が出力される。
図2A、図2B及び図2Cは、ニューラルネットワークのコンボルーション演算の例示について説明するための図面である。
図2Aの例示において、入力フィーチャマップ210は、6×6ピクセルサイズであり、カーネル220は、3×3ピクセルサイズであり、出力フィーチャマップ230は、4×4ピクセルサイズであると仮定するが、それらに制限されるものではなく、ニューラルネットワークは、多様なサイズのフィーチャマップ及びカーネルによっても具現化される。また、入力フィーチャマップ210、カーネル220及び出力フィーチャマップ230によって定義された値は、いずれも例示的な値であるだけであって、本実施形態は、それらに制限されるものではない。
カーネル220は、入力フィーチャマップ210において、3×3ピクセルサイズの領域(または、タイル)単位でスライディングしながら、コンボルーション演算を行う。該コンボルーション演算は、入力フィーチャマップ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をいずれも加えた結果である15が計算され、出力フィーチャマップ230の1行1列のピクセル値231は、15に決定される。ここで、出力フィーチャマップ230の1行1列のピクセル値231は、第1領域211に対応する。同じ方式により、入力フィーチャマップ210の第2領域212とカーネル220とのコンボルーション演算が行われることにより、出力フィーチャマップ230の1行2列のピクセル値232である4が決定される。最終的に、入力フィーチャマップ210の最後のウィンドウである第16領域213とカーネル220とのコンボルーション演算が行われることにより、出力フィーチャマップ230の4行4列のピクセル値233である11が決定される。
すなわち、1つの入力フィーチャマップ210と1つのカーネル220とのコンボルーション演算は、入力フィーチャマップ210及びカーネル220で互いに対応する各エレメント値の乗算、及び乗算結果の合算を反復的に行うことによっても処理され、コンボルーション演算の結果として、出力フィーチャマップ230が生成される。
図2Bの例示において、入力フィーチャマップ250は、1×1ピクセルサイズであり、カーネル260は、3×3ピクセルサイズであり、出力フィーチャマップ270は、3×3ピクセルサイズであると仮定するが、それらに制限されるものではなく、ニューラルネットワークは、多様な値を有する多様なサイズのフィーチャマップ及びカーネルによっても具現化されることができる。
カーネル260は、入力フィーチャマップ250において、3×3ピクセルサイズの領域(または、タイル)単位でスライディングしながら、コンボルーション演算を行う。具体的には、カーネル260は、入力フィーチャマップ250の第1領域251とコンボルーション演算を行う。すなわち、第1領域251の唯一のピクセル値9と、カーネル260のウェイト+1とが乗ぜられ、その結果値9が、出力フィーチャマップ270の第1行第1列のピクセル値271に決定される。
同様に、入力フィーチャマップ250の第2領域252と、カーネル260とのコンボルーション演算が行われ、出力フィーチャマップ270の第1行第2列のピクセル値272が27に決定される。最終的に、入力フィーチャマップ250の最後の領域である第9領域253と、カーネル260とのコンボルーション演算が行われ、出力フィーチャマップ270の第3行第3列のピクセル値273が−9に決定される。
一方、図2A及び図2Bにおいては、二次元コンボルーション演算について説明されたが、コンボルーション演算は、複数チャネルの入力フィーチャマップ、カーネル、出力フィーチャマップが存在する三次元コンボルーション演算に該当する。それについては、図2Cを参照して説明する。
図2Cを参照すると、入力フィーチャマップ201は、X個のチャネルが存在し、各チャネルの入力フィーチャマップは、H行W列のサイズを有することができる(X、W、Hは、自然数)。カーネル202それぞれは、R行S列のサイズを有し、カーネル202は、入力フィーチャマップ201のチャネル数(X)、及び出力フィーチャマップ203のチャネル数(Y)に対応する個数のチャネルを有することができる(R、S、Yは、自然数)。出力フィーチャマップ203は、入力フィーチャマップ201とカーネル202との三次元コンボルーション演算を介して生成され、該コンボルーション演算により、Y個のチャネルが存在することができる。
1つの入力フィーチャマップと、1つのカーネルとのコンボルーション演算を介して、出力フィーチャマップが生成される過程は、先に図2Aで説明された通りであり、図2Aで説明された二次元コンボルーション演算が、全体チャネルの入力フィーチャマップ201と、全体チャネルのカーネル202との間で反復的に行われることにより、全体チャネルの出力フィーチャマップ203が生成される。
図3は、一実施形態によるニューラルネットワーク装置のハードウェア構成を図示したブロック図である。
ニューラルネットワーク装置100は、例えば、サーバ、モバイル装置、スマートフォン、埋め込み装置、ウェアラブルスマート装置(例えば、指輪、時計、めがね、めがねタイプの装置、腕輪、足首ブラケット(ankle bracket)、ベルト、ネックレス、イヤリング、鉢巻き、ヘルメット、服に内蔵した装置またはめがねディスプレイ(EGD))、コンピュータ装置(例えば、サーバ、ラップトップ、ノート型パソコン、サブノート型パソコン、ネットブック、ウルトラモバイルPC(UMPC)、タブレット個人用コンピュータ、ファブレット(phablet)、携帯インターネット機器(MID)、個人携帯情報端末(PDA)、企業情報端末機(EDA)、ウルトラモバイル個人コンピュータ(UMPC)、携帯ラップトップPC)、電子製品(例えば、ロボット、デジタルカメラ、デジタルビデオカメラ、携帯用ゲームコンソール、MP3プレイヤ、携帯用/個人マルチメディアプレイヤ(PMP)、携帯用電子書籍、衛星位置確認システム(GPS)ナビゲーション、個人ナビゲーション装置、携帯用ナビゲーション装置(PND)、携帯用ゲームコンソール、電子書籍、テレビ(TV)、高画質テレビ(HDTV)、スマートTV、スマート機器、スマートホーム機器、または保安音声認識を遂行するゲート制御・音声認証システム、拡張現実(AR)装置、IOT装置)、自律走行車両、ロボット装置または医療機器など、ニューラルネットワークを利用し、音声認識、映像認識及び映像分類を行う装置でもあるが、それらに制限されるものではない。本明細書に記載された例は、例えば、自律走行車、自動または自律の走行システム、知能型車両、ADAS(advanced driver assistance system)、車両を補助するナビゲーションシステムのような車両、及び車両が走行する車線を安全に維持させる車量管理システムに適用することができる。本明細書に記載された例は、例えば、拡張現実ヘッドアップディスプレイ(AR 3D HUD)のような車両ナビゲーション装置において、道路案内情報のためにも使用される。また、ニューラルネットワーク装置100は、前述のようなデバイスに搭載される専用ハードウェアアクセラレータ(HW accelerator)に該当する。また、ニューラルネットワーク装置100は、ニューラルネットワークを駆動するための専用モジュールであるNPU(neural processing unit)、TPU(tensor processing unit)、Neural Engineのようなハードウェアアクセラレータでもあるが、それらに限定されるものではない。前述の例は、非制限的なものであり、例えば、訓練、ゲーム、健康管理、公共安全、観光及びマーケティングでの応用のような他の例は、本開示の範囲内にあるものと見なされる。そのような装置は、例えば、音声認識、イメージ認識及びイメージ分類のような1以上の機能を遂行する。
図3を参照すると、ニューラルネットワーク装置100は、プロセッサ110、メモリ120及びユーザインターフェース130を含む。プロセッサ110、メモリ120及びユーザインターフェース130は、システムバス(system bus)、または他の適切な回路を介しても互いに連結される。図3に図示されたニューラルネットワーク装置100には、本実施形態と係わる構成要素だけが図示されている。従って、ニューラルネットワーク装置100には、図3に図示された構成要素以外に、他の汎用的な構成要素がさらに含まれてもよいことが、当該技術分野の通常の技術者に自明である。
プロセッサ110は、ニューラルネットワーク装置100において、ニューラルネットワークを駆動するための全般的な機能を制御する役割を行う。例えば、プロセッサ110は、ニューラルネットワーク装置100内のメモリ120に保存されたプログラムを実行することにより、ニューラルネットワーク装置100を全般的に制御する。プロセッサ110は、図4ないし図6、及び図8ないし図15を参照して説明する装置のうち少なくとも一つに含まれるか、あるいはそれらを含む。また、プロセッサ110は、図16を参照して説明する方法のうち少なくとも一つを遂行する。プロセッサ110は、所望の動作を行うための物理的構造の回路を有するハードウェアによって構成されたデータ処理装置を指す。例えば、前述の所望の動作は、プログラムに含まれたコードまたは命令を含んでもよい。例えば、プロセッサ110は、ニューラルネットワーク装置100内に具備されたCPU(central processing unit)、GPU(graphics processing unit)、AP(application processor)、ASIC(application-specific integrated circuit)、FPGA(field programmable gate array)などによっても具現化されるが、それらに制限されるものではない。
メモリ120は、ニューラルネットワーク装置100内で処理される各種データを保存するハードウェアであり、メモリ120は、ニューラルネットワーク装置100で処理されたデータ、及び処理されるデータを保存することができる。また、メモリ120は、ニューラルネットワーク装置100によって駆動されるアプリケーション、ドライバなどを保存することができる。メモリ120は、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)、ブルーレイ、または他の光学ディスクストレージ、HDD(hard disk drive)、SSD(solid state drive)、あるいはフラッシュメモリを含んでもよい。
ユーザインターフェース130は、ユーザインターフェースのレンダリング、ディスプレイのレンダリング、情報の出力及び/又はユーザ入力の受信を提供する1以上のハードウェア構成要素を含む物理的構造である。ユーザインターフェース130は、ニューラルネットワーク装置100から受信した結果を出力する。ユーザインターフェース130は、コンピュータモニタ、EGD(eye glass display)のように、ニューラルネットワーク装置100に動作自在に連結されるものであるならば、制限なしに含まれてもよい。
プロセッサ110は、コンボルーション演算のための演算ユニットと、キャッシュ(cache)機能を担当するオンチップ(on-chip)メモリを含んでもよい。
プロセッサ110は、メモリ120から、オンチップメモリに保存された(または、バッファリングされた)入力フィーチャマップのピクセル値、カーネルのウェイトなどを利用し、入力フィーチャマップとカーネルとのコンボルーション演算を処理する。プロセッサ110内において、演算ユニット及びオンチップメモリそれぞれは、1以上ずつ具備され、1以上の演算ユニット及びオンチップメモリそれぞれは、並列的に、独立的にコンボルーション演算を処理するのに利用されることにより、コンボルーション演算が効率的に処理される。
プロセッサ110の演算ユニット内には、コンボルーション演算のためのロジック回路が具備される。言い換えれば、プロセッサ110の演算ユニットは、乗算器(multiplier)、加算器(adder)及び累算器(accumulator)の組み合わせによって具現化された演算器を含んでもよい。また、該乗算器は、多数のサブ乗算器の組み合わせによっても具現化され、また加算器も、多数のサブ加算器の組み合わせによっても具現化される。
プロセッサ110の演算ユニットは、入力フィーチャマップのピクセル値、カーネルのウェイトのような多様なオペランド(operand)をディスパッチするためのディスパッチャ(dispatcher)を具備することができる。該ディスパッチャは、メモリ120に保存されている入力フィーチャマップのピクセル値、カーネルのウェイトなどのデータから、演算ユニットが行うコンボルーション演算に必要なピクセル値、ウェイトなどのオペランドを、オンチップメモリにディスパッチする。その後、該ディスパッチャは、オンチップメモリにディスパッチされたオペランドを、コンボルーション演算のために演算ユニット内プロセッシングユニットにさらにディスパッチする。
プロセッサ110は、入力フィーチャマップとカーネルとのコンボルーション演算を行い、出力フィーチャマップを生成することができる。効率的なコンボルーション演算のために、まず、プロセッサ110は、カーネルのウェイトそれぞれと入力フィーチャマップとの演算を行い、出力値を生成することができる。プロセッサ110は、入力フィーチャマップとカーネルのウェイトそれぞれとの演算を行うが、入力フィーチャマップを再使用し、演算を行うことができる。具体的には、プロセッサ110は、入力フィーチャマップのピクセル値それぞれに対して、カーネルの第1ウェイトを乗じる演算を行い、第1出力値を生成することができ、プロセッサ110は、入力フィーチャマップのピクセル値それぞれに対して、カーネルの第2ウェイトを乗じる演算を行い、第2ウェイトに対応する第2出力値を生成することができる。
次に、プロセッサ110は、ウェイトのカーネル内位置を基に設定された出力フィーチャマップ内位置において、出力値を累算し(accumulate)、出力フィーチャマップを生成することができる。言い換えれば、プロセッサ110は、設定された出力フィーチャマップ内位置で出力値を累算し、出力値が充填された出力フィーチャマップを生成することができる。プロセッサ110は、ウェイトそれぞれのカーネル内位置に基づいて、出力フィーチャマップ内で出力値を累算する位置を設定することができる。具体的には、プロセッサ110は、第1ウェイトのカーネル内位置を基に、出力フィーチャマップ内で第1出力値を累算する位置を設定することができ、第2ウェイトのカーネル内位置を基に、出力フィーチャマップ内において、第2出力値を累算する位置を設定することができる。また、入力フィーチャマップとカーネルとの演算が行われる以前に、あらかじめ出力フィーチャマップ内で出力値が累算される位置が設定される。従って、プロセッサ110は、第1ウェイトを基に設定された出力フィーチャマップ内位置において、第1出力値を累算し、第2ウェイトを基に設定された出力フィーチャマップ内位置において、第2出力値を累算し、出力フィーチャマップを生成することができる。
従って、プロセッサ110は、コンボルーション演算時、メモリ120から読み取った入力フィーチャマップを、毎サイクル(cycle)ごとに再使用し、出力フィーチャマップを生成するが、カーネルサイズと関係なく、入力フィーチャマップをメモリ120から読み取る回数を、1回に最小化させることができる。
また、プロセッサ110は、カーネルの第1ウェイトがゼロ(zero)である場合、入力フィーチャマップと第1ウェイトとの演算は、省略(skip)することができる。具体的には、プロセッサ110が毎サイクル(cycle)ごとに、カーネルのウェイトそれぞれと入力フィーチャマップとの演算を順次に行う間、ゼロ値を有する第1ウェイトと、入力フィーチャマップとの演算は、省略することができる。従って、プロセッサ110は、ゼロ値を有するウェイトの個数のサイクルだけ入力ピッチャーマップとカーネルとのコンボルーション演算時間を短縮させることができる。
図4は、プロセッサが入力フィーチャマップを再使用し、出力フィーチャマップを生成する実施形態を示す。図4では、説明の便宜上、入力フィーチャマップ410は、1×1ピクセル領域でもって図示され、カーネル420は、3×3ピクセル領域として図示されているが、それらに制限されるものではなく、入力フィーチャマップ及びカーネルは、互いに異なるサイズを有する領域でもある。
まず、1番目サイクル(cycle)において、プロセッサ110は、入力フィーチャマップ410と、カーネル420の第1ウェイト422との演算を行い、第1出力値を生成することができる。具体的には、プロセッサ110は、入力フィーチャマップ410のピクセル値と、カーネル420の第1ウェイト422との乗算演算を行い、第1出力値を生成することができる。次に、プロセッサ110は、カーネル420内第1ウェイト422の位置を基に設定された出力フィーチャマップ430内位置において、第1出力値を累算することができる。具体的には、カーネル420内第1ウェイト422の位置に対応する出力フィーチャマップ430内位置は、出力フィーチャマップ430の3行3列にも設定される。従って、プロセッサ110は、第1出力値を出力フィーチャマップ430の3行3列において累算することができる。
次に、2番目サイクルにおいて、プロセッサ110は、入力フィーチャマップ410と、カーネル420の第2ウェイト424との演算を行い、第2出力値を生成することができる。次に、プロセッサ110は、カーネル420内第2ウェイト424の位置を基に設定された出力フィーチャマップ430内位置において、第2出力値を累算することができる。具体的には、カーネル420内第2ウェイト424の位置に対応する出力フィーチャマップ430内位置は、出力フィーチャマップ430の3行2列にも設定される。言い換えれば、被演算子であるウェイトが、第1ウェイト422から第2ウェイト424に右側に1ブロックだけ変更されることにより、出力値を累算するための出力フィーチャマップ430内位置が、3行3列から3行2列に、左に1ブロックだけ変更される。従って、プロセッサ110は、第2出力値を出力フィーチャマップ430の3行2列において累算することができる。
次に、プロセッサ110は、3番目サイクルにおいて、入力フィーチャマップ410と、カーネル420の第3ウェイト426との演算を行い、第3出力値を生成することができ、出力フィーチャマップ430の3行1列において、第3出力値を累算することができる。また、プロセッサ110は、4番目サイクルにおいて、入力フィーチャマップ410と、カーネル420の第4ウェイト428との演算を行い、第4出力値を生成することができ、出力フィーチャマップ430の2行3列において、第4出力値を累算することができる。同様に、プロセッサ110は、5番目サイクルないし9番目サイクルにおいても、カーネル420のウェイトそれぞれと入力フィーチャマップ410との演算を行い、出力値を生成することができる。プロセッサ110は、カーネル420内ウェイト位置と対応する出力フィーチャマップ430内位置で出力値を累算し、結果として、出力値が充填された出力フィーチャマップ430を生成することができる。
また、図4においては、説明の便宜上、計9回のサイクル間、カーネル420のウェイトそれぞれと入力フィーチャマップ410との演算が行われるように図示されているが、ゼロ値を有するウェイトと、入力フィーチャマップ410との演算は、省略されてもよい。言い換えれば、プロセッサ110は、カーネル420内において、非ゼロ(non-zero)値を有するウェイトの個数だけ、カーネル420のウェイトそれぞれと、入力フィーチャマップ410との演算を行うことができる。
従って、プロセッサ110は、図2A及び図2Bに図示されているように、入力フィーチャマップ内で重複される領域が存在しながら、何回か入力フィーチャマップを読み取り、コンボルーション演算を行う方式ではない、ウェイトのカーネル内位置に基づき、出力フィーチャマップ上で出力値を累算する位置をあらかじめ設定しながら、入力フィーチャマップを毎サイクル(cycle)ごとに再使用する方式を介して、コンボルーション演算を行うが、さらに効率的なコンボルーション演算を行うことができる。
再び図3を参照すると、プロセッサ110は、入力フィーチャマップ内第1領域の再使用を基に、カーネル内ウェイトそれぞれと第1領域との演算を行い、第1出力値を生成することができる。次に、プロセッサ110は、ウェイトのカーネル内位置を基に設定された第1部分出力フィーチャマップ内位置において、第1出力値を累算し、第1部分出力フィーチャマップを生成することができる。次に、プロセッサ110は、出力フィーチャマップ上において、第1部分出力フィーチャマップを累算することができる。具体的には、プロセッサ110は、第1領域の入力フィーチャマップ内位置に基づいて、第1部分出力フィーチャマップを累算する出力フィーチャマップ内位置を設定することができ、設定された位置において、第1部分出力フィーチャマップを累算することができる。
また、プロセッサ110は、第1領域とは異なる領域である入力フィーチャマップ内第2領域の再使用を基に、カーネル内ウェイトそれぞれと第2領域との演算を行い、第2出力値を生成することができる。次に、プロセッサ110は、ウェイトのカーネル内位置を基に設定された第2部分出力フィーチャマップ内位置において、第2出力値を累算し、第2部分出力フィーチャマップを生成することができる。次に、プロセッサ110は、出力フィーチャマップ上において、第1部分出力フィーチャマップを累算することができる。具体的には、プロセッサ110は、第2領域の入力フィーチャマップ内位置に基づいて、第2部分出力フィーチャマップを累算する出力フィーチャマップ内位置を設定することができ、設定された位置において、第2部分出力フィーチャマップを累算することができる。
同様に、プロセッサ110は、第1領域及び第2領域とは異なる領域である入力フィーチャマップ内第N領域(Nは、3以上の自然数)の再使用を基に、カーネル内ウェイトそれぞれと第N領域との演算を行い、第N部分出力フィーチャマップを生成することができる。従って、プロセッサ110は、出力フィーチャマップ上において、第1部分出力フィーチャマップないし第N部分出力フィーチャマップを累算し、出力フィーチャマップを生成することができる。
プロセッサ110は、部分出力フィーチャマップを生成するために、入力フィーチャマップの1領域内ピクセルそれぞれに対応する乗算器(MUL:multiplier)を含み、部分出力フィーチャマップのピクセルそれぞれに対応するマルチプレクサ(MUX:multiplexer)、加算器(adder)、及び累算演算器(Acc. Register:accumulator&register)を含んでもよい。
プロセッサ110は、入力フィーチャマップ内の多様な形態の領域を設定することができ、設定された領域と、カーネルとの演算を行い、部分出力フィーチャマップを生成することができる。多様な形態の領域は、nピクセル、(n×m)ピクセルまたは(n×m×l)ピクセル(ここで、n、m、lは、1以上の自然数である)にもなる。また、該入力フィーチャマップは、二次元の入力フィーチャマップ、または三次元の入力フィーチャマップにもなり、該入力フィーチャマップの領域も、二次元の領域または三次元の領域にもなる。
プロセッサ110は、カーネルの一部領域に限定し、入力フィーチャマップの1領域と、カーネルの一部領域との演算を行い、部分出力フィーチャマップを生成することができる。プロセッサ110は、カーネルの一部領域に限定して演算を進めるために、部分出力フィーチャマップのサイズを小さくすることができ、結果として、部分出力フィーチャマップに対するバッファサイズを小さくすることができる。例えば、入力フィーチャマップの1領域のサイズが1×10ピクセル領域であり、カーネルのサイズが3×3ピクセル領域である場合、演算結果である部分出力フィーチャマップは、3×12ピクセル領域を有さなければならない。その場合、プロセッサ110は、カーネルのサイズを1×3ピクセル領域に限定し、コンボルーション演算を進めることができ、その結果、部分出力フィーチャマップは、1×12ピクセル領域を有するが、部分出力フィーチャマップに対するバッファサイズを小さくすることができる。
図5は、プロセッサが入力フィーチャマップの1領域を再使用し、部分出力フィーチャマップを生成する一実施形態を示す。図5においては、説明の便宜上、入力フィーチャマップ501の第1領域510は、4×4ピクセル領域として図示され、カーネル520は、3×3ピクセル領域として図示されているが、それらに制限されるものではなく、入力フィーチャマップの第1領域及びカーネルは、互いに異なるサイズを有する領域でもある。
まず、1番目サイクルにおいて、プロセッサ110は、第1領域510と、カーネル520の第1ウェイト522との演算を行い、第1出力値を生成することができる。具体的には、プロセッサ110は、第1領域510内ピクセル値それぞれと第1ウェイト522との乗算演算を行い、第1出力値を生成することができる。言い換えれば、プロセッサ110は、第1領域510の16個のピクセル値それぞれに第1ウェイト522を乗じ、16個の第1出力値を生成することができる。次に、プロセッサ110は、カーネル520内第1ウェイト522の位置を基に設定された第1部分出力フィーチャマップ530内位置において、第1出力値を累算することができる。具体的には、カーネル520内第1ウェイト522の位置に対応する第1部分出力フィーチャマップ530内位置は、第1部分出力フィーチャマップ530の領域532にもなる。従って、プロセッサ110は、第1部分出力フィーチャマップ530内領域532において、第1出力値を累算することができる。言い換えれば、プロセッサ110は、第1領域510のn行m列(ここで、n及びmは、自然数である)のピクセル値に第1ウェイト522を乗じた結果値を、第1部分出力フィーチャマップ530内領域532のn行m列において累算することができる。
次に、2番目サイクルにおいて、プロセッサ110は、第1領域510と、カーネル520の第2ウェイト524との演算を行い、第2出力値を生成することができる。次に、プロセッサ110は、カーネル520内第2ウェイト524の位置を基に設定された第1部分出力フィーチャマップ530内位置において、第2出力値を累算することができる。具体的には、カーネル520内第2ウェイト524の位置に対応する第1部分出力フィーチャマップ530内位置は、第1部分出力フィーチャマップ530の領域534にもなる。言い換えれば、被演算子であるウェイトが、第1ウェイト522から第2ウェイト524に、右側に1ブロックだけ変更されることにより、出力値を累算するための第1部分出力フィーチャマップ530内領域が、領域532から領域534に左に1ブロックだけ変更される。従って、プロセッサ110は、第1部分出力フィーチャマップ530の領域534において、第2出力値を累算することができる。
同様に、プロセッサ110は、3番目サイクルないし9番目サイクルにおいても、カーネル520のウェイトそれぞれと、第1領域510との演算を行い、出力値を生成することができる。プロセッサ110は、カーネル520内ウェイト位置と対応する第1部分出力フィーチャマップ530内領域において出力値を累算し、結果として、第1部分出力フィーチャマップ530を生成することができる。
プロセッサ110は、生成された第1部分出力フィーチャマップ530を出力フィーチャマップ531上で累算することができる。具体的には、プロセッサ110は、第1領域510の入力フィーチャマップ501内位置に基づいて設定された出力フィーチャマップ531の位置において、第1部分出力フィーチャマップ530を累算することができる。
また、プロセッサ110は、第1領域510とは異なる入力フィーチャマップ501内第N領域(Nは、2以上の自然数である)についても、第N領域の再使用を基に、カーネル520内ウェイトそれぞれと第N領域との演算を行い、出力値を生成することができ、ウェイトのカーネル520内位置を基に設定された第N部分出力フィーチャマップ内位置において、出力値を累算し、第N部分出力フィーチャマップを生成することができる。次に、プロセッサ110は、生成された第N部分出力フィーチャマップを出力フィーチャマップ531上で累算することができる。結果として、プロセッサ110は、第1部分出力フィーチャマップないし第N部分出力フィーチャマップを、出力フィーチャマップ531上で累算し、出力フィーチャマップ531を生成することができる。言い換えれば、プロセッサ110は、第1部分出力フィーチャマップないし第N部分出力フィーチャマップの出力値が充填された出力フィーチャマップ531を生成することができる。また、図5においては、説明の便宜上、計9回のサイクル間カーネル520のウェイトそれぞれと、第1領域510との演算が行われるように図示されているが、ゼロ値を有するウェイトと、第1領域510との演算は、省略される。言い換えれば、プロセッサ110は、カーネル520内において、非ゼロ(non-zero)値を有するウェイトの個数だけカーネル520のウェイトそれぞれと、第1領域510との演算を行うことができる。
図6は、プロセッサが部分出力フィーチャマップを生成する具体的な実施形態を示す。図6において、プロセッサ110は、図5の第1部分出力フィーチャマップ530を生成するために、16個の乗算器(MUL)、36個のマルチプレクサ(MUX)、36個の加算器(Adder)、及び36個の累算演算器(Acc. Register)を含んでもよい。
16個の乗算器それぞれは、図5の第1領域510のピクセルそれぞれに対応する。16個の乗算器それぞれに、カーネル520のウェイトと、第1領域510のピクセルそれぞれとが入力される。例えば、第1乗算器には、カーネル520の第1ウェイトと、第1領域510の第1ピクセルとが入力され、第2乗算器には、カーネル520の第1ウェイトと、第1領域510の第2ピクセルとが入力され、第16乗算器には、カーネル520の第1ウェイトと、第1領域150の第16ピクセルとが入力される。また、9回のサイクルそれぞれごとに、16個の乗算器それぞれに、カーネル520のウェイトが、第1ウェイトから第9ウェイトまで順次に入力され、第1領域510のピクセルそれぞれが反復的に入力される。従って、16個の乗算器は、9回のサイクルそれぞれごとに、カーネル520のウェイトそれぞれと、第1領域510との乗算演算を行うことができ、その結果出力値を出力することができる。
当該の36個のマルチプレクサ、加算器、及び累算演算器それぞれは、第1部分出力フィーチャマップ530の36個のピクセルそれぞれに対応する。言い換えれば、1セットのマルチプレクサ、加算器及び累算演算器が36個のピクセルのうちいずれか1つのピクセルに対応する。36個のマルチプレクサそれぞれは、16個の乗算器の出力値のうち既設定個数の出力値を入力される。
図6の図面(610)は、第1部分出力フィーチャマップ530の36個ピクセルそれぞれごとに累算された出力値の個数を示す。例えば、第1部分出力フィーチャマップ530の1行1列のピクセル値は、1個の出力値が累算されるが、第1部分出力フィーチャマップ530の3行3列のピクセル値は、9個の出力値が累算される。また、第1部分出力フィーチャマップ530の36個ピクセルそれぞれごとに累算された出力値の個数は、マルチプレクサの入力の個数を意味する。例えば、第1部分出力フィーチャマップ530の3行3列のピクセルに対応するマルチプレクサは、9個の乗算器から出力される出力値を入力として受信することができる。
36個のマルチプレクサそれぞれは、16個の乗算器の出力値のうち既設定個数の出力値を入力され、既設定個数の出力値のうち1つの出力値を選択することができる。具体的には、36個のマルチプレクサそれぞれは、図面(610)のように、第1部分出力フィーチャマップ530の各ピクセルに対応する個数の出力値を入力され、カーネル520内ウェイトの位置に基づいて、1つの出力値を選択することができる。例えば、第1部分出力フィーチャマップ530の3行3列のピクセルに対応するマルチプレクサは、第1領域510と、カーネル520内ウェイトとの演算結果として出力される領域の1行1列から3行3列までの9個の出力値を入力される。ここで、該マルチプレクサは、第1領域510と、カーネル520内第1ウェイト522との演算時、第1ウェイト522のカーネル520内位置に基づいて、領域532内9個の出力値のうち1行1列の出力値を選択することができる。次に、該マルチプレクサは、第1領域510と、カーネル520内第2ウェイト524との演算時、第1ウェイト522のカーネル520内位置に基づいて、領域534内9個の出力値のうち1行2列の出力値を選択することができる。
36個の加算器及び累算演算器のそれぞれは、36個のマルチプレクサそれぞれから選択される出力値を累算することができる。従って、36個の累算演算器それぞれは、計9回のサイクル間出力値を累算した結果、36個のピクセル値で構成された第1部分出力フィーチャマップ530を生成することができる。
図7は、カーネルとの演算のための入力フィーチャマップの多様な形態の領域の実施形態を示す。
プロセッサ110は、入力フィーチャマップ710内の多様な形態の領域を設定することができ、設定された領域とカーネルとの演算を行い、部分出力フィーチャマップを生成することができる。
一例により、プロセッサ110は、入力フィーチャマップ710内において、(n×n)ピクセルからなる領域720を設定し、カーネルとの演算を介して、領域720に係わる部分出力フィーチャマップを生成することができ、該部分出力フィーチャマップを出力フィーチャマップ上で累算することができる。
他の例により、プロセッサ110は、入力フィーチャマップ710内において、(1×n)ピクセルからなる領域730を設定し、カーネルとの演算を介して、領域730に係わる部分出力フィーチャマップを生成することができ、部分出力フィーチャマップを、出力フィーチャマップ上において累算することができる。言い換えれば、プロセッサ110は、入力フィーチャマップ710内において、正方形状の領域720ではない、領域730のように、一方向だけに入力される領域も設定することができる。
さらに他の例により、プロセッサ110は、入力フィーチャマップ710内において、(1×1×n)ピクセルからなる領域740を設定し、カーネルとの演算を介して、領域740に係わる部分出力フィーチャマップを生成することができ、部分出力フィーチャマップを出力フィーチャマップ上において累算することができる。
図8は、プロセッサが入力フィーチャマップの1領域を再使用し、部分出力フィーチャマップを生成する他の実施形態を示す。図8においては、説明の便宜上、入力フィーチャマップの第1領域810は、1×10ピクセル領域として図示され、カーネル820は、3×3ピクセル領域として図示されているが、それらに制限されるものではなく、入力フィーチャマップの第1領域及びカーネルは、互いに異なるサイズを有する領域でもある。
1番目サイクルにおいて、プロセッサ110は、第1領域810と、カーネル820の第1ウェイト822との演算を行い、第1出力値を生成することができ、カーネル820内第1ウェイト822の位置を基に設定された第1部分出力フィーチャマップ830内位置において、第1出力値を累算することができる。言い換えれば、プロセッサ110は、第1出力値を、第1部分出力フィーチャマップ830内領域832において累算することができる。
次に、プロセッサ110は、2番目サイクルないし9番目サイクルにおいて、第1領域810の再使用を基に、カーネル820のウェイトそれぞれと、第1領域810との演算を行い、第1部分出力フィーチャマップ830を生成することができる。
図9は、プロセッサがカーネルの一部のみを利用し、部分出力フィーチャマップを生成する実施形態を示す。
プロセッサ110は、図8のカーネル820の一部領域920に限定して、図8の入力フィーチャマップの第1領域810と、カーネルの一部領域920との演算を行い、部分出力フィーチャマップ930を生成することができる。
具体的には、プロセッサ110は、一部領域920の第1ウェイト922と、第1領域810との演算を介して、第1出力値を生成することができ、第1出力値を、部分出力フィーチャマップ930内領域932において累算することができる。次に、プロセッサ110は、一部領域920の第2ウェイト924と、第1領域810との演算を介して、第2出力値を生成することができ、第2出力値を、部分出力フィーチャマップ930内領域934において累算することができる。最後に、プロセッサ110は、一部領域920の第3ウェイトと、第1領域810との演算を介して、第3出力値を生成することができ、第3出力値を、部分出力フィーチャマップ930内領域936において累算し、部分出力フィーチャマップ930を生成することができる。
また、プロセッサ110は、カーネル820の他の領域と、入力フィーチャマップの第1領域810との演算を行い、部分出力フィーチャマップを生成することができる。
従って、図8と比較するとき、図9においてプロセッサ110は、カーネルの一部領域に限定して演算を進めた結果、部分出力フィーチャマップのサイズを小さくすることができ、結果として、部分出力フィーチャマップを保存するためのバッファのサイズを小さくすることができる。
再び図3を参照すると、プロセッサ110は、入力フィーチャマップ、または入力フィーチャマップの1領域をストリーム(stream)の形態で、連続して読み取ることができ、読み出した入力フィーチャマップ、または入力フィーチャマップの1領域を基に、カーネルとのコンボルーション演算を行うことができる。具体的には、プロセッサ110は、入力フィーチャマップ、または入力フィーチャマップの1領域を再使用し、カーネルとのコンボルーション演算を行うが、入力フィーチャマップ、または入力フィーチャマップの1領域を1回読み取った後、さらに読み取る必要がないので、連続したストリームのように、入力フィーチャマップ、または入力フィーチャマップの領域を連続して読み取ることができる。
また、プロセッサ110は、圧縮された入力フィーチャマップを読み取って圧縮された入力フィーチャマップと、カーネルとのコンボルーション演算を行うことができる。具体的には、入力フィーチャマップ、及び圧縮された入力フィーチャマップは、メモリ120にも保存され、プロセッサ110は、メモリ120にアクセスして圧縮された入力フィーチャマップを読み取り、コンボルーション演算を行うことができる。例えば、プロセッサ110は、コンボルーション演算結果である出力フィーチャマップを、次のレイヤの入力フィーチャマップとして、メモリ120に保存することができる。また、プロセッサ110は、入力フィーチャマップを圧縮することができ、圧縮された入力フィーチャマップを、メモリ120に保存することができる。次に、プロセッサ110は、メモリ120から圧縮された入力フィーチャマップを読み取ることができ、圧縮された入力フィーチャマップに基づいて、コンボルーション演算を行うことができる。
従って、プロセッサ110は、入力フィーチャマップだけではなく、圧縮された入力フィーチャマップ、または圧縮された入力フィーチャマップの1領域も、連続したストリームのように読み取り、コンボルーション演算を行うことができるが、コンボルーション演算速度を速めることができる。
図10は、プロセッサが、圧縮された入力フィーチャマップを、ストリームのように読み取り、コンボルーション演算を行う実施形態を示す。
メモリ120は、入力フィーチャマップを保存するだけではなく、圧縮された入力フィーチャマップ1010を共に保存することができる。圧縮された入力フィーチャマップ1010は、入力フィーチャマップの1領域単位でも圧縮される。例えば、圧縮された入力フィーチャマップ1010は、4×4領域単位でも圧縮される。プロセッサ1010は、圧縮された入力フィーチャマップ1010を、連続したストリームのように読み取り、コンボルーション演算を行うことができる。
また、圧縮された入力フィーチャマップ1010は、非ゼロ(non-zero)値を有するピクセルによっても構成されるが、プロセッサ1010が圧縮された入力フィーチャマップ1010と、カーネルとのコンボルーション演算を行い、ゼロスキッピング(zero skipping)を具現化することができ、結果として、メモリ帯域幅を狭めることができる。
図11は、プロセッサのハードウェア構成を図示した一実施形態を示す。
プロセッサ110は、複数の演算ユニット1112,1114,1116、及び複数の出力ユニット1122,1124,1126を含んでもよい。
複数の演算ユニット1112,1114,1116それぞれは、入力フィーチャマップの複数領域IFM_1,IFM_2ないしIFM_Nにおいて、互いに異なる領域と、カーネルとの演算を行い、部分出力フィーチャマップを生成することができる。例えば、第1演算ユニット1112は、入力フィーチャマップの第1領域IFM_1の再使用を基に、カーネルと第1領域IFM_1との演算を行い、第1部分出力フィーチャマップを生成することができる。また、第N演算ユニット1116は、入力フィーチャマップの第N領域IFM_Nの再使用を基に、カーネルと第N領域IFM_Nとの演算を行い、第N部分出力フィーチャマップを生成することができる。
複数の演算ユニット1112,1114,1116それぞれは、フロントエンド(frontend)に位置したディスパッチャ(dispatcher)、プロセッシングユニット及び第1バッファを含んでもよい。具体的には、第1演算ユニット1112のディスパッチャは、メモリ120から入力フィーチャマップの第1領域IFM_1を読み取ることができ、それをプロセッシングユニットにディスパッチすることができる。次に、プロセッシングユニットは、第1領域IFM_1とカーネルとの演算を行い、出力値を生成することができる。例えば、プロセッシングユニットは、乗算器、加算器及び累算器など多様な演算器を含んでもよい。プロセッシングユニットは、第1領域IFM_1と第1カーネルとの演算を行い、第1出力値を生成することができ、第1領域IFM_1と第2カーネルとの演算を行い、第2出力値を生成することができ、第1領域IFM_1と第Nカーネルとの演算を行い、第N出力値を生成することができる。次に、第1バッファ1113は、出力値を累算し、第1部分出力フィーチャマップを生成することができる。例えば、第1バッファ1113内バッファ1は、プロセッシングユニットによって生成された第1出力値を累算し、第(1−1)部分出力フィーチャマップを生成することができ、第1バッファ1113内バッファ2は、プロセッシングユニットによって生成された第2出力値を累算し、第(1−2)部分出力フィーチャマップを生成することができ、第1バッファ1113内バッファNは、プロセッシングユニットによって生成された第N出力値を累算し、第(1−N)部分出力フィーチャマップを生成することができる。
同様に、他の演算ユニット1114,1116は、ディスパッチャ、プロセッシングユニット及び第1バッファを介して、入力フィーチャマップの他領域IFM_2ないしIFM_Nの再使用を基に、カーネルと、入力フィーチャマップの他領域IFM_2ないしIFM_Nとの演算を行い、第2部分出力フィーチャマップないし第N部分出力フィーチャマップを生成することができる。
また、複数の演算ユニット1112,1114,1116それぞれに含まれるプロセッシングユニットは、並列化された複数個のプロセッシングユニットによっても構成される。例えば、第1演算ユニット1112のプロセッシングユニットは、入力フィーチャマップの第1領域IFM_1と第1カーネルとの演算を行う第1プロセッシングユニット、及び第1領域IFM_1と第2カーネルとの演算を行う第2プロセッシングユニットを含んでもよい。その場合、第1プロセッシングユニットは、入力フィーチャマップの第1領域IFM_1と第1カーネルとの演算を完了した後、入力フィーチャマップの第1領域IFM_1と第2カーネルとの演算のうち一部を第2プロセッシングユニットの代わりに遂行することができる。その結果、ロードバランシングがなされ、全体プロセッシング時間が短縮される。具体的な例は、図15で説明する。
複数の出力ユニット1122,1124,1126は、複数の演算ユニット1112,1114,1116から生成される部分出力フィーチャマップのうち、必要とする部分出力フィーチャマップを累算し、出力フィーチャマップの複数領域OFM_0,OFM_1ないしOFM_Nを生成することができる。また、複数の出力ユニット1122,1124,1126は、出力フィーチャマップの複数領域OFM_0,OFM_1ないしOFM_Nを生成し、メモリ120に出力することができる。
複数の出力ユニット1122,1124,1126それぞれは、第2バッファ及びバックエンド(backend)に位置した出力処理器(output handler)を含んでもよい。
具体的には、第1出力ユニット1122の第2バッファは、複数の演算ユニット1112,1114,1116それぞれから、必要とする部分出力フィーチャマップを受信することができ、受信された部分出力フィーチャマップを累算し、出力フィーチャマップの第1領域OFM_1を生成することができる。例えば、第1出力ユニット1122の第2バッファは、第1演算ユニット1112のバッファ1から第(1−1)部分出力フィーチャマップを受信することができ、第2演算ユニット1112のバッファ1から第(2−1)部分出力フィーチャマップを受信することができ、第N演算ユニット1116のバッファ1から、第(N−1)部分出力フィーチャマップを受信することができる。また、第1出力ユニット1122の第2バッファは、受信された第(1−1)部分出力フィーチャマップないし第(N−1)部分出力フィーチャマップを累算し、出力フィーチャマップの第1領域OFM_1を生成することができる。次に、第1出力ユニット1122の出力処理器は、出力フィーチャマップの第1領域OFM_1に対するピクセル処理を行うことができ、ピクセル処理された出力フィーチャマップの第1領域OFM_1をメモリ120に出力することができる。
同様に、他の出力ユニット1124,1126は、第2バッファ及び出力処理器を介して、複数の演算ユニット1112,1114,1116それぞれから、必要とする部分出力フィーチャマップを受信することができ、受信された部分出力フィーチャマップを累算し、出力フィーチャマップの第2領域ないし第N領域、OFM_2ないしOFM_Nを生成することができる。
複数の演算ユニット1112,1114,1116それぞれは、入力フィーチャマップの互いに異なる領域を再使用し、カーネルとの演算を行うが、複数の演算ユニット1112,1114,1116それぞれは、互いに独立して並列的な演算を行うことができる。また、複数の演算ユニット1112,1114,1116それぞれにおいて、ディスパッチャは、同一演算ユニット上のプロセッシングユニットにおいて、入力フィーチャマップの1領域をディスパッチするだけで、他の演算ユニット上のプロセッシングユニットにおいて、入力フィーチャマップの1領域をディスパッチしないので、プロセッサ110のフロントエンド(frontend)での複雑度を低減させることができる。
図11を参照すると、一例により、複数の演算ユニット1112,1114,1116と、複数の出力ユニット1122,1124,1126は、互いに完全連結(fully connected)される。従って、プロセッサ110のフロントエンド(frontend)での複雑度が低減される代わりに、プロセッサ110のバックエンド(backend)での複雑度が上昇するように見えるが、複数の出力ユニット1122,1124,1126は、複数の演算ユニット1112,1114,1116それぞれから、必要とする部分出力フィーチャマップを選択的に累算する演算を行うが、複数の演算ユニット1112,1114,1116よりは、時間上スパースな(sparsely)演算を行うことになるので、複雑度が大きく上昇しない。
図12は、プロセッサのハードウェア構成を図示した他の実施形態を示す。
プロセッサ110は、複数の演算ユニット1212,1214,1216、及び複数の出力ユニット1222,1224,1226を含んでもよい。図12の複数演算ユニット1212,1214,1216、及び複数の出力ユニット1222,1224,1226は、図11の複数演算ユニット1112,1114,1116、及び複数の出力ユニット1122,1124,1126と対応するが、重複内容については、説明を省略する。
図12を参照すると、複数の演算ユニット1212,1214,1216と複数の出力ユニット1222,1224,1226は、バス1210を介して連結される。
複数の出力ユニット1222,1224,1226は、複数の演算ユニット1212,1214,1216それぞれから、必要とする部分出力フィーチャマップを選択的に累算する演算を行うことができるが、バス1210を介して、複数の演算ユニット1212,1214,1216から、必要とする部分出力フィーチャマップを受信することができる。
従って、プロセッサ110は、複数の演算ユニット1212,1214,1216と複数の出力ユニット1222,1224,1226との部分出力フィーチャマップの送受信経路を完全連結(fully connected)ではないバス1210を介して具現化するが、ハードウェアオーバーヘッドを減らすことができる。
図13は、プロセッサのハードウェア構成を図示したさらに他の実施形態を示す。
プロセッサ110は、複数の演算ユニット1312,1314,1316を含んでもよい。複数の演算ユニット1312,1314,1316それぞれは、入力フィーチャマップの複数領域のうち互いに異なる領域と、カーネルとの演算を行い、部分出力フィーチャマップを生成することができる。複数の演算ユニット1312,1314,1316それぞれは、ディスパッチャ(dispatcher)、プロセッシングユニット、及びバッファを含んでもよい。例えば、第1演算ユニット1312のディスパッチャは、メモリ120から入力フィーチャマップの第1領域を読み取ることができ、それをプロセッシングユニットにディスパッチすることができる。次に、プロセッシングユニットは、第1領域とカーネルとの演算を行い、出力値を生成することができ、該バッファは、出力値を累算し、第1部分出力フィーチャマップを生成することができる。
複数の演算ユニット1312,1314,1316それぞれは、他の演算ユニットから、必要とする部分出力フィーチャマップを累算し、出力フィーチャマップの複数領域それぞれを生成することができる。具体的には、互いに隣接する複数の演算ユニット間のバッファが互いに連結されるが、複数の演算ユニット1312,1314,1316それぞれのバッファは、必要とする部分出力フィーチャマップを、他の演算ユニットのバッファから伝達される。例えば、第1演算ユニット1312のバッファが第N演算ユニット1316から出力される部分出力フィーチャマップを必要とする場合、第1演算ユニット1312は、第N演算ユニット1316から出力される部分出力フィーチャマップを、第2演算ユニット1314のバッファを経て伝達される。
図14は、プロセッサの演算ユニットが、カーネルと、入力フィーチャマップの領域それぞれとの演算を行う実施形態を示す。
プロセッサ110は、第1演算ユニット1412、第2演算ユニット1414、第3演算ユニット1416及び第4演算ユニット1418を含んでもよい。また、プロセッサ110は、第1出力ユニット1422、第2出力ユニット1424、第3出力ユニット1426及び第4出力ユニット1428を含んでもよい。また、プロセッサ110は、バス1430を含んでもよい。
第1演算ユニット1412は、入力フィーチャマップの第1領域IFM0とカーネルとの演算を行い、第1部分出力フィーチャマップを生成することができる。具体的には、第1演算ユニット1412は、第1プロセッシングユニットを介して、第1領域IFM0と第1カーネルとの演算を行い、第(1−1)部分出力フィーチャマップを生成することができ、第2プロセッシングユニットを介して、第1領域IFM0と第2カーネルとの演算を行い、第(1−2)部分出力フィーチャマップを生成することができ、第3プロセッシングユニットを介して、第1領域IFM0と第3カーネルとの演算を行い、第(1−3)部分出力フィーチャマップを生成することができ、第4プロセッシングユニットを介して、第1領域IFM0と第4カーネルとの演算を行い、第(1−4)部分出力フィーチャマップを生成することができる。
同様に、第2演算ユニット1414、第3演算ユニット1416、及び第4演算ユニット1418は、4個のプロセッシングユニットを介して、入力フィーチャマップの第2領域IFM1、第3領域IFM2、及び第4領域IFM3と、カーネルとの演算を行い、第(2−1)部分出力フィーチャマップないし第(2−4)部分出力フィーチャマップ、第(3−1)部分出力フィーチャマップないし第(3−4)部分出力フィーチャマップ、及び第(4−1)部分出力フィーチャマップないし第(4−4)部分出力フィーチャマップを生成することができる。
第1出力ユニット1422は、バス1430を介して、複数の演算ユニット1412,1414,1416,1418から、必要とする部分出力フィーチャマップを受信することができる。例えば、第1出力ユニット1422は、バス1430を介して、第(1−1)部分出力フィーチャマップ、第(2−1)部分出力フィーチャマップ、第(3−1)部分出力フィーチャマップ、及び第(4−1)部分出力フィーチャマップを受信することができ、第(1−1)部分出力フィーチャマップ、第(2−1)部分出力フィーチャマップ、第(3−1)部分出力フィーチャマップ、及び第(4−1)部分出力フィーチャマップを累算し、出力フィーチャマップの第1領域OFM0を生成することができる。
同様に、第2出力ユニット1424、第3出力ユニット1426、及び第4出力ユニット1428は、バス1430を介して、必要とする部分出力フィーチャマップを受信して、出力フィーチャマップの第2領域OFM1、第3領域OFM2、及び第4領域OFM3を生成することができる。
図15は、プロセッサの演算ユニットが、カーネルと、入力フィーチャマップの領域それぞれとの演算を行う他の実施形態を示す。
複数の演算ユニット1412ないし1418それぞれが、入力フィーチャマップの1領域とカーネルとの演算を行う場合、複数の演算ユニット1412ないし1418内のプロセッシングユニットそれぞれの演算時間は、互いに異なり。具体的には、図面(1510)について述べれば、第1演算ユニット1412の第1プロセッシングユニットないし第4プロセッシングユニットの演算時間が互いに異なる。言い換えれば、第1プロセッシングユニットが入力フィーチャマップの第1領域IFM0と第1カーネルとの演算を行う時間が、第2プロセッシングが第1領域IFM0と第2カーネルとの演算を行う時間より短く、第4プロセッシングが第1領域IFM0と第4カーネルとの演算を行う時間が最も長い。その結果、全体処理時間(total processing time)が長くなってしまう。
従って、複数の演算ユニット1412ないし1418それぞれは、入力フィーチャマップの1領域と、カーネルとの演算を行うとき、ロードバランシング(load balancing)のために、まず演算を完了したプロセッシングユニットが、他のプロセッシングユニットの演算の代わりをするように制御することができる。具体的には、第1演算ユニット1412の第3プロセッシングユニットが、第1入力IFM0と第3カーネルとの演算を介して、第(1−3)部分出力フィーチャマップを生成した後、第3プロセッシングユニットは、第4プロセッシングユニットが演算する第1入力IFM0と第4カーネルとの演算のうち一部に対して、代わりに演算することができる。その結果、図面(1530)のように、全体処理時間が短縮される。
また、演算ユニット内プロセッシングユニットが、他のプロセッシングユニットの演算の代わりをしても、出力演算ユニット側においては、必要とする部分出力フィーチャマップを選択的に持ってくることができるので、演算ユニット側でのロードバランシングと関係なく、出力演算ユニットは、出力フィーチャマップの領域を生成することができる。
図16は、一実施形態により、ニューラルネットワーク装置の動作方法について説明するための図面である。
図16に図示された方法は、図3ないし図15のニューラルネットワーク装置100の各構成要素によって遂行され、重複説明については、省略する。
段階1610において、ニューラルネットワーク装置100は、カーネルのウェイトそれぞれと入力フィーチャマップとの演算を行い、出力値を生成することができる。具体的には、ニューラルネットワーク装置100は、入力フィーチャマップと、カーネルの第1ウェイトとの演算を行い、第1出力値を生成することができる。また、ニューラルネットワーク装置100は、入力フィーチャマップと、カーネルの第2ウェイトとの演算を行い、第2出力値を生成することができる。
ニューラルネットワーク装置100は、入力フィーチャマップの第1領域と、カーネルのウェイトそれぞれとの演算を行い、第1出力値を生成することができる。また、ニューラルネットワーク装置100は、第1領域とは異なる領域である入力フィーチャマップの第2領域と、カーネル内ウェイトそれぞれとの演算を行い、第2出力値を生成することができる。
ニューラルネットワーク装置100は、カーネル内第1ウェイトがゼロ(zero)である場合、入力フィーチャマップと第1ウェイトとの演算を省略することができる。
ニューラルネットワーク装置100は、圧縮された入力フィーチャマップをストリームのように連続的に読み取り、カーネルのウェイトそれぞれと、圧縮された入力フィーチャマップとの演算を行うことができる。
段階1620において、ニューラルネットワーク装置100は、ウェイトのカーネル内位置を基に設定された出力フィーチャマップ内位置において、出力値を累算し、出力フィーチャマップを生成することができる。具体的には、ニューラルネットワーク装置100は、第1ウェイトの前記カーネル内位置を基に設定された出力フィーチャマップ内第1位置において、第1出力値を累算することができる。また、ニューラルネットワーク装置100は、第2ウェイトのカーネル内位置を基に設定された出力フィーチャマップ内第2位置において、第2出力値を累算することができる。
ニューラルネットワーク装置100は、ウェイトのカーネル内位置を基に設定された第1部分出力フィーチャマップ内位置において、第1出力値を累算し、第1部分出力フィーチャマップを生成し、出力フィーチャマップ上において、第1部分出力フィーチャマップを累算することができる。また、ニューラルネットワーク装置100は、ウェイトのカーネル内位置を基に設定された第2部分出力フィーチャマップ内位置において、第2出力値を累算し、第2部分出力フィーチャマップを生成し、出力フィーチャマップ上で第2部分出力フィーチャマップを累算することができる。
また、ニューラルネットワーク装置100は、入力フィーチャマップの複数領域それぞれと、カーネルとの演算を行い、部分出力フィーチャマップを生成することができる。次に、ニューラルネットワーク装置100は、部分出力フィーチャマップのうち、必要とする部分出力フィーチャマップを累算し、出力フィーチャマップの複数領域それぞれを生成することができる。また、ニューラルネットワーク装置100は、複数の領域における1領域と、複数のカーネルそれぞれとの演算を行い、部分出力フィーチャマップを生成することができる。
なお、前述の方法は、コンピュータで実行されるプログラムに作成可能であり、コンピュータで読み取り可能な記録媒体を利用し、前記プログラムを動作させる汎用デジタルコンピュータでも具現化される。また、前述の方法で使用されるデータの構造は、コンピュータで読み取り可能な記録媒体にも、多くの手段を介して記録される。前記コンピュータで読み取り可能な記録媒体は、磁気記録媒体(例えば、ROM(read-only memory)、RAM(random access memory)、USB(universal serial bus)、フロッピーディスク、ハードディスクなど)、光学的判読媒体(例えば、CD−ROM(compact disc read only memory)、DVD(digital versatile disc)など)のような記録媒体を含む。
本実施形態と係わる技術分野で当業者であれば、前述の本質的な特性から逸脱しない範囲で変形された形態にも具現化されるということを理解できるであろう。従って、開示された方法は、限定的な観点ではなく、説明的な観点から考慮されなければならず、権利範囲は、前述の説明ではなく、特許請求の範囲に示されており、それと同等な範囲内にある全ての差異を含むものであると解釈されなければならない。
本発明に係るニューラルネットワークのコンボルーション演算を処理する方法及びその装置は、例えば、データ分析関連の技術分野に効果的に適用可能である。
1 ニューラルネットワーク
100 ニューラルネットワーク装置
110 プロセッサ
120 メモリ

Claims (20)

  1. ニューラルネットワーク装置であって、
    少なくとも1つのプログラムが保存されたメモリと、
    前記少なくとも1つのプログラムを実行することにより、ニューラルネットワークのコンボルーション演算を処理するプロセッサと、を含み、
    前記プロセッサは、
    カーネルのウェイトそれぞれと入力フィーチャマップとの演算を行い、出力値を生成し、
    前記ウェイトの前記カーネル内位置を基に設定された出力フィーチャマップ内位置において、前記出力値を累算し、前記出力フィーチャマップを生成する、
    ように構成されている、ニューラルネットワーク装置。
  2. 前記プロセッサは、
    前記入力フィーチャマップと、前記カーネルの第1ウェイトとの演算を行い、第1出力値を生成し、
    前記第1ウェイトの前記カーネル内位置を基に設定された前記出力フィーチャマップ内第1位置において、前記第1出力値を累算し、
    前記入力フィーチャマップと、前記カーネルの第2ウェイトとの演算を行い、第2出力値を生成し、
    前記第2ウェイトの前記カーネル内位置を基に設定された前記出力フィーチャマップ内第2位置において、前記第2出力値を累算する、
    ように構成されている、請求項1に記載のニューラルネットワーク装置。
  3. 前記プロセッサは、
    前記入力フィーチャマップの第1領域と、前記カーネルのウェイトそれぞれとの演算を行い、第1出力値を生成し、
    前記ウェイトの前記カーネル内位置を基に設定された第1部分出力フィーチャマップ内位置において、前記第1出力値を累算し、前記第1部分出力フィーチャマップを生成し、
    前記出力フィーチャマップ上において、前記第1部分出力フィーチャマップを累算する、
    ように構成されている、請求項1に記載のニューラルネットワーク装置。
  4. 前記プロセッサは、
    前記第1領域とは異なる領域である前記入力フィーチャマップの第2領域と、前記カーネル内ウェイトそれぞれとの演算を行い、第2出力値を生成し、
    前記ウェイトの前記カーネル内位置を基に設定された第2部分出力フィーチャマップ内位置において、前記第2出力値を累算し、前記第2部分出力フィーチャマップを生成し、
    前記出力フィーチャマップ上において、前記第2部分出力フィーチャマップを累算する、
    ように構成されている、請求項3に記載のニューラルネットワーク装置。
  5. 記第1領域は、前記入力フィーチャマップ内においてnピクセル、(n×m)ピクセル、(n×m×l)ピクセルのうち少なくとも一つによって構成された領域であり、
    n、m、及びlは、1以上の自然数である、
    ことを特徴とする請求項3に記載のニューラルネットワーク装置。
  6. 前記プロセッサは、
    前記カーネル内第1ウェイトがゼロである場合、前記入力フィーチャマップと前記第1ウェイトとの演算を省略する、
    ように構成されている、請求項1に記載のニューラルネットワーク装置。
  7. 前記プロセッサは、
    前記メモリから圧縮された入力フィーチャマップを、ストリームのように連続的に読み取り、前記カーネルのウェイトそれぞれと、前記圧縮された入力フィーチャマップとの演算を行う、
    ように構成されている、請求項1に記載のニューラルネットワーク装置。
  8. 前記プロセッサは、
    前記入力フィーチャマップの複数領域のうち互いに異なる領域と、前記カーネルとの演算を行い、部分出力フィーチャマップを生成する複数の演算ユニットと、
    前記部分出力フィーチャマップのうち、必要とする部分出力フィーチャマップを累算し、前記出力フィーチャマップの複数領域それぞれを生成する複数の出力ユニットと、を含む、
    ことを特徴とする請求項1に記載のニューラルネットワーク装置。
  9. 前記複数の演算ユニットそれぞれは、
    互いに独立して並列的に、前記カーネルと前記互いに異なる領域との演算を行うことを特徴とする請求項8に記載のニューラルネットワーク装置。
  10. 前記ニューラルネットワーク装置は、さらに、
    バス、を含み、
    前記複数の出力ユニットは、
    前記バスを介して、前記複数の演算ユニットから、必要とする出力フィーチャマップを受信する、
    ことを特徴とする請求項8に記載のニューラルネットワーク装置。
  11. 前記複数の演算ユニットそれぞれは、
    前記複数の領域における1領域と、複数のカーネルそれぞれとの演算を行い、部分出力フィーチャマップを生成する複数のプロセッシングユニットを含む、
    ことを特徴とする請求項8に記載のニューラルネットワーク装置。
  12. 前記複数のプロセッシングユニットは、
    前記1領域と第1カーネルとの演算を行う第1プロセッシングユニットと、
    前記1領域と第2カーネルとの演算を行う第2プロセッシングユニットと、を含み、
    前記第1プロセッシングユニットは、前記1領域と前記1カーネルとの演算を完了した後で、前記1領域と前記第2カーネルとの演算のうち一部を、前記第2プロセッシングユニットの代わりに遂行する、
    ことを特徴とする請求項11に記載のニューラルネットワーク装置。
  13. ニューラルネットワークのコンボルーション演算を処理する方法であって、
    カーネルのウェイトそれぞれと入力フィーチャマップとの演算を行い、出力値を生成する段階と、
    前記ウェイトの前記カーネル内位置を基に設定された出力フィーチャマップ内位置において、前記出力値を累算し、前記出力フィーチャマップを生成する段階と、
    を含む、方法。
  14. 前記出力値を生成する段階は、
    前記入力フィーチャマップと、前記カーネルの第1ウェイトとの演算を行い、第1出力値を生成する段階と、
    前記入力フィーチャマップと、前記カーネルの第2ウェイトとの演算を行い、第2出力値を生成する段階と、を含み、
    前記出力フィーチャマップを生成する段階は、
    前記第1ウェイトの前記カーネル内位置を基に設定された前記出力フィーチャマップ内第1位置において、前記第1出力値を累算する段階と、
    前記第2ウェイトの前記カーネル内位置を基に設定された前記出力フィーチャマップ内第2位置において、前記第2出力値を累算する段階と、
    を含む、ことを特徴とする請求項13に記載の方法。
  15. 前記出力値を生成する段階は、
    前記入力フィーチャマップの第1領域と、前記カーネルのウェイトそれぞれとの演算を行い、第1出力値を生成する段階と、
    前記第1領域とは異なる領域である前記入力フィーチャマップの第2領域と、前記カーネル内ウェイトそれぞれとの演算を行い、第2出力値を生成する段階と、を含み、
    前記出力フィーチャマップを生成する段階は、
    前記ウェイトの前記カーネル内位置を基に設定された第1部分出力フィーチャマップ内位置において、前記第1出力値を累算し、前記第1部分出力フィーチャマップを生成し、前記出力フィーチャマップ上において、前記第1部分出力フィーチャマップを累算する段階と、
    前記ウェイトの前記カーネル内位置を基に設定された第2部分出力フィーチャマップ内位置において、前記第2出力値を累算し、前記第2部分出力フィーチャマップを生成し、前記出力フィーチャマップ上において、前記第2部分出力フィーチャマップを累算する段階と、
    を含む、ことを特徴とする請求項13に記載の方法。
  16. 前記出力値を生成する段階は、
    前記カーネル内第1ウェイトがゼロである場合に、前記入力フィーチャマップと前記第1ウェイトとの演算を省略する、
    ことを特徴とする請求項13に記載の方法。
  17. 前記出力値を生成する段階は、
    圧縮された入力フィーチャマップを、ストリームのように連続的に読み取り、前記カーネルのウェイトそれぞれと、前記圧縮された入力フィーチャマップとの演算を行う段階、
    を含む、ことを特徴とする請求項13に記載の方法。
  18. 前記入力フィーチャマップの複数領域のうち互いに異なる領域と、前記カーネルとの演算を行い、部分出力フィーチャマップを生成する段階と、
    前記部分出力フィーチャマップのうち、必要とする部分出力フィーチャマップを累算し、前記出力フィーチャマップの複数領域それぞれを生成する段階と、
    を含む、ことを特徴とする請求項13に記載の方法。
  19. 前記部分出力フィーチャマップを生成する段階は、
    前記複数の領域における1領域と、複数のカーネルそれぞれとの演算を行い、部分出力フィーチャマップを生成する段階、
    を含む、ことを特徴とする請求項18に記載の方法。
  20. 記録媒体請求項
    請求項13ないし19のうちいずれか一項に記載の方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体。
JP2019232816A 2018-12-27 2019-12-24 ニューラルネットワークのコンボルーション演算を処理する方法及びその装置 Active JP7475855B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2018-0171132 2018-12-27
KR1020180171132A KR20200081044A (ko) 2018-12-27 2018-12-27 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치

Publications (2)

Publication Number Publication Date
JP2020107338A true JP2020107338A (ja) 2020-07-09
JP7475855B2 JP7475855B2 (ja) 2024-04-30

Family

ID=68887279

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019232816A Active JP7475855B2 (ja) 2018-12-27 2019-12-24 ニューラルネットワークのコンボルーション演算を処理する方法及びその装置

Country Status (5)

Country Link
US (2) US11769037B2 (ja)
EP (1) EP3674987A1 (ja)
JP (1) JP7475855B2 (ja)
KR (1) KR20200081044A (ja)
CN (1) CN111382859A (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102178932B1 (ko) * 2018-12-19 2020-11-18 고려대학교 산학협력단 출력 특징 맵의 0에 대한 연산을 스킵할 수 있는 합성곱 신경망의 연산 장치 및 그 동작 방법
KR20200081044A (ko) * 2018-12-27 2020-07-07 삼성전자주식회사 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
CN111814972B (zh) * 2020-07-08 2024-02-02 上海雪湖科技有限公司 一种基于fpga的神经网络卷积运算加速方法
CN111882050B (zh) * 2020-07-20 2024-02-06 复旦大学 基于fpga的用于提高bcpnn速度的设计方法
CN112200295B (zh) * 2020-07-31 2023-07-18 星宸科技股份有限公司 稀疏化卷积神经网络的排序方法、运算方法、装置及设备
KR20220090104A (ko) 2020-12-22 2022-06-29 삼성전자주식회사 컨벌루션 연산을 위한 데이터 전송 방법, 페처 및 컨벌루션 연산 장치
US11762946B1 (en) * 2022-09-23 2023-09-19 Recogni Inc. Systems for using shifter circuit and 3×3 convolver units to emulate functionality of larger sized convolver units

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160358069A1 (en) 2015-06-03 2016-12-08 Samsung Electronics Co., Ltd. Neural network suppression
US10460230B2 (en) 2015-06-04 2019-10-29 Samsung Electronics Co., Ltd. Reducing computations in a neural network
JP6993334B2 (ja) * 2015-11-29 2022-01-13 アーテリーズ インコーポレイテッド 自動化された心臓ボリュームセグメンテーション
US10242311B2 (en) 2016-08-11 2019-03-26 Vivante Corporation Zero coefficient skipping convolution neural network engine
KR102631381B1 (ko) 2016-11-07 2024-01-31 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
KR20180060149A (ko) 2016-11-28 2018-06-07 삼성전자주식회사 컨볼루션 처리 장치 및 방법
KR102642853B1 (ko) 2017-01-05 2024-03-05 한국전자통신연구원 컨볼루션 회로, 그것을 포함하는 어플리케이션 프로세서 및 그것의 동작 방법
KR102415508B1 (ko) 2017-03-28 2022-07-01 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
US10176551B2 (en) 2017-04-27 2019-01-08 Apple Inc. Configurable convolution engine for interleaved channel data
EP3401840A1 (en) * 2017-05-12 2018-11-14 Frobas GmbH Compressed data streams in object recognition
WO2018214913A1 (zh) * 2017-05-23 2018-11-29 上海寒武纪信息科技有限公司 处理方法及加速装置
US10572963B1 (en) * 2017-07-14 2020-02-25 Synapse Technology Corporation Detection of items
CN108228696B (zh) * 2017-08-31 2021-03-23 深圳市商汤科技有限公司 人脸图像检索方法和***、拍摄装置、计算机存储介质
US10628705B2 (en) * 2018-03-29 2020-04-21 Qualcomm Incorporated Combining convolution and deconvolution for object detection
US10853694B2 (en) * 2018-12-04 2020-12-01 Apical Ltd. Processing input data in a convolutional neural network
KR20200081044A (ko) * 2018-12-27 2020-07-07 삼성전자주식회사 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치

Also Published As

Publication number Publication date
EP3674987A1 (en) 2020-07-01
CN111382859A (zh) 2020-07-07
JP7475855B2 (ja) 2024-04-30
US20230394277A1 (en) 2023-12-07
KR20200081044A (ko) 2020-07-07
US11769037B2 (en) 2023-09-26
US20200210806A1 (en) 2020-07-02

Similar Documents

Publication Publication Date Title
JP7475855B2 (ja) ニューラルネットワークのコンボルーション演算を処理する方法及びその装置
US10909418B2 (en) Neural network method and apparatus
JP7132824B2 (ja) ニューラルネットワークにおいてデコンボルーション演算を実行する装置及びその方法
CN109871936B (zh) 用于处理神经网络中的卷积运算的方法和装置
JP6987860B2 (ja) ハードウェアにおけるカーネルストライドの実行
US11675507B2 (en) Method and apparatus for allocating memory space for driving neural network
EP3789892A1 (en) Method and apparatus for processing data
US11977928B2 (en) Apparatus and method for performing a recognition operation in a neural network
CN116541647A (zh) 运算加速器、处理方法及相关设备
KR102452951B1 (ko) 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
TW202123093A (zh) 實行卷積運算的系統及方法
EP3093757B1 (en) Multi-dimensional sliding window operation for a vector processor
CN111767986A (zh) 一种基于神经网络的运算方法及装置
KR20200049366A (ko) 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법
KR20200095300A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
CN112651485A (zh) 识别图像的方法和设备以及训练神经网络的方法和设备
CN111133457A (zh) 电子设备及其控制方法
US12014505B2 (en) Method and apparatus with convolution neural network processing using shared operand
CN114118348A (zh) 加速器、操作加速器的方法以及包括加速器的电子装置
US20240111828A1 (en) In memory computing processor and method thereof with direction-based processing
KR20210082970A (ko) 컨볼루션 연산을 수행하는 방법 및 장치
CN115861862A (zh) 识别图像的方法和设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221222

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231115

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240209

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240417

R150 Certificate of patent or registration of utility model

Ref document number: 7475855

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150