JP2017078934A - 畳み込みニューラルネットワークの演算方法及び演算プログラム、情報処理装置 - Google Patents

畳み込みニューラルネットワークの演算方法及び演算プログラム、情報処理装置 Download PDF

Info

Publication number
JP2017078934A
JP2017078934A JP2015206157A JP2015206157A JP2017078934A JP 2017078934 A JP2017078934 A JP 2017078934A JP 2015206157 A JP2015206157 A JP 2015206157A JP 2015206157 A JP2015206157 A JP 2015206157A JP 2017078934 A JP2017078934 A JP 2017078934A
Authority
JP
Japan
Prior art keywords
kernel
sum
calculated
calculation
input
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
JP2015206157A
Other languages
English (en)
Other versions
JP6750203B2 (ja
Inventor
明彦 笠置
Akihiko Kasaoki
明彦 笠置
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015206157A priority Critical patent/JP6750203B2/ja
Priority to US15/263,772 priority patent/US9600763B1/en
Publication of JP2017078934A publication Critical patent/JP2017078934A/ja
Application granted granted Critical
Publication of JP6750203B2 publication Critical patent/JP6750203B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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/08Learning methods

Abstract

【課題】平均プーリングが実行される畳み込みニューラルネットワークの演算量を削減する。【解決手段】畳み込み演算において使用されるカーネルの要素毎に、入力データに含まれる入力値の中から畳み込み演算において当該要素と掛け合わされる入力値を特定し、特定された当該入力値の総和を算出する第1算出部と、カーネルの要素毎に、当該要素について第1算出部により算出された総和と当該要素との積を算出し、算出された当該積の平均を算出する第2算出部とを有する。【選択図】図9

Description

本発明は、畳み込みニューラルネットワークに関する。
多層ニューラルネットワークは多層構造を有するニューラルネットワークであり、主に音声、画像或いは言語等に関する情報処理に利用されている。図1に、多層ニューラルネットワークの一例を示す。図1において、丸の図形はノードを表し、ノードを結ぶ線分はエッジを表し、同じ矩形に含まれるノードは同じ層に属する。多層ニューラルネットワークにおいては、下位の層から上位の層へ順に演算が行われる。例えば、図1において左に位置する層ほど階層が下である場合、左の層から右の層へ順に演算が行われる。多層ニューラルネットワークに対しては学習用の入力データが与えられ、入力データに対する演算の結果である出力データと教師データとの差分に基づきエッジの重みが更新される。
一般に画像処理の分野では、多層ニューラルネットワークの一種である畳み込みニューラルネットワークが利用される。図2に、畳み込みニューラルネットワークの一例を示す。畳み込みニューラルネットワークは、畳み込み層とプーリング層とを含む。畳み込み層においては、学習による最適化の対象であるカーネル(フィルタとも呼ばれる)によって入力画像に対して畳み込み演算が行われる。畳み込み層において検出された特徴は、プーリング層でのプーリングによって選別及び集約される。そのため、畳み込みニューラルネットワークにおいては畳み込み層及びプーリング層がセットとして取り扱われる。
例えば図3に示すように、N*Nの入力データuに対してk*kのカーネルwによって畳み込み演算を実行した場合、(N−k)*(N−k)の出力データzが得られる。ここで、出力データzにおける出力値zx,yは以下のように計算される。
Figure 2017078934
また、例えば図4に示すように、プーリング層においては畳み込み層から出力された出力データzの各領域(図4の例では4つの領域の各々)に対して演算が行われ、演算結果P_oが出力される。プーリングには最大プーリングと平均プーリングとが有り、前者は領域に含まれる値の最大値を特定する処理であり、後者は領域に含まれる値の平均を算出する処理である。
なお、多層ニューラルネットワークによる機械学習は、学習時間が非常に長く、学習時間を短縮するために並列分散処理に関する研究が盛んに行われている。学習時間の長期化は主に畳み込み演算の演算量の多さに起因しているため、畳み込み演算の演算量を削減すれば学習時間を大幅に短縮することができる。
特開2008−9893号公報
本発明の目的は、1つの側面では、平均プーリングが実行される畳み込みニューラルネットワークの演算量を削減するための技術を提供することである。
本発明に係る情報処理装置は、畳み込み演算において使用されるカーネルの要素毎に、入力データに含まれる入力値の中から畳み込み演算において当該要素と掛け合わされる入力値を特定し、特定された当該入力値の総和を算出する第1算出部と、カーネルの要素毎に、当該要素について第1算出部により算出された総和と当該要素との積を算出し、算出された当該積の平均を算出する第2算出部とを有する。
1つの側面では、平均プーリングが実行される畳み込みニューラルネットワークの演算量を削減できるようになる。
図1は、多層ニューラルネットワークの一例を示す図である。 図2は、畳み込みニューラルネットワークの一例を示す図である。 図3は、畳み込み層の処理の一例を示す図である。 図4は、プーリング層の処理の一例を示す図である。 図5は、畳み込み演算を説明するための図である。 図6は、平均プーリングを説明するための図である。 図7は、SATの生成処理を説明するための図である。 図8は、SATを用いて矩形領域内の入力値の総和を算出する方法を説明するための図である。 図9は、情報処理装置の機能ブロック図である。 図10は、メインの処理フローを示す図である。 図11は、生成処理の処理フローを示す図である。 図12は、カーネル要素と入力データとの関係を示す図である。 図13は、総和テーブル格納部に格納される総和テーブルの一例を示す図である。 図14は、本実施の形態の処理を実行するためのプログラムの一例を示す図である。 図15は、本実施の形態における計算の具体例を示す図である。 図16は、本実施の形態における計算の具体例を示す図である。 図17は、本実施の形態における計算の具体例を示す図である。 図18は、プーリング層の出力が複数要素である場合を説明するための図である。 図19は、プーリング層の出力が複数要素である場合を説明するための図である。 図20は、プーリング層の出力が複数要素である場合を説明するための図である。 図21は、プーリング層の出力が複数要素である場合を説明するための図である。 図22は、プーリング層の出力が複数要素である場合を説明するための図である。 図23は、プーリング層の出力が複数要素である場合を説明するための図である。 図24は、SGEMMを使用した畳み込み演算の一例を示す図である。 図25は、行列積の一例を示す図である。 図26は、コンピュータの機能ブロック図である。
まず、本実施の形態の概要を説明する。
通常、畳み込み演算においては、入力データに含まれる、カーネルサイズと同サイズの部分領域に対してカーネルが適用される。例えば図5においては、サイズが3*3である9つの部分領域に対してカーネルが適用され、出力z0乃至z8が計算される。計算式は上で述べたとおりである。そして、平均プーリングにおいては、畳み込み層の出力の平均を求める処理が実行される。例えば図6においては、畳み込み層の出力に含まれる値の総和を値の数(=9)で割ることによってプーリング層の出力Poutが算出される。
本実施の形態においては、プーリング層の出力Poutを別の方法によって算出することによって演算量を削減する。着眼点を以下で説明する。
図6に示した式において、z0乃至z8の総和が求められているが、この式の右辺は{A(e0+e1+・・・+e12)+B(e1+e2+・・・+e13)+C(e2+e3+・・・+e14)+D(e5+e6+・・・+e17)+E(e6+e7+・・・+e18)+F(e7+e8+・・・+e19)+G(e10+e11+・・・+e22)+H(e11+e12+・・・+e23)+I(e12+e13+・・・+e24)}/9と書き換えることができる。すなわち、各カーネル要素は入力データにおける矩形領域内の入力値の総和に掛け合わされている。例えば図5に示した入力データのうち、実線で囲まれた部分領域内の入力値に対してはカーネル要素「A」が掛け合わされており、一点鎖線で囲まれた部分領域内の入力値に対してはカーネル要素「B」が掛け合わされている。従って、各矩形領域内の入力値の総和を高速で算出できれば、プーリング層の出力を算出するまでの時間を大幅に短縮することができる。
そこで本実施の形態においては、矩形領域内の入力値の総和を、SAT(Summed Area Table)(積分画像とも呼ばれる)を利用することで算出する。SATの生成処理はよく知られた処理であるが、念のため図7を用いてSATの生成処理を説明する。例えば、入力データが図7に示すような行列データであるとする。この入力データからSATが生成される場合、まず列方向に累積和を求めることによって中間的なデータが生成される。そして、中間的なデータについて、行方向に累積和を求めることによってSATが生成される。SATの各要素は、その要素に対応する入力値、及び、その要素より左又は上に位置する要素に対応する入力値の総和を表す。例えば、「46」である要素は、4+6+9+4+2+5+7+5+4に相当する。
図8を用いて、SATを用いて矩形領域内の入力値の総和を算出する方法について説明する。例えば、入力データのうちハッチングが付された矩形領域内の入力値の総和を算出することを考える。この場合には、矩形領域内の右下の要素に対応するSATの要素から、矩形領域内の左下の要素に対応するSATの要素の左に隣接する要素と、矩形領域内の右上の要素に対応するSATの要素の上に隣接する要素とを差し引き、矩形領域内の左上の要素に対応するSATの要素の左上に隣接する要素を加えることで、矩形領域内の入力値の総和が算出される。
このように、本実施の形態によれば、畳み込み演算を矩形領域内の入力値の総和を求める問題に置き換え、総和をSATによって求めることで、平均プーリングの完了までに要する時間を短縮することができる。
以下では、本実施の形態の詳細を説明する。図9に、本実施の形態の情報処理装置1の機能ブロック図を示す。情報処理装置1は、入力データ格納部101と、SAT生成部102と、SAT格納部103と、総和テーブル生成部104と、カーネル格納部105と、総和テーブル格納部106と、算出部107と、プーリング出力データ格納部108と、処理部109と、更新部110とを含む。算出部107は、第1算出部1071と第2算出部1072とを含む。
SAT生成部102は、入力データ格納部101に格納されたデータに基づき処理を実行し、処理結果をSAT格納部103に格納する。総和テーブル生成部104は、入力データ格納部101に格納されたデータ、SAT格納部103に格納されたデータ及びカーネル格納部105に格納されたデータに基づき処理を実行し、処理結果を総和テーブル格納部106に格納する。算出部107における第1算出部1071及び第2算出部1072は、カーネル格納部105に格納されたデータ及び総和テーブル格納部106に格納されたデータに基づき処理を実行し、処理結果をプーリング出力データ格納部108に格納する。処理部109は、プーリング出力データ格納部108に格納されたデータに基づき処理を実行し、処理結果を更新部110に通知する。更新部110は、処理部109から受け取った処理結果に基づき、カーネル格納部105に格納されたカーネルを更新する。
次に、図10乃至図23を用いて、情報処理装置1の動作を説明する。本実施の形態においては、プーリング層の処理が平均プーリングであり且つ畳み込み層でのストライド(すなわち横方向の移動間隔)が1であるとする。また、説明を簡単にするため、ミニバッチサイズを1とし、カーネル数を1とし、プーリング層の出力が1要素であるとする。
まず、SAT生成部102は、入力データ格納部101に格納された入力データを読み出す(図10:ステップS1)。入力データは例えば画像データであり、複数の入力値(例えば画素値)を含む。但し、入力データが画像データ以外のデータであってもよい。
SAT生成部102は、ステップS1において読み出した入力データからSATを生成し(ステップS3)、SAT格納部103に格納する。
そして、総和テーブル生成部104は、生成処理を実行する(ステップS5)。生成処理については、図11乃至図13を用いて説明する。
総和テーブル生成部104は、カーネル格納部105に格納されたカーネルの要素(以下、カーネル要素と呼ぶ)のうち未処理のカーネル要素(以下、処理対象のカーネル要素と呼ぶ)を1つ特定する(図11:ステップS21)。
総和テーブル生成部104は、入力データ格納部101に格納された入力データから、処理対象のカーネル要素と掛け合わされる入力値を含む矩形領域(以下、処理対象の矩形領域と呼ぶ)を特定する(ステップS23)。
総和テーブル生成部104は、処理対象の矩形領域内の入力値の総和を、SATを用いて算出する(ステップS25)。矩形領域内の入力値の総和を算出する方法については、上で説明したとおりである。
総和テーブル生成部104は、ステップS25において算出された総和を、総和テーブル格納部106における総和テーブルに格納する(ステップS27)。総和は、掛け合わされるカーネル要素の位置に対応する位置に格納される。例えば図12に示すように、丸印のカーネル要素は矩形領域1101内の入力値の総和に掛け合わされ、星印のカーネル要素は入力データのうち矩形領域1102内の入力値の総和に掛け合わされる場合、丸印のカーネル要素について算出された総和は丸印のカーネル要素の位置に対応する位置に格納され、星印のカーネル要素について算出された総和は星印のカーネル要素の位置に対応する位置に格納される。なお、入力データのサイズをN*N、カーネルのサイズをk*kとすると、矩形領域のサイズは(N−k+1)*(N−k+1)である。
図13に、入力データが図5に示したデータである場合において総和テーブル格納部106に格納される総和テーブルの一例を示す。総和テーブルの各要素は、図5に示した入力データにおける矩形領域内の入力値の総和に相当する。
図11の説明に戻り、総和テーブル生成部104は、未処理のカーネル要素が有るか判定する(ステップS29)。未処理のカーネル要素が有る場合(ステップS29:Yesルート)、ステップS21の処理に戻る。一方、未処理のカーネル要素が無い場合(ステップS29:Noルート)、呼び出し元の処理に戻る。
図10の説明に戻り、算出部107における第1算出部1071は、カーネルのデータをカーネル格納部105から読み出し、また、総和テーブル格納部106に格納された総和テーブルを読み出す(ステップS7)。そして、第1算出部1071は、カーネル要素毎に、カーネル要素と対応する総和テーブルの要素との積を算出する(ステップS9)。例えば、図5に示したカーネル及び図13に示した総和テーブルについてステップS9の処理を実行すると、As0、Bs1、Cs2、Ds3、Es4、Fs5、Gs6、Hs7及びIs8が算出される。
第2算出部1072は、ステップS9において算出された積の平均を算出し(ステップS11)、算出された平均をプーリング出力データ格納部108に格納する。なお、ステップS1乃至S11の処理と同様の処理を実行するためのプログラムは、例えば図14に示すようなプログラムである。但し、このようなプログラムに限られるわけではない。
処理部109は、プーリング出力データ格納部108に格納されたデータを読み出し、読み出したデータに対して畳み込み層及びプーリング層の後の層(例えば、全結合層又はソフトマックス層など)の処理を実行し、畳み込みニューラルネットワークの出力データを生成する(ステップS13)。なお、畳み込み層及びプーリング層の後の層が無い場合には、ステップS13の処理はスキップされ、ステップS11において算出された平均が出力データである。ステップS13の処理は通常の畳み込みニューラルネットワークにおいても行われる処理であり、本実施の形態の主要な部分ではないので、詳細な説明を省略する。
処理部109は、ステップS13において生成された出力データと、予め用意された教師データとの誤差を算出し(ステップS15)、ステップS15において算出された誤差を更新部110に通知する。これに応じ、更新部110は、カーネル格納部105に格納されたカーネルを更新する(ステップS17)。そして処理は終了する。ステップS15及びS17の処理も通常の畳み込みニューラルネットワークにおいて行われる処理であり、本実施の形態の主要な部分ではないので、詳細な説明を省略する。
図15乃至図17に、本実施の形態における計算の具体例を示す。本具体例では、プーリング層の出力が1要素であるものとする。そして、図15に示すように、カーネルのサイズは2*2であり、入力データのサイズは5*5であるとする。この場合、入力データに含まれる入力値の累積和を列方向及び行方向に算出することによって、サイズが5*5であるSATが生成される。
そして、図16に示すように、サイズが4(=5−2+1)*4である矩形領域内の入力値の総和が、SATを用いて算出される。1行目における1列目のカーネル要素に対応する総和は66であり、1行目における2列目のカーネル要素に対応する総和は64であり、2行目における1列目のカーネル要素に対応する総和は56であり、2行目における2列目のカーネル要素に対応する総和は62である。SATの枠外の値は0であるとする。算出された総和は、総和テーブルに格納される。
そして、図17に示すように、ステップS9及びS11の畳み込み演算及び平均の算出によって、プーリング層の出力が生成される。
以上のように、本実施の形態によれば、SATを利用することで任意の矩形領域内の入力値の総和を定数時間で算出できるので、畳み込み演算の演算量を削減することができるようになる。また、通常の畳み込み演算においてはカーネルのサイズ及び数が大きくなった場合には演算量が多くなるが、本実施の形態の方法はカーネルのサイズに依存せず、畳み込み演算の演算量を安定的に削減することができる。さらに、通常の畳み込み演算においては、カーネルのサイズが異なる場合にはライブラリに投入される行列が変わるため、カーネルのサイズが異なる畳み込みニューラルネットワークは別の畳み込みニューラルネットワークであるとして取り扱われる。しかし、本実施の形態の方法であれば、カーネルのサイズが不均一であっても問題は無い。
ここまではプーリング層の出力が1要素である場合について説明をしたが、以下では、プーリング層の出力が複数要素である場合について説明をする。また、SATの使用方法を変更することを考える。
ここでは、図18に示すように、入力データのサイズが8*8であり、カーネルのサイズが3*3であるとする。また、プーリング層の出力が4(=2*2)要素であるとする。通常の畳み込み演算を実行する場合、カーネルが適用される36の部分領域が入力データから生成され、各部分領域とカーネルとによって畳み込み演算が実行される。畳み込み層の出力は、図19に示すように、36の要素を有する。そして、図20に示すように、畳み込み層の出力は4(=2*2)つの部分領域に分割され、各部分領域に含まれる要素の平均が算出される。結果として、プーリング層の出力は4要素である。なお、通常の畳み込み演算を実行するためのプログラムは、例えば図21に示すようなプログラムである。
ここで、畳み込み層の出力からSATを生成することを考える。例えば図22に示すように、畳み込み層の出力に対して列方向の累積和を計算し、さらに行方向の累積和を計算することでSATを生成する。このようにすれば、SATの要素t14を要素数9で割った値と、SATの要素t17を要素数9で割った値と、SATの要素t32を要素数9で割った値と、SATの要素t35を要素数9で割った値とがプーリング層の出力に該当する。しかし、この方法においてはSATが4つ生成されるので、通常の畳み込み演算よりも演算量が多くなってしまう。
従って、SATを生成するのであれば、本実施の形態のように入力データから生成することが効果的である。本実施の形態を適用する場合、図23に示すように、入力データから4つの矩形領域を生成し、各矩形領域について上で述べた処理を実行すればよい。本実施の形態によれば、入力データから生成したSATが1つあれば任意の矩形領域内の入力値の総和を求めることができる。また、入力データからSATを生成するのでSATはカーネルと無関係であり、カーネルが複数有ってもSATは1つ有ればよい。
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した情報処理装置1の機能ブロック構成は実際のプログラムモジュール構成に一致しない場合もある。
また、上で説明した各テーブルの構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
また、カーネルの形状は正方形には限られず、任意の矩形のカーネルに対して本実施の形態の処理を適用可能である。
また、畳み込み層の数は1つには限られない。複数の畳み込み層が連なった畳み込みネットワークであっても、1度生成したSATによって一度にプーリング層の出力を生成することができる。
[付録]
以下の付録においては、SGEMM(Single precision floating GEneral Matrix Multiply)を使用して畳み込み演算を実行する方法について説明を追加する。
図24に、SGEMMを使用した畳み込み演算の概要を示す。SGEMMにおいては、GPU(Graphics Processing Unit)による高速な行列積計算によって畳み込み演算を行うため、入力画像及びカーネルが行列計算ライブラリに投入可能な形式に変形される。図24に示したように、入力画像に対応する行列と、カーネルに対応する行列とが生成され、これらの行列の行列積が計算される。入力画像のサイズがN*Nであり、ミニバッチのサイズが1であり、カーネルのサイズがk*kであり、カーネル数がdであるとすると、図25に示すような行列積を計算することになる。この場合、乗算の演算量はdk2(N−k+1)2であり、加算の演算量もdk2(N−k+1)2である。これに加え、SGEMMを利用するために行列生成のパーミュテーション操作及び一般的なプーリング層での処理が行われるので、さらに演算量が多くなる。
一方、本実施の形態においては、(1)各列の累積和の計算、(2)各行の累積和の計算、(3)カーネル数*4の要素を取得する処理及び総和を算出する処理、(4)各カーネル要素への乗算、(5)カーネルごとに値の総和を求める処理、が実行される。この場合、乗算の演算量はdk2であり、加算の演算量は2N2+4dk2+k2−1である。次数が減っているので、演算量を大幅に削減することができている。
以上で付録を終了する。
なお、上で述べた情報処理装置1は、コンピュータ装置であって、図26に示すように、メモリ2501とCPU(Central Processing Unit)2503とハードディスク・ドライブ(HDD:Hard Disk Drive)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーション・プログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本発明の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態の第1の態様に係る情報処理装置は、(A)畳み込み演算において使用されるカーネルの要素毎に、入力データに含まれる入力値の中から畳み込み演算において当該要素と掛け合わされる入力値を特定し、特定された当該入力値の総和を算出する第1算出部と、(B)カーネルの要素毎に、当該要素について第1算出部により算出された総和と当該要素との積を算出し、算出された当該積の平均を算出する第2算出部とを有する。
これにより、畳み込み演算が矩形領域内の入力値の総和を求める問題に変換されるので、平均プーリングが実行される畳み込みニューラルネットワークの演算量を削減することができるようになる。
また、本情報処理装置は、(C)入力データからSAT(Summed Area Table)を生成する生成部をさらに有してもよい。そして、上で述べた第1算出部は、(a1)特定された入力値を含む矩形領域について、入力値の総和をSATを用いて算出してもよい。SATを利用すれば、任意の矩形領域内の入力値の総和を定数時間で算出できるので、畳み込み演算及び平均プーリングに要する時間を短縮できるようになる。
また、上で述べた第2算出部は、(b1)算出された積の総和をカーネルの要素数で除することで積の平均を算出してもよい。
本実施の形態の第2の態様に係る、畳み込みニューラルネットワークの演算方法は、(D)畳み込み演算において使用されるカーネルの要素毎に、入力データに含まれる入力値の中から畳み込み演算において当該要素と掛け合わされる入力値を特定し、特定された当該入力値の総和を算出し、(E)カーネルの要素毎に、当該要素について算出された総和と当該要素との積を算出し、算出された当該積の平均を算出する処理を含む。
なお、上記方法による処理をコンピュータに実行させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
畳み込み演算において使用されるカーネルの要素毎に、入力データに含まれる入力値の中から前記畳み込み演算において当該要素と掛け合わされる入力値を特定し、特定された当該入力値の総和を算出する第1算出部と、
前記カーネルの要素毎に、当該要素について前記第1算出部により算出された前記総和と当該要素との積を算出し、算出された当該積の平均を算出する第2算出部と、
を有する情報処理装置。
(付記2)
前記入力データからSAT(Summed Area Table)を生成する生成部
をさらに有し、
前記第1算出部は、
特定された前記入力値を含む矩形領域について、前記入力値の総和を前記SATを用いて算出する、
付記1記載の情報処理装置。
(付記3)
前記第2算出部は、
算出された前記積の総和を前記カーネルの要素数で除することで前記積の平均を算出する、
付記1又は2記載の情報処理装置。
(付記4)
コンピュータが、
畳み込み演算において使用されるカーネルの要素毎に、入力データに含まれる入力値の中から前記畳み込み演算において当該要素と掛け合わされる入力値を特定し、特定された当該入力値の総和を算出し、
前記カーネルの要素毎に、当該要素について算出された前記総和と当該要素との積を算出し、算出された当該積の平均を算出する、
処理を実行する、畳み込みニューラルネットワークの演算方法。
(付記5)
コンピュータに、
畳み込み演算において使用されるカーネルの要素毎に、入力データに含まれる入力値の中から前記畳み込み演算において当該要素と掛け合わされる入力値を特定し、特定された当該入力値の総和を算出し、
前記カーネルの要素毎に、当該要素について算出された前記総和と当該要素との積を算出し、算出された当該積の平均を算出する、
処理を実行させる、畳み込みニューラルネットワークの演算プログラム。
1 情報処理装置 101 入力データ格納部
102 SAT生成部 103 SAT格納部
104 総和テーブル生成部 105 カーネル格納部
106 総和テーブル格納部 107 算出部
1071 第1算出部 1072 第2算出部
108 プーリング出力データ格納部 109 処理部
110 更新部

Claims (4)

  1. 畳み込み演算において使用されるカーネルの要素毎に、入力データに含まれる入力値の中から前記畳み込み演算において当該要素と掛け合わされる入力値を特定し、特定された当該入力値の総和を算出する第1算出部と、
    前記カーネルの要素毎に、当該要素について前記第1算出部により算出された前記総和と当該要素との積を算出し、算出された当該積の平均を算出する第2算出部と、
    を有する情報処理装置。
  2. 前記入力データからSAT(Summed Area Table)を生成する生成部
    をさらに有し、
    前記第1算出部は、
    特定された前記入力値を含む矩形領域について、前記入力値の総和を前記SATを用いて算出する、
    請求項1記載の情報処理装置。
  3. コンピュータが、
    畳み込み演算において使用されるカーネルの要素毎に、入力データに含まれる入力値の中から前記畳み込み演算において当該要素と掛け合わされる入力値を特定し、特定された当該入力値の総和を算出し、
    前記カーネルの要素毎に、当該要素について算出された前記総和と当該要素との積を算出し、算出された当該積の平均を算出する、
    処理を実行する、畳み込みニューラルネットワークの演算方法。
  4. コンピュータに、
    畳み込み演算において使用されるカーネルの要素毎に、入力データに含まれる入力値の中から前記畳み込み演算において当該要素と掛け合わされる入力値を特定し、特定された当該入力値の総和を算出し、
    前記カーネルの要素毎に、当該要素について算出された前記総和と当該要素との積を算出し、算出された当該積の平均を算出する、
    処理を実行させる、畳み込みニューラルネットワークの演算プログラム。
JP2015206157A 2015-10-20 2015-10-20 畳み込みニューラルネットワークの演算方法及び演算プログラム、情報処理装置 Expired - Fee Related JP6750203B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015206157A JP6750203B2 (ja) 2015-10-20 2015-10-20 畳み込みニューラルネットワークの演算方法及び演算プログラム、情報処理装置
US15/263,772 US9600763B1 (en) 2015-10-20 2016-09-13 Information processing method, information processing device, and non-transitory recording medium for storing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015206157A JP6750203B2 (ja) 2015-10-20 2015-10-20 畳み込みニューラルネットワークの演算方法及び演算プログラム、情報処理装置

Publications (2)

Publication Number Publication Date
JP2017078934A true JP2017078934A (ja) 2017-04-27
JP6750203B2 JP6750203B2 (ja) 2020-09-02

Family

ID=58337128

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015206157A Expired - Fee Related JP6750203B2 (ja) 2015-10-20 2015-10-20 畳み込みニューラルネットワークの演算方法及び演算プログラム、情報処理装置

Country Status (2)

Country Link
US (1) US9600763B1 (ja)
JP (1) JP6750203B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019008951A1 (ja) * 2017-07-06 2019-01-10 株式会社デンソー 畳み込みニューラルネットワーク
WO2019107900A1 (ko) * 2017-11-28 2019-06-06 주식회사 날비컴퍼니 컨볼루션 신경망 내 필터 프루닝 장치 및 방법
CN111798520A (zh) * 2020-09-08 2020-10-20 平安国际智慧城市科技股份有限公司 基于卷积神经网络的图像处理方法、装置、设备及介质
US11144614B2 (en) 2018-05-17 2021-10-12 Toshiba Memory Corporation Processing device of a neural network to process image data
US11580193B2 (en) 2017-06-22 2023-02-14 Nec Corporation Computation device, computation method, and program
US11594238B2 (en) 2019-03-15 2023-02-28 Honda Motor Co., Ltd. Acoustic signal processing device, acoustic signal processing method, and program for determining a steering coefficient which depends on angle between sound source and microphone
US11960565B2 (en) 2018-03-02 2024-04-16 Nec Corporation Add-mulitply-add convolution computation for a convolutional neural network

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6778010B2 (ja) * 2016-04-13 2020-10-28 キヤノン株式会社 画像識別システム、画像識別方法
US9959498B1 (en) * 2016-10-27 2018-05-01 Google Llc Neural network instruction set architecture
US10037490B2 (en) * 2016-12-13 2018-07-31 Google Llc Performing average pooling in hardware
US10032110B2 (en) * 2016-12-13 2018-07-24 Google Llc Performing average pooling in hardware
KR102442055B1 (ko) * 2017-09-26 2022-09-13 삼성전자주식회사 전자 장치 및 그 제어 방법
KR102452953B1 (ko) 2017-10-30 2022-10-11 삼성전자주식회사 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
CN108805270B (zh) 2018-05-08 2021-02-12 华中科技大学 一种基于存储器的卷积神经网络系统
GB2582352B (en) 2019-03-20 2021-12-15 Imagination Tech Ltd Methods and systems for implementing a convolution transpose layer of a neural network

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001175852A (ja) * 1999-06-30 2001-06-29 Lg Electronics Inc 畳み込み処理方法及び装置
JP2006109490A (ja) * 2004-10-08 2006-04-20 Samsung Electronics Co Ltd 映像のダイナミックレンジの圧縮装置及び映像のダイナミックレンジの圧縮方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4757116B2 (ja) 2006-06-30 2011-08-24 キヤノン株式会社 パラメータ学習方法及びその装置、パターン識別方法及びその装置、プログラム
US10839006B2 (en) * 2015-05-18 2020-11-17 Oath Inc. Mobile visual search using deep variant coding
US10489703B2 (en) * 2015-05-20 2019-11-26 Nec Corporation Memory efficiency for convolutional neural networks operating on graphics processing units
US10460230B2 (en) * 2015-06-04 2019-10-29 Samsung Electronics Co., Ltd. Reducing computations in a neural network
US11423311B2 (en) * 2015-06-04 2022-08-23 Samsung Electronics Co., Ltd. Automatic tuning of artificial neural networks
WO2016197303A1 (en) * 2015-06-08 2016-12-15 Microsoft Technology Licensing, Llc. Image semantic segmentation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001175852A (ja) * 1999-06-30 2001-06-29 Lg Electronics Inc 畳み込み処理方法及び装置
JP2006109490A (ja) * 2004-10-08 2006-04-20 Samsung Electronics Co Ltd 映像のダイナミックレンジの圧縮装置及び映像のダイナミックレンジの圧縮方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
岡谷 貴之: "「Deep Learning(深層学習)」〔第4回〕", 人工知能学会誌, vol. 第28巻,第6号, JPN6019009562, 1 November 2013 (2013-11-01), JP, pages 962 - 974 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11580193B2 (en) 2017-06-22 2023-02-14 Nec Corporation Computation device, computation method, and program
WO2019008951A1 (ja) * 2017-07-06 2019-01-10 株式会社デンソー 畳み込みニューラルネットワーク
WO2019107900A1 (ko) * 2017-11-28 2019-06-06 주식회사 날비컴퍼니 컨볼루션 신경망 내 필터 프루닝 장치 및 방법
US11960565B2 (en) 2018-03-02 2024-04-16 Nec Corporation Add-mulitply-add convolution computation for a convolutional neural network
US11144614B2 (en) 2018-05-17 2021-10-12 Toshiba Memory Corporation Processing device of a neural network to process image data
US11594238B2 (en) 2019-03-15 2023-02-28 Honda Motor Co., Ltd. Acoustic signal processing device, acoustic signal processing method, and program for determining a steering coefficient which depends on angle between sound source and microphone
CN111798520A (zh) * 2020-09-08 2020-10-20 平安国际智慧城市科技股份有限公司 基于卷积神经网络的图像处理方法、装置、设备及介质

Also Published As

Publication number Publication date
JP6750203B2 (ja) 2020-09-02
US9600763B1 (en) 2017-03-21

Similar Documents

Publication Publication Date Title
JP6750203B2 (ja) 畳み込みニューラルネットワークの演算方法及び演算プログラム、情報処理装置
US20190065958A1 (en) Apparatus and Methods for Training in Fully Connected Layers of Convolutional Networks
JP6900487B2 (ja) ハードウェアにおける平均プーリングの実行
US10643129B2 (en) Apparatus and methods for training in convolutional neural networks
KR101959376B1 (ko) 멀티 코어 최적화된 순환 신경망을 위한 시스템 및 방법
US10642613B2 (en) Arithmetic processing device for deep learning and control method of the arithmetic processing device for deep learning
US10642622B2 (en) Arithmetic processing device and control method of the arithmetic processing device
JP2019082996A (ja) 畳み込みニューラルネットワークにおいて演算を実行する方法および装置並びに非一時的な記憶媒体
JP6958027B2 (ja) 演算処理装置及び演算処理装置の制御方法
US20170206450A1 (en) Method and apparatus for machine learning
JP2018124867A (ja) 演算処理装置及び演算処理装置の制御方法
JP2020531949A (ja) ブロックチェーン内のデータベース・ハッシュコードの遅延更新
JP2018022339A (ja) 演算処理装置及び演算処理装置の制御方法
JP7004938B2 (ja) 最適化装置および最適化装置の制御方法
KR102574449B1 (ko) 데이터 처리 방법 및 장치
WO2018235357A1 (ja) 演算装置、演算方法及びプログラム
US10496764B2 (en) Integrated circuit buffering solutions considering sink delays
CN109272112B (zh) 一种面向神经网络的数据重用指令映射方法、系统及装置
JP6503902B2 (ja) 並列計算機システム、並列計算方法及びプログラム
CN107977923B (zh) 图像处理方法、装置、电子设备及计算机可读存储介质
US11573765B2 (en) Fused convolution and batch normalization for neural networks
US10929177B2 (en) Managing resources for multiple trial distributed processing tasks
JP2806262B2 (ja) マルチプロセッサシステムのプロセス割当方法
US11630667B2 (en) Dedicated vector sub-processor system
JP2018109870A (ja) 情報処理装置、情報処理方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180608

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190326

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190521

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191209

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200727

R150 Certificate of patent or registration of utility model

Ref document number: 6750203

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees