【解決手段】この方法は、連続した層を選択するステップS301と、最後の層の出力特徴データにおけるサブデータブロックの予期される数、ならびにレイアウト位置、幅および高さを判定するステップS305と、それぞれの現在の層について、現在の層向けの入力特徴データの各サブデータブロックのレイアウト位置、幅、および高さを判定するステップS310と、最初の層向けの入力特徴データの複数の層における最初の層向けの入力特徴データの各サブデータブロックの実際の位置を判定するステップS315と、各サブデータブロックの実際の位置、幅および高さに従って、最初の層向けの入力特徴データのサブデータブロックの予期される数を取得するステップS320とを含む。
前記最後の層の前記出力特徴データの幅および高さが、前記最後の層の前記出力特徴データのすべてのサブデータブロックを、各サブデータブロックのレイアウト位置に従って、互いにオーバーラップさせることなく互いに接合することによって取得されるデータの幅および高さと等しいものである、請求項1に記載の方法。
前記現在の層向けの前記入力特徴データの各サブデータブロックの幅および高さが、前記現在の層向けの前記関連するパラメータのカーネルの幅および高さと、前記関連するパラメータの前記カーネルの幅および高さにおけるストライドと、前記現在の層において、前記サブデータブロックに、幅および高さのうち1つまたは複数にパディングするための1つまたは複数のパディング量とにさらに依拠するものである、請求項1に記載の方法。
前記最初の層向けの前記入力特徴データの各サブデータブロックの前記幅および前記高さ、ならびに前記最初の層向けの前記入力特徴データの前記レイアウト位置、前記幅および前記高さに従って、前記最初の層向けの前記入力特徴データの隣接したサブデータブロックの間のオーバーラップする部分のオーバーラップする幅およびオーバーラップする高さを判定するステップをさらに含む、請求項1に記載の方法。
前記要素的加算演算を遂行するとき、前記前の層の前記出力特徴データにおける前記繰り返し計算されるデータの前記位置、幅および高さに従って、前記前の層の前記出力特徴データにおける前記要素的加算演算に使用される実際のデータ範囲を判定するステップをさらに含む、請求項10に記載の方法。
1つまたは複数のメモリおよび1つまたは複数のプロセッサを備える装置によって実行されたとき、請求項1から11のいずれか一項に記載の方法を実施するように構成されたコンピュータプログラム。
1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、請求項1から11のいずれか一項に記載の方法を遂行させる命令が記憶されているコンピュータ可読媒体。
【発明を実施するための形態】
【0010】
畳み込みニューラルネットワークは多層構造である。畳み込みニューラルネットワークの各層において、層の入力特徴データについて、層に関するパラメータ(たとえば畳み込みパラメータなど)は、層に関する動作(たとえば畳み込み演算など)を遂行するために使用され、取得された出力特徴データは、さらなる処理のために、次の層に対して次の層向けの入力特徴データとして供給され、あるいは、層が、既に畳み込みニューラルネットワークの最後の層であれば、取得された出力特徴データは、畳み込みニューラルネットワークに関する最終的な処理結果として出力される。たとえば、残留畳み込みニューラルネットワークの場合には、特定の層の出力特徴データに対して遂行される動作はまた、この層の出力特徴データに対する要素的加算動作を遂行するステップと、この層に先立って追加の1つまたは複数の層の出力特徴データに対する要素的加算動作を遂行するステップとを含み得る。
【0011】
特徴データは、特定の幅および高さを有するデータブロックと見なされ得る特徴マップとしても知られている。たとえば、特徴データまたは特徴マップが画像の場合には、画像の画素値を含む列の数および行の数は、それぞれ特徴データまたは特徴マップの幅および高さと見なされ得る。
【0012】
上記で説明されたように、CPU、GPU、または専用のアクセラレータおよび同種のものなどのハードウェアを使用することにより、畳み込みニューラルネットワークの動作を効率的に遂行することが期待され得る。それゆえに、データアクセス速度は動作効率に影響を及ぼす批判的でない要因である。この目的のために、データの少なくとも一部分(特徴データおよび関連するパラメータを含む)をキャッシュに格納するために、キャッシュまたはオンチップメモリなどの高速メモリがプロセッサ用に用意されてよい。加えて、プロセッサに関連した高速メモリを効率的に利用するために、畳み込みニューラルネットワークにおいて動作中のデータ搬送を低減するために、畳み込みニューラルネットワークにおける複数の連続した層に対する動作は、たとえば融合モードで遂行され得る。
【0013】
しかしながら、コストなどの制約のために、高速メモリの容量は通常制限されている。たとえば、畳み込みニューラルネットワークに与えられる入力特徴データの量が大きい場合には、高速メモリがデータを完全にバッファすることができず、結果として大きなデータ量の搬送が生じることがあり、畳み込みニューラルネットワークにおける動作の実行効率に悪影響がある。
【0014】
したがって、本開示の一実施形態による技術的解決策では、畳み込みニューラルネットワークにおける指定された層(たとえば畳み込みニューラルネットワークの入力層または中間の層)の入力特徴データが、複数のサブデータに「分配される」。次いで、元の特徴データの代わりに取得されたサブデータが使用され得て、取得されたサブデータの各々が、それぞれ入力特徴データとして指定の層に供給され得る。
【0015】
たとえば、それぞれのサブデータ入力について、必要に応じて十分な数のサブデータを得、かつ/またはそれぞれのサブデータのサイズを十分に小さくすれば、上記で指定された層から始まる連続した層からの各層の動作に包含されるデータが高速メモリの中に完全にバッファされ得、または指定された層から始まる連続した層における動作でさえ、高速メモリのみを使用し得る。
【0016】
上記の「分配」は、少なくとも、畳み込みニューラルネットワークから最終出力の結果が変更されないことを保証するべきである。言い換えれば、取得されたサブデータの各々が、それぞれ上記の指定された層に入力として供給される場合には、連続した層における動作から取得された複数の出力サブデータを組み合わせる(たとえば「接合する」かまたは「一部重ねる」)ことによって取得される結果は、元の入力特徴データを、「分配する」前に、指定された層に直接供給して、連続した層における動作を遂行することによって取得される出力特徴データと同一であるべきである。
【0017】
したがって、一般に、本開示の一実施形態による技術的解決策は、動作中のデータ搬送の回数を減少するかまたは動作の並列性を改善するなど、動作効率を改善するように、畳み込みニューラルネットワークにおける連続した層から、最後の層における出力特徴データに関して予期される分配モードまたは分割モードに基づいて、連続した層から、最初の層向けの入力特徴データの分配モードを判定する方法に関するものである。
【0018】
本明細書では、便宜上、特徴データの複数のサブデータまたはサブデータブロックを取得することを指すとき「分配する」または「分割する」という用語が使用され、「分配する」は、いくつかのサブデータブロックの間にオーバーラップする部分(複数可)があり得ることを意味し、「分割する」は、いかなる2つのサブデータブロック間にもオーバーラップする部分がないことを意味する。しかしながら、「分配する」のか「分割する」のかということに関係なく、それぞれの取得されたサブデータブロックは、元の特徴データの特定の領域におけるデータに相当し、各サブデータブロックはいかなる他のサブデータブロックとも同一ではない。元の特徴データは、たとえばサブデータブロックのすべてを「接合する」(すなわち、組合せ中にサブデータブロックの間にオーバーラップはない)かまたは「一部重ねる」(すなわち、組合せ中にサブデータブロックの間でオーバーラップがあり得る)ことによって取得され得る。
【0019】
図1は、本開示の一実施形態による、特徴データを3つのサブデータブロックに分配する例示的分配モードを説明するものであり、特徴データ100は3つのサブデータブロック101、102、および103に分配され、サブデータブロック101とサブデータブロック102は(
図1の陰になった部分に示されるように)オーバーラップする部分すなわちオーバーラップするデータを有する。
図2は、本開示の一実施形態による、特徴データを3つのサブデータブロックに分割する例示的分割モードを説明するものであり、特徴データ200は3つのサブデータブロック201、202、および203に分割され、いかなる2つのサブデータブロックの間にもオーバーラップする部分すなわちオーバーラップするデータはない。
【0020】
特徴データ100または200は、
図1および
図2に示された例から異なる分配モードまたは分割モードで3つのサブデータブロックに分配されてよく、または分割されてよいことを理解されたい。その上、
図1および
図2は、特徴データ100または200が3つのサブデータブロックに分配されるかまたは分割されることを図示するが、サブデータブロックまたは予期されるサブデータブロックの数は、1よりも大きい任意の他の数でもよい。
【0021】
図1および
図2に示されるように、分配または分割の後に取得された各サブデータブロックも、元の特徴データと同様に、幅および高さならびにレイアウト位置および実際の位置などの属性を有し得る。
【0022】
サブデータブロックのレイアウト位置は、サブデータブロックの他のサブデータブロックに対する位置を表し得る。言い換えれば、すべてのサブデータブロックをそれぞれのレイアウト位置に従って配置し、次いで、オーバーラップさせずに互いを接合するか、またはその相対的なレイアウト位置を変わらず保つことにより互いに一部重ねてオーバーラップさせると、分配または分割の前の元の特徴データが取得され得る。
【0023】
一例では、サブデータブロックのレイアウト位置を表すために行および列が使用され得る。たとえば、
図1の例では、サブデータブロック101のレイアウト位置は第1の行および第1の列でよく、サブデータブロック102のレイアウト位置は第1の行および第2の列でよく、サブデータブロック103は第2の行でよい。
【0024】
別の例では、特定のサブデータブロックが基準ブロックとして使用されてよく、次いで、サブデータブロックのレイアウト位置を表すためにサブデータブロック間の相対位置が使用される。たとえば、
図1の例では、サブデータブロック102のレイアウト位置が基準位置として設定されると、サブデータブロック101のレイアウト位置はサブデータブロック102の左側にあり得、サブデータブロック103のレイアウト位置はサブデータブロック102の下側にあり得、サブデータブロック103のレイアウト位置が基準位置として設定されると、サブデータブロック101のレイアウト位置は、サブデータブロック103の上の左側または上の行の第1の列にあり得、サブデータブロック102のレイアウト位置は、サブデータブロック103の上の右側または上の行の第2の列にあり得る。
【0025】
他の例では、各サブデータブロックの相対位置が番号付けされるかまたは他の形式で一意的にマークを付けられてよく、それぞれのサブデータのレイアウト位置が、対応する番号またはマークを用いて識別され得る。
【0026】
さらに別の例では、データブロックのレイアウト位置を表すためにサブデータブロックにおける特定のデータポイントの位置が選択されてよい。たとえば、
図1の例では、各サブデータブロック101、102および103の左上コーナーP101、P102、およびP103におけるデータポイントの位置が、それぞれ各サブデータブロック101、102、および103のレイアウト位置を表すように選択されてよい。
【0027】
サブデータブロックのレイアウト位置またはサブデータブロックの間の相対的な位置関係を判定して表すための機構は上記の例に限定されず、本開示の実施形態による技術的解決策は、サブデータブロックのレイアウト位置またはサブデータブロックの間の相対的な位置関係を判定して表すように選択された機構に限定されないことを理解されたい。
【0028】
サブデータブロックの実際の位置は、元の特徴データにおけるサブデータブロックの位置または対応する領域を表し得る。言い換えれば、サブデータまたはサブデータブロックの実際の位置は、サブデータが実際に対応する元の特徴データのブロックを表し得る。
【0029】
一例では、サブデータブロックの特定のポイントにおけるデータの元の特徴データにおける位置が、サブデータの実際の位置として使用されてよい。たとえば、
図1の例では、元の特徴データ100におけるサブデータブロック101、102、および103の左上コーナーP101、P102、およびP103におけるデータの位置P101'、P102'、およびP103'が、それぞれサブデータブロック101、102、および103の実際の位置として使用されてよい。
【0030】
他の例では、元の特徴データの位置に対応する、1つのサブデータブロックにおける基準ポイント(たとえば左上コーナーにおけるポイント、中心ポイントなど)の位置を、原点として使用することも可能であり、他のサブデータブロックにおける基準ポイントと原点の間のオフセットが、他のサブデータブロックの実際の位置を判定したり表したりするのに使用される。
【0031】
サブデータブロックの実際の位置またはサブデータブロックが対応する元の特徴データのポイントを判定したり表したりするための機構は上記の例に限定されず、本開示の実施形態による技術的解決策もまた、サブデータブロックの実際の位置またはサブデータブロックが対応する元の特徴データの部分を判定したり表したりするための機構に限定されないことを理解されたい。
【0032】
図3は、本開示の一実施形態による、畳み込みニューラルネットワークにおいて特徴データを適合させるための例示的方法300の流れ図を示す。
【0033】
図3に示されるように、例示的方法300は、
畳み込みニューラルネットワークにおける複数の連続した層を選択するステップS301と、
選択された層の最後の層の出力特徴データにおけるサブデータブロックの予期される数、ならびに各サブデータブロックのレイアウト位置、幅および高さを判定するステップS305と、
複数の層における最初の層向けの入力特徴データの各サブデータブロックのレイアウト位置、幅、および高さが判定されるまで、最後の層から始めて選択された層におけるそれぞれの現在の層について、入力特徴データの各サブデータブロックのレイアウト位置、幅および高さを判定するステップS310と、
最初の層向けの入力特徴データにおいて、選択された層における最初の層向けの入力特徴データの各サブデータブロックの実際の位置を判定するステップS315と、
最初の層向けの入力特徴データの各サブデータブロックの実際の位置、幅および高さに従って、最初の層の入力特徴データのサブデータブロックの予期される数を取得するステップS320とを含み得る。
【0034】
例示的方法300におけるステップの詳細を以下で説明する。
【0035】
例示的方法300のステップS301では、畳み込みニューラルネットワークにおける1つの層が、入力特徴データを分配する目標の層として最初に選択されてよく、次いで、この層から始めて、またはこの層を最初の層として使用して、他の1つまたは複数の層が、畳み込みニューラルネットワークにおいて連続的に選択される。
【0036】
「連続した選択」は、畳み込みニューラルネットワークにおけるデータストリームが、選択された連続した層を、畳み込みニューラルネットワークのフィードフォワード方向へ、順次に、かつ連続的に通過することを意味する。したがって、選択された最初の層を除くそれぞれの選択された層が、先行する層からの出力特徴データを入力特徴データとして受け取り、他方では、選択された最後の層を除くそれぞれの選択された層が、その層の動作によって取得された出力特徴データを、次の層に対する入力特徴データとして供給する。
【0037】
最初の層向けの入力特徴データは、畳み込みニューラルネットワークの全体における選択された最初の層の位置に依拠して、畳み込みニューラルネットワークにおける先行する層からの出力特徴データでよく、または全体の畳み込みニューラルネットワークに対して供給された初期の入力特徴データでよい。同様に、最後の層からの出力特徴データは、全体の畳み込みニューラルネットワークにおける選択された最後の層の位置に依拠して、畳み込みニューラルネットワークにおける次の層に供給されてよく、または全体の畳み込みニューラルネットワークからの最終的な出力結果として使用されてよい。
【0038】
畳み込みニューラルネットワークのフィードフォワードプロセスは、特徴データの大きな部分から始めてよい。したがって、一実施形態では、ステップS301において、全体の畳み込みニューラルネットワークに対する入力層が最初の層として選択されてよい。他の実施形態では、畳み込みニューラルネットワークの中間の層が最初の層として選択されてよい。
【0039】
一般に、畳み込みニューラルネットワークの層数、各層に対して遂行される動作、およびその関連するパラメータを先決することを含む特定のアプリケーション要件に従って、適切な畳み込みニューラルネットワークがあらかじめ設計されてよい。したがって、畳み込みニューラルネットワークに供給されるあらゆる所与の入力特徴データについては、入力特徴データの幅および高さならびに出力特徴データの幅および高さが、畳み込みニューラルネットワークにおける各層については、この層に包含される動作の数に必要な記憶空間の量などが、実際の畳み込みニューラルネットワークにおける動作を遂行する前に判定され得、またはあらかじめ知られ得る。
【0040】
一実施形態では、ステップS301において、選択された最初の層から始まる一定の数の連続した層が、畳み込みニューラルネットワークのフィードフォワード方向において選択されてよく、その数は、設計者によって、畳み込みニューラルネットワークの設計中に、経験もしくは統計データおよび/またはハードウェアパラメータに従ってあらかじめ計算された値でよく、またはランダムな値でもよい。
【0041】
別の実施形態では、ステップS301において、各層向けの入力特徴データのサイズと関連するパラメータのサイズとの合計、あるいはその層向けの入力特徴データおよび関連するパラメータを記憶するのに必要な記憶空間の量が、選択された最初の層から始めて畳み込みニューラルネットワークのフィードフォワード方向へ順次に計算されてよく、対応する計算結果が事前設定の閾値以下である層が、連続した層における最後の層として選択されてよい。
【0042】
たとえば、選択された連続した層において、上記の計算結果が閾値以下になるのは最後の層のみということもある。たとえば、連続または不連続の、最後の層を含むいくつかの層があってよく、各層について上記の計算結果が閾値以下である。上記の閾値は、たとえば、畳み込みニューラルネットワークにおける動作に包含されているデータをキャッシュに格納するのに使用されるキャッシュの容量に基づいて先決され得る。たとえば、閾値は、キャッシュの容量の1/4、1/3、2/3、3/4などに設定されてよく、またはキャッシュの容量以上に設定されてもよい。
【0043】
別の実施形態では、たとえば特定のアプリケーション要件のために、対応する畳み込みニューラルネットワークを設計した後、畳み込みニューラルネットワークに供給される可能性がある特徴データの最大のサイズが、畳み込みニューラルネットワークのアーキテクチャ、アプリケーションの状況または統計データ、畳み込みニューラルネットワークにおける動作に関するハードウェア構成、設計者の経験などに従ってあらかじめ予測され得る。たとえば、画像認識のアプリケーションでは、アプリケーションの状況、画像認識に期待される精度、およびカメラ、画像プロセッサ、表示器などのハードウェア構成からの制約に基づいて、畳み込みニューラルネットワークに供給され得る特徴データ(たとえば画像認識される元の入力画像)の可能な最大のサイズを判定することができ、また、可能な最大のサイズの特徴データが使用される場合には、畳み込みニューラルネットワークの各層における動作を包含するデータの量を判定することができる。
【0044】
たとえば、そのような予測結果に基づいて畳み込みニューラルネットワークのアーキテクチャおよびアプリケーションの状況を判定するときには、複数の連続した層が判定され得る。そのようなプロセスでは、たとえば上記の閾値が考えられてよい。たとえば、判定された層の間で、最後の層を含む1つまたは複数の層における各層の可能な入力特徴データの可能な最大のサイズ、およびこの層の動作に関連したパラメータは、上記の事前設定の閾値以下でよい。次いで、例示的方法300のステップS301においてそのような層が選択される。
【0045】
さらなる実施形態では、ステップS301において、上記で説明されたように、予測結果に基づいて複数の連続した層が判定されてよい。
【0046】
別の実施形態では、複数の連続した層は、当初はステップS301における予測結果に基づいて選択されてよく、次いで、最初に選択された連続した層を調節する(たとえば拡張するかまたは縮小する)ために、最後の層の動作に包含されるデータの実際のサイズが、畳み込みニューラルネットワークに供給される実際の入力特徴データに基づいて判定されてよい。
【0047】
例示的方法300は、ステップS301において畳み込みニューラルネットワークにおける連続した層を選択した後にステップS305へ進み、選択された層の最後の層の出力特徴データのサブデータブロックの予期される数と、各サブデータブロックの予期されるレイアウト位置、幅、および高さとを判定する。
【0048】
一実施形態では、ステップS305において、ステップS301で選択された層からの各層の入力特徴データのサイズに従って、最後の層の出力特徴データが分配されるかまたは分割されると予期されるブロックの数が判定されてよい。
【0049】
たとえば、最後の層の出力特徴データのサブデータブロックの予期される数は、
E>(max
1≦i≦N{F
i+P
i})/R
という条件を満たすように判定されてよく、この式で、Eは予期される数であり、maxは最大値を返す関数であり、NはステップS301において選択された層の数であり、F
iは選択された層におけるi番目の層の入力特徴データのサイズであり、P
iは関連するパラメータのサイズであって、Rは基準値である。たとえば、基準値Rは、高速メモリの容量の1/4、1/3、2/3、3/4など、高速メモリの容量以上、または高速メモリの容量の数倍程度の値に設定されてよい。
【0050】
最後の層の出力特徴データのサブデータブロックの予期される数は、すべての層または選択された部分について、入力特徴データのサイズと関連するパラメータのサイズとの合計を基準値Rで割ることによって取得された結果に基づいて判定されてもよい。たとえば、予期される数は取得された結果以上になり得る。
【0051】
加えて、予期される数を判定する際、各層向けの入力特徴データのサイズのみを考慮に入れてもよい。たとえば、層に関連するパラメータが入力特徴データと比較して非常に小さい場合、および/または関連するパラメータ用に、高速メモリに十分な記憶空間が確保されている場合には、最後の層の出力特徴データのサブデータブロックの予期される数は、選択された最初の層向けの入力特徴データのサイズを基準値Rで割ることにより、またはすべての層もしくは選択された部分について、入力特徴データのサイズと関連するパラメータのサイズとの合計を基準値Rで割ることにより取得された結果に基づいて判定されてよい。たとえば、予期される数は取得された結果以上になり得る。
【0052】
最後の層の出力特徴データのサブデータブロックの予期される数を判定した後、最後の層向けの出力特徴データのサブデータブロックの予期される数の各サブデータブロックのレイアウト位置、幅、および高さを判定するように、最後の層の出力特徴データに対して、「想定された」分配または分割が任意の適切な分配または分割のやり方で遂行される。
【0053】
図4は、本開示の一実施形態による、最後の層向けの出力特徴データのサブデータブロックのレイアウト位置、幅、および高さを判定する一例を説明するものである。
図4の左側部分は、ステップS301において、畳み込みニューラルネットワークにおける3つの連続した層L0〜L2を選択するステップを示す。
図4の右側部分は、
図4の左側部分における3つの連続した層に関するデータの流れを示し、特徴データFD0は層L0に対する入力特徴データであり、特徴データFD1は、層L0からの出力特徴データであって層L1に対する入力特徴データであり、FD2は、層L1からの出力特徴データであって層L2に対する入力特徴データであり、FD3は層L2からの出力特徴データであり、FD2およびFD3に対して要素的加算演算を遂行する必要がある。その上、
図4の例における各特徴データについて、実線のフレームは各特徴データの実際のデータ部分を表しており、破線のフレームと実線のフレームの間の部分は、各特徴データに対する可能なパディングを表すものである。
【0054】
ステップS301において選択された複数の層は、
図4に示された例に限定されることなく他の層数を含み得、要素的加算演算を実行されなくてよく、または、追加の複数の出力特徴データの間もしくは選択された層からの出力特徴データの組の間の追加の要素的加算演算を実行されてもよいことを理解されたい。
【0055】
図4では破線のフレームは全体の特徴データを囲むように示されているが、これは、対応する層に対する動作において特徴データの周囲をパディングする必要があることを意味するわけではなく、しかしながら、特徴データの左側、右側、上側、および下側のうち任意の1つまたは複数が、必要に応じてパディングされてよく、またはパディングされなくてもよいことも理解されたい。パディングが特徴データの左側、右側、上側、および下側のうち1つの方向に遂行されない場合、その方向におけるパディングの量(すなわちパディングされる行または列の数)は0として記録されてよく、言い換えれば、その方向に遂行されるパディングの量は0である。
【0056】
図4の例では、特徴データFD3について予期されるサブデータブロックの数は、ステップS305において4と判定され、FD3は、2つの水平方向の直線および2つの垂直方向の直線によって3つの行および3つの列に便宜的に分割され、4つの予期されるサブデータブロックのレイアウト位置は、それぞれ0〜3に記録されると想定されている。したがって、各サブデータブロックの幅および高さは、それぞれ特徴データFD3の幅および高さと、想定された分割のやり方とに従って判定されてよく、W
0=W
2、W
1=W
3、W
0+W
1=W
FD3、H
0=H
1、H
2=H
3、H
0+H
2=H
FD3であり、W
0〜W
3はFD3のレイアウト位置0〜4におけるサブデータブロックの幅を表し、W
FD3はFD3の幅を表し、H
0〜H
3はFD3のレイアウト位置0〜3におけるサブデータブロックの高さを表し、H
FD3はFD3の高さを表す。
【0057】
図4に示された、FD3を4つのサブデータブロックに分割するやり方は一例でしかないことを理解されたい。任意の他の分配するやり方または分割するやり方が選択されてよく、それに応じて各サブデータブロックのレイアウト位置、幅および高さが判定されてよい。たとえば、FD3について予期される分割のやり方は、FD3を水平に4つのサブデータブロックに分割してよく、各サブデータブロックの高さは同一でも異なってもよい。たとえば、FD3について予期される分割のやり方は、最初にFD3を水平に2つの部分に分割してよく、次いで1つの部分が1つのサブデータブロックにされ、他の部分が3つのサブデータブロックに垂直に分割される。たとえば、FD3について予期される分配のやり方は、FD3を垂直に4つのサブデータブロックに分割してよく、各サブデータブロックの幅は同一でも異なってもよい。たとえば、FD3について予期される分配のやり方は、最初にFD3が水平に2つの部分に分割されてよく、次いで1つの部分が1つのサブデータブロックにされ、他の部分が3つのサブデータブロックに垂直に分配される。
【0058】
他の実施形態では、最後の層向けの出力特徴データからの各サブデータブロックの予期されるレイアウト位置、幅および高さも最初に判定されてよく、次いで、すべてのサブデータの数が、サブデータブロックの予期される数としてカウントされる。
【0059】
たとえば閾値が設定されてよく、次いで最後の層からの出力特徴データに対して、「仮想の」分割によって取得される各サブデータブロックのサイズが設定された閾値以下になるように、「仮想の」分割が遂行され得る。たとえば、最後の層の出力特徴データは、2つの部分に「仮に」分割されてよく、次いで、サイズが閾値よりも大きい部分は、すべての取得されたサブデータブロックのサイズが設定された閾値以下になるまで連続的に分割される。たとえば、1つのサブデータブロックがまた、サブデータブロックのサイズが設定された閾値以下になるように、最後の層における出力特徴データから「仮に」分割されてよく、残りの部分のサイズが依然として閾値よりも大きければ、他のサブデータは、残りの部分から、新規のサブデータブロックのサイズが設定された閾値以下になるように連続的に分割され、次いで、すべてのサブデータの数が、サブデータブロックの予期された数としてカウントされる。
【0060】
この実施形態では、たとえば基準値R未満のサイズを有する特定の特徴データが、選択された層の最初の層に供給されると想定されてよく、複数の層における動作の後に出力される出力特徴データのサイズSが判定され、次いで、Sはこの実施形態における閾値として使用され得る。たとえば、基準値Rは、高速メモリの容量の1/4、1/3、2/3、3/4などに設定されてよく、または基準値Rは、高速メモリの容量以上に設定されてよく、基準値Rは、高速メモリの容量の数倍程度に設定されてもよい。他の例では、基準値Rはa*M-P
maxに設定されてもよく、Mは高速メモリの容量であり、aは0よりも大きい係数であり、P
maxは、選択された層における関連するパラメータの最大のサイズを有する層の関連するパラメータのサイズである。
【0061】
方法300は、ステップS305において選択された層およびレイアウト位置における最後の層向けの出力特徴データからのサブデータブロックの予期される数、各サブデータブロックのレイアウト位置、幅および高さが判定された後に、ステップS310へ進み、それぞれの選択された層の出力特徴データからの各サブデータブロックのレイアウト位置、幅および高さに従って、その層向けの入力特徴データから各サブデータブロックのレイアウト位置、幅および高さをそれぞれ判定する。
【0062】
一実施形態では、たとえば、各層向けの入力特徴データからの各サブデータブロックの幅および高さは、ステップS305で判定された最後の層向けの出力特徴データからの各サブデータブロックのレイアウト位置、幅および高さに基づいて、最初の層向けの入力特徴データからサブデータブロックの各サブデータブロックのレイアウト位置、幅および高さが取得されるまで、最後の層から層ごとに逆に導出されてよい。
【0063】
便宜のために、選択されたN個の層の最初の層は0番目の層と記録され、最後の層は(N-1)番目の層と記録される。設計された畳み込みニューラルネットワークについて、各層において使用される関連するパラメータのカーネルの幅および高さと、各層における関連するパラメータのカーネルの幅方向のストライドおよび高さ方向のストライドと、データの各層のパディングのやり方(右側、左側、上側、および下側のパディング量を含む)とが知られ得る。そこで、それぞれのi(0≦i<N)番目の層において、レイアウト位置j(0≦j<Eであり、Eはサブデータブロックの予期される数である)におけるこの層向けの入力特徴データFD
in[i](たとえば
図4のFD1はFD
in[0]に対応する)からのサブデータブロックS
in[i, j]の幅WS
in[i, j]および高さHS
in[i, j]は、それぞれ以下の式によって判定され得、
WS
in[i, j]=(WS
out[i, j]-1)*W
S[i]+W
K[i]-P
R[i]-P
L[i] (式1)
HS
in[i, j]=(HS
out[i, j]-1)*H
S[i]+H
K[i]-P
U[i]-P
D[i] (式2)
上記の式で、WS
out[i, j]およびHS
out[i, j]は、それぞれレイアウト位置jにおけるi番目の層の出力特徴データFD
out[i]のサブデータブロックの幅および高さを表すものであり、W
S[i]およびH
S[i]は、それぞれi番目の層における動作について関連するパラメータのカーネルの幅方向のストライドおよび高さ方向のストライドを表すものであり、W
K[i]およびH
K[i]は、それぞれi番目の層における動作について関連するパラメータのカーネル(たとえば畳み込み演算用の畳み込みカーネルまたはプーリング演算用のプーリングカーネル)の幅および高さを表すものであり、P
R[i]、P
L[i]、P
U[i]、およびP
D[i]は、それぞれi番目の層における動作中の、サブデータブロックS
in[i, j]の右側、左側、上側、および下側に対するパディング量を表すものである。
【0064】
P
R[i]、P
L[i]、P
U[i]、およびP
D[i]に関して、入力特徴データFD
in[i]においてサブデータブロックS
in[i, j]の特定の境界がある場合、境界がある側のサブデータブロックS
in[i, j]向けのパディング量は0であり、サブデータブロックS
in[i, j]の特定の境界が、入力特徴データFD
in[i]の特定の境界または特定の境界の一部分に対応する場合、この境界がある側のサブデータブロックS
in[i, j]向けのパディング量は、この境界がある側の入力特徴データFD
in[i]向けのパディング量である。
【0065】
畳み込みニューラルネットワークにおける複数の連続した層について、ある層向けの入力特徴データの特定のサブデータの幅および高さの計算は、本質的に、先行する層の出力特徴データの同一のレイアウト位置を有するサブデータの幅および高さの計算に対応する。たとえば、
図4の例では、L1およびL2は2つの連続した層を表し、FD2はFD
in[2](すなわち層L2の入力特徴データ)とFD
out[1](すなわち層L1の出力特徴データ)の両方を表し、そのため、S
in[2, 0]とS
out[1, 0]の両方がFD2の左上コーナーにおけるサブデータブロックに対応し、WS
in[2, 0]=WS
out[1, 0]かつHS
in[2, 0]=HS
out[1, 0]である。
【0066】
たとえば、
図4における層L0〜L2の関連するパラメータのカーネル設定は次のTable 1(表1)にそれぞれ示されていると想定される。
【0068】
したがって、畳み込みニューラルネットワークの設計によれば、幅20および高さ20の層L0からの入力特徴データFD0については、Table 2(表2)のことが明らかである。
【0070】
その上、特徴データFD3が
図4に示されるように4つのサブデータブロックS
out[2, 0]、S
out[2, 1]、S
out[2, 2]、およびS
out[2, 3]に分割され、各サブブロックの幅および高さがそれぞれ2および2であると想定すれば、層L0からの入力特徴データFD0の各サブデータブロックの幅は、次のTable 3(表3)に示されるように、前述の式1および式2を使用して、各サブデータブロックレイアウト位置、幅、および高さに基づいてFD3から逆に導出され得る。
【0072】
これから見て、幅20および高さ20を有するFD0について、
図4の例では、FD3が幅2および高さ2を有する4つのサブデータブロックに分割されると予期される場合には、FD0は16×16、19×16、16×19および19×19の4つのサブデータブロックに分割される必要がある。
【0073】
上記で説明されたように、ステップS310によって、最初の層向けの入力特徴データからの各サブデータブロックのレイアウト位置、幅、および高さが最後に取得されてよい。次いで、例示的方法300はステップS315へ進み、この最初の層の入力特徴データにおける最初の層向けの入力特徴データから、各サブデータブロックの実際の位置を判定する。
【0074】
一実施形態では、最初の層向けの入力特徴データからの各サブデータブロックの間のオーバーラップする部分の幅および高さが判定されてよく、次いで、この最初の層向けの入力特徴データにおける各サブデータブロックの実際の位置が、オーバーラップする部分の高さおよび幅と、各サブデータブロックの幅および高さと、最初の層向けの入力特徴データの高さおよび幅とに基づいて判定されてよい。
【0075】
一実施形態では、最初の層の各サブデータブロックは、最初の層向けの各サブデータブロックのレイアウト位置に従って、1つまたは複数の行および1つまたは複数の列を含むサブデータブロックアレイを構成することができる形式であると見なすことができ、各行が同数のサブデータブロックを包含し、各行のサブデータブロックの高さが同一であり、各列が同数のサブデータブロックを包含し、各列のサブデータブロックの幅が同一である。次いで、幅方向にオーバーラップする部分の幅WO、および任意の2つの隣接したサブデータブロック間の高さ方向にオーバーラップする部分の高さHOが以下の式に基づいて計算され得、
【0078】
この式で、Eはサブデータブロックの予期される数であり、WS
in[0, i]およびHS
in[0, i]は、それぞれ最初の層向けの入力特徴データFD
in[0]からのi番目のサブデータブロックの幅および高さを表し、WFD
in[0]およびHFD
in[0]は、それぞれ最初の層向けの入力特徴データFD
in[0]の幅および高さを表し、RおよびCは、それぞれFD
in[0]のすべてのサブデータブロックS
in[0, i](0≦i<E)によって構成されたサブデータブロックアレイの行の数および列の数を表す。
【0079】
図5は、
図4の例において、FD0から各サブデータブロックの実際の位置を判定する一例を説明するものである。
図5に示されるように、FD0からの各サブデータブロックの間にオーバーラップする部分が存在する。上記の式3および式4によれば、
図5の例におけるS
in[0, 0]とS
in[0, 1]の間のオーバーラップする部分の幅はWO=((16+19+16+19)/2-20)/(2-1)=15と判定され得、S
in[0, 0]とS
in[0, 2]の間のオーバーラップする部分の高さはHO=((16+16+19+19)/2-20)/(2-1)=15と判定され得る。
【0080】
その上、上記の式3は、次の式5のように、たった1つの行(たとえば
図5の例におけるS
in[0, 0]およびS
in[0, 1]といった、たとえばサブデータブロックアレイにおける0番目の行)に基づいてオーバーラップする部分の幅を計算するように単純化されてよく、上記の式4は、次の式6のように、たった1つの列(たとえば
図5の例におけるS
in[0, 0]およびS
in[0, 2]といった、たとえばサブデータブロックアレイにおける0番目の列)に基づいてオーバーラップする部分の高さを計算するように単純化されてよく、
【0083】
これらの式で、WS
in_0[j]は、最初の層向けの入力特徴データFD
in[0]の0番目の行およびj番目の列からのサブデータブロックの幅を表し、HS
in_0[j]は、最初の層向けの入力特徴データFD
in[0]の0番目の列の0番目の行からのサブデータブロックの高さを表す。
【0084】
上記の式5および式6によれば、
図5の例におけるS
in[0, 0]とS
in[0, 1]の間のオーバーラップする部分の幅はWO=(16+19-20)/(2-1)=15と判定され得、S
in[0, 0]とS
in[0, 2]の間のオーバーラップする部分の高さはHO=(16+19-20)/(2-1)=15と判定され得る。
【0085】
別の実施形態では、オーバーラップする部分の幅および高さ、または他の隣接したサブデータブロックとオーバーラップする各層の各サブデータブロックにおけるオーバーラップするデータは、最後の層から層ごとに逆に計算されてよく、最初の層向けの入力特徴データからの各サブデータブロックに含まれるそれぞれのオーバーラップする部分の幅および高さが、最後に導出される。
【0086】
たとえば、FD
in[i]のレイアウト位置j(0≦j<Eであり、Eはサブデータブロックの予期される数である)におけるi番目の層向けのFD
in[i]からのサブデータブロックS
in[i, j]の特定の境界(たとえば左側境界、右側境界、上側境界、または下側境界)に関して、S
in[i, j]は、境界がある側のオーバーラップする部分またはオーバーラップするデータを包含すると判定され得る。
【0087】
サブデータブロックS
in[i, j]の左側がFD
in[i]にある場合には、サブデータブロックS
in[i, j]の左側に包含されたオーバーラップする部分またはオーバーラップするデータの幅および高さは、以下の式7および式8に基づいて判定され得る。
WLO
in[i, j]=WLO
out[i, j]*W
S[i]+(W
K[i]-W
S[i]) (式7)
HLO
in[i, j]=HS
in[i, j] (式8)
【0088】
同様に、サブデータブロックS
in[i, j]の右側がFD
in[i]にある場合には、サブデータブロックS
in[i, j]の右側に包含されたオーバーラップする部分またはオーバーラップするデータの幅および高さは、以下の式9および式10に基づいて判定され得る。
WRO
in[i, j]=WRO
out[i, j]*W
S[i]+(W
K[i]-W
S[i]) (式9)
HRO
in[i, j]=HS
in[i, j] (式10)
【0089】
同様に、サブデータブロックS
in[i, j]の上側がFD
in[i]にある場合には、サブデータブロックS
in[i, j]の上側に包含されたオーバーラップする部分またはオーバーラップするデータの幅および高さは、以下の式11および式12に基づいて判定され得る。
WUO
in[i, j]=WS
in[i, j] (式11)
HUO
in[i, j]=HUO
out[i, j]*H
S[i]+(H
K[i]-H
S[i]) (式12)
【0090】
同様に、サブデータブロックS
in[i, j]の下側がFD
in[i]にある場合には、サブデータブロックS
in[i, j]の下側に包含されたオーバーラップする部分またはオーバーラップするデータの幅および高さは、以下の式13および式14に基づいて判定され得る。
WDO
in[i, j]=WS
in[i, j] (式13)
HDO
in[i, j]=HDO
out[i, j]*H
S[i]+(H
K[i]-H
S[i]) (式14)
【0091】
上記の式7〜式14において、WLO
in[i, j]、WRO
in[i, j]、WUO
in[i, j]、WDO
in[i, j]、およびHLO
in[i, j]、HRO
in[i, j]、HUO
in[i, j]、HDO
in[i, j]は、それぞれレイアウト位置jにおけるi番目の層向けの入力特徴データFD
in[i]からのサブデータブロックS
in[i, j]に含まれるオーバーラップする部分またはオーバーラップするデータの、左側、右側、上側、および下側の幅および高さを表し、W
S[i]およびH
S[i]は、それぞれi番目の層における動作の幅方向のストライドおよび高さ方向のストライドを表し、W
K[i]およびH
K[i]は、それぞれi番目の層における動作の関連するパラメータのカーネルを表す。
【0092】
したがって、最初の層向けの入力特徴データからのサブデータブロックの各々に含まれたオーバーラップする部分またはオーバーラップするデータの幅および高さが導出され得る。
【0093】
たとえば、
図4および
図5に示された例におけるS
in[0, 0]の右側および下側はFD0にあり、それによって、S
in[0, 0]の右側および下側がオーバーラップする部分を含むと判定され得る。たとえば、S
in[0, 0]の右側に含まれるオーバーラップする部分の幅は、式9により、次のTable 4(表4)に示されるように計算され得る。
【0095】
一実施形態では、(たとえば上記のステップS310で)各層向けの入力特徴データから各サブデータブロックのレイアウト位置、幅および高さを判定している間に、各層向けの各サブデータブロックにおける、他の隣接したサブデータブロックと恐らくオーバーラップしている、オーバーラップする部分またはオーバーラップするデータの幅および高さが、上記の式7〜式14を使用することによって層ごとに計算され得、次いで、ステップS315において、先のステップで計算された最初の層向けの入力特徴データからの各サブデータブロックにおけるそれぞれのオーバーラップする部分の幅および高さが直接使用される。
【0096】
最初の層向けの入力特徴データからの任意の2つの隣接したサブデータブロックの間のオーバーラップする部分のオーバーラップする幅およびオーバーラップする高さ、または各サブデータブロックに含まれたオーバーラップする部分のオーバーラップする幅およびオーバーラップする高さを取得した後に、最初の層向けの入力特徴データにおける各サブデータブロックの実際の位置が、各サブデータブロックのレイアウト位置、幅および高さ、ならびにサブデータブロックの間のオーバーラップする部分のオーバーラップする幅およびオーバーラップする高さに基づいて判定され得る。
【0097】
たとえば、最初の層向けの入力特徴データからの任意のサブデータブロックについて、そのレイアウト位置によって、サブデータブロックの左側または上側には他のサブデータブロックがないと判定され得る場合には、このサブデータブロックの実際の位置は最初の層向けの入力特徴データの左上コーナーにあると判定されてよく、サブデータブロックの左側に1つまたは複数のサブデータブロックが存在すると判定された場合には、サブデータブロックの実際の位置は、サブデータブロックの左側の各データブロックの幅とオーバーラップする幅とに依拠し、サブデータブロックの上側に1つまたは複数のサブデータブロックが存在すると判定された場合には、サブデータブロックの実際の位置は、サブデータブロックの上側の各データブロックの高さとオーバーラップする高さとに依拠する。
【0098】
一実施形態では、上記で説明されたように、このサブデータの実際の位置は、サブデータブロックの最も左上コーナーにおけるポイントのデータに対応する、最初の層向けの入力特徴データの位置によって表され得る。たとえば、
図5の例を参照して、各サブデータブロックにおける特徴データおよび各データが1つのデータポイントと見なされると想定され、最初の層向けの入力特徴データ(たとえば
図4のFD0)における最も左上コーナーにおける小さいボックスの位置が原点として設定され、その上、原点に対応する座標を表すのに(0,0)が使用される。それゆえに、最初の層向けの入力特徴データからの各サブデータブロックの実際の位置は、以下のように判定されてよく、
x[0]=0、y[0]=0、
【0102】
これらの式で、(x[k]、y[k])は、最初の層向けの入力特徴データのレイアウト位置kにおけるサブデータブロックS[k]の実際の位置の座標を表し、0≦k<Eであって、Eは最初の層向けの入力特徴データからのサブデータブロックの予期される数であり、Mはレイアウト位置がS[k]の左側にあるサブデータブロックの数を表し、Nはレイアウト位置がサブデータブロックS[k]の上側にあるサブデータブロックの数を表し、WS[i]はサブデータブロックS[k]の左側にあるi番目のサブデータブロックの幅を表し、WRO[i]はi番目のサブデータブロックの右側に含まれるオーバーラップするデータの幅を表し、HS[i]はサブデータブロックS[k]の上側にあるi番目のサブデータブロックの高さを表し、HUO[i]はi番目のサブデータブロックの上側に含まれるオーバーラップするデータの高さを表す。
【0103】
たとえば
図5の例では、サブデータブロックS
in[0, 3]について、サブデータブロックS
in[0, 3]の左側に1つのサブデータブロックS
in[0, 2]が存在し、サブデータブロックS
in[0, 3]の上側にサブデータブロックS
in[0, 1]が存在すると判定され得、次いで、サブデータブロックS
in[0, 3]の座標(x[3], y[3])が、x[3]=16-15=1およびy[3]=16-15=1と判定され得る。
【0104】
他の実施形態では、最初の層向けの各サブデータブロックが、1つまたは複数の行および1つまたは複数の列を含むサブデータブロックアレイを構成することができる形式(たとえばマトリクス)であると考えられ得る場合、上記の式11および式12によって計算された結果に基づいて、最初の層向けの入力特徴データからの各サブデータブロックの実際の位置が、以下のやり方で判定され得る。
x[0]=0、y[0]=0、
【0108】
方法300は、最初の層向けの入力特徴データからの各サブデータブロックの実際の位置を判定した後にステップS320へ進んで、最初の層向けの入力特徴データからのサブデータブロックの予期される数を取得し、言い換えれば、最初の層向けの入力特徴データは、予期される数のサブデータブロックに分配される。いくつかの実施形態では、取得された各サブデータブロックは、最初の層の畳み込み動作のためにキャッシュに記憶されてよい。
【0109】
たとえば、
図5の例では、FD1からのサブデータブロックS
in[0, 0]、S
in[0, 1]、S
in[0, 2]、およびS
in[0, 3]について、少なくとも下のTable 5(表5)に示されるデータが、ステップS320に先立つステップによって取得され得る。
【0111】
それゆえに、FD0が実際に4つの(予期された数の)サブデータブロックに分配され得るように、サブデータブロックの幅、高さおよび実際の位置に基づいて、FD0のどの領域またはデータが各サブデータブロックに対応するかが判定され得る。
【0112】
上記の説明では、例示的方法300を説明するために、一般的な形状属性を有する畳み込みニューラルネットワークが一例として使用されていることが認識されよう。たとえば、
図1、
図2、
図4、および
図5の例では、各特徴データ、関連するパラメータのカーネル、および各サブデータブロックは、幅および高さの属性を有し得るような一般的な矩形形状である。しかしながら、例示的方法300は、不規則な畳み込みニューラルネットワーク(すなわち、特徴データおよび/または関連するパラメータのカーネルが矩形以外の他の形状である)に対して同様に適用され得ることを理解されたい。たとえば、不規則な特徴データおよび/またはパラメータカーネルは、補間またはパディングによって一般的な形式に変換され得、次いで、方法300は、特徴データを分配するように適用される。
【0113】
図6に示されるように、例示的方法300は、最初の層向けの入力特徴データを複数のサブデータブロックに分配するステップの後に、
最初の層からの各サブデータブロックについて、ステップS301で選択された複数の層における動作をそれぞれ遂行して、対応する出力サブデータブロックを取得するステップS325と、
取得された出力サブデータブロックのすべてを互いに組み合わせて、最後の層の実際の出力特徴データを取得するステップS330とをさらに含み得る。
【0114】
一実施形態では、最初の層向けの入力特徴データからの各サブデータブロックについて、ステップS325は順次に実施されてよく、たとえば最初の層向けの入力特徴データからのすべてのサブデータブロックが、1つのプロセスまたはスレッドで順次に処理される。
【0115】
別の実施形態では、最初の層向けの入力特徴データからの各サブデータブロックについて、ステップS325は並行するやり方で実施されてよく、たとえば複数のプロセスまたはスレッドが使用され得て、最初の層向けの入力特徴データからの1つのサブデータブロックが、それぞれのプロセスまたはスレッドで処理されてよい。
【0116】
その上、
図4に示されるように、選択された層における動作では、選択された層における2つの層からの出力特徴データについて、(たとえば残留畳み込みニューラルネットワークの場合には)要素的加算演算が存在し得る。それゆえに、ステップS325は、2つの層(たとえば
図4の例における層L1および層L2)の出力特徴データに対して要素的加算演算を遂行するステップをさらに含み得る。
【0117】
要素的加算演算を正確に実行するために、2つの層の各々の出力特徴データからの各サブデータブロックにおける要素的加算演算に関する実際のデータ範囲を判定する必要がある。各サブデータブロックの繰り返し計算されるデータの位置、幅および高さが、各層向けの出力特徴データからのそれぞれのサブデータブロックごとに判定され得る。次いで、各サブデータブロックから繰り返し計算されるデータを除去した後に取得される部分が、各サブデータブロックの実際のデータ範囲として使用され得る。
【0118】
出力特徴データに対して要素的加算演算を遂行される2つの層は、必ずしも2つの連続した層ではないことに留意されたい。その上、2つの層のうち後の層は、選択された層のうち最後の層でよく、または2つの層うち前の層のような選択された層における中間層でもよい。
【0119】
一実施形態では、選択された層の最後の層の出力特徴データの各サブデータブロックの繰り返し計算されるデータは、当初は0に設定されてよく、次いで、各層向けの入力特徴データの各サブデータブロックの繰り返し計算されるデータの位置、幅および高さが、選択された層の最後の層から始めて層ごとに逆に導出される。
【0120】
レイアウト位置j(0≦j<Eであり、Eはサブデータブロックの予期される数である)におけるi番目の層向けの入力特徴データFD
in[i]からのサブデータブロックS
in[i, j]の左側の境界がFD
in[i]にある場合には、S
in[i, j]は、繰り返し計算されるデータRLD
in[i, j, 0]を左側に含み、RLD
in[i, j, 0]の高さはHS
in[i, j]であってRLD
in[i, j, 0]の幅は|W
K[i]/2|であると判定され得、W
K[i]はi番目の層における動作に使用される関連するパラメータのカーネルの幅を表し、HS
in[i, j]はS
in[i, j]の高さを表し、||は丸め動作を表す。
【0121】
レイアウト位置j(0≦j<Eであり、Eはサブデータブロックの予期される数である)におけるi番目の層向けの入力特徴データFD
out[i]からのサブデータブロックS
out[i, j]の左側に、繰り返し計算されるk+1個(k≧0)のデータRLD
out[i, j, k]が含まれている場合には、サブデータブロックS
in[i, j]の左側には、RLD
in[i, j, 0]に加えて、繰り返し計算される高さHS
in[i, j]の別のk+1個のデータRLD
in[i, j, k+1]も含まれており、RLD
in[i, j, k+1]の幅は、RLD
out[i, j, k]の幅とW
S[i]の積に等しく、W
S[i]は、i番目の層における動作について関連するパラメータのカーネルの幅方向のストライドを表す。
【0122】
レイアウト位置j(0≦j<Eであり、Eはサブデータブロックの予期される数である)におけるi番目の層向けの入力特徴データFD
in[i]からのサブデータブロックS
in[i, j]の右側の境界がFD
in[i]にある場合には、S
in[i, j]は、繰り返し計算されるデータRRD
in[i, j, 0]を右側に含み、RRD
in[i, j, 0]の高さはHS
in[i, j]であってRRD
in[i, j, 0]の幅は|W
K[i]/2|であると判定され得る。
【0123】
S
out[i, j]の右側にk+1個(k≧0)の繰り返し計算されるデータRRD
out[i, j, k]が含まれている場合、RRD
in[i, j, 0]に加えて、繰り返し計算される別のk+1個の高さHS
in[i, j]のデータRRD
in[i, j, k+1]もサブデータブロックS
in[i, j]の右側に含まれ、RRD
in[i, j, k+1]の幅は、RRD
out[i, j, k]の幅とW
S[i]の積に等しい。
【0124】
同様に、サブデータブロックS
in[i, j]の上側の境界がFD
in[i]にある場合、S
in[i, j]は繰り返し計算されるデータRUD
in[i, j, 0]を上側に含み、RUD
in[i, j, 0]の幅はWS
in[i, j]であり、RUD
in[i, j, 0]の高さは|H
K[i]/2|であると判定され得、H
K[i]はi番目の層における動作に使用される関連するパラメータのカーネルの高さを表し、WS
in[i, j]はS
in[i, j]の幅を表す。
【0125】
サブデータブロックS
out[i, j]の上側にk+1個(k≧0)の繰り返し計算されるデータRUD
out[i, j, k]が含まれている場合、RUD
in[i, j, 0]に加えて、繰り返し計算される別のk+1個の幅WS
in[i, j]のデータRUD
in[i, j, k+1]もサブデータブロックS
in[i, j]の上側に含まれ、RUD
in[i, j, k+1]の高さは、RUD
out[i, j, k]の高さとH
S[i]の積に等しく、H
S[i]は、i番目の層における動作について関連するパラメータのカーネルの高さ方向のストライドを表すものである。
【0126】
同様に、サブデータブロックS
in[i, j]の下側の境界がFD
in[i]にある場合には、S
in[i, j]の下側には繰り返し計算されるデータRDD
in[i, j, 0]が含まれ、RDD
in[i, j, 0]の幅はWS
in[i, j]であり、RDD
in[i, j, 0]の高さは|H
K[i]/2|であると判定され得る。
【0127】
サブデータブロックS
out[i, j]の下側にk+1個(k≧0)の繰り返し計算されるデータRDD
out[i, j, k]が含まれている場合、RDD
in[i, j, 0]に加えて、繰り返し計算される別のk+1個の幅WS
in[i, j]のデータRDD
in[i, j, k+1]もサブデータブロックS
in[i, j]の下側に含まれ、RDD
in[i, j, k+1]の高さは、RDD
out[i, j, k]の高さとH
S[i]の積に等しい。
【0128】
一実施形態では、選択された層の各層向けの入力特徴データからの各サブデータブロックのレイアウト位置、幅および高さは、前述のステップS310において判定されるが、入力特徴データの各サブデータブロックからのそれぞれの繰り返し計算されるデータの位置、幅および高さは、後続のステップS325で使用するために判定され、かつ記録され得る。
【0129】
他の実施形態では、2つの層のうち後の層向けの出力特徴データからのサブデータブロックが、ステップS325で要素的加算演算を遂行されるとき、最初に、その層向けの出力特徴データの各サブデータブロックの繰り返し計算されるデータが判定され、次いで、各層向けの入力特徴データからの各サブデータブロックの繰り返し計算されるデータが、上記で説明されたように最後の層から層ごとに逆に導出するようなやり方で、要素的加算演算を遂行される2つの層のうち前の層向けの出力特徴データからのサブデータブロックの各サブデータブロックからの繰り返し計算されるデータの位置、幅、および高さが判定され、これに基づいて、前の層向けの出力特徴データからの各サブデータブロックの実際のデータ範囲が判定される。
【0130】
例示的方法300は、ステップS325によって対応する出力サブデータブロックを取得した後にステップS330へ進んでよく、取得された出力サブデータブロックのすべてを互いに組み合わせる。
【0131】
一実施形態では、最後の層向けの出力特徴データを分割することが予期されるとステップS305において判定された場合、ステップS330において、最後の層の実際の出力特徴データが取得されるように、最後の層向けのそれぞれの出力サブデータブロックが、それぞれのレイアウト位置に従って互いに直接接合されてよい(分割の反対のプロセス)。たとえば、
図7に示されるように、出力サブデータブロックS1〜S4はそれぞれのレイアウト位置に従って互いに接合されて、それぞれの出力サブデータブロックの間にオーバーラップする部分がないことが保証され、次いで、矢印の右側に示された最後の層の実際の出力特徴データが取得され得る。
【0132】
最後の層向けの出力特徴データを分配することが予期されるとステップS305において判定された場合、次いで、最後の層の実際の出力特徴データが取得されるように、最後の層向けのそれぞれの実際の出力サブデータブロックが、ステップS330におけるそれぞれのレイアウト位置に従って、
図8に示されるように一部重ねられてよい(分配の反対のプロセスであり、すなわち、組合せ中に各サブデータブロックの間のオーバーラップがあり得る)。
図8において、たとえば、出力サブデータブロックS1とオーバーラップしない出力サブデータブロックS2の部分(すなわちS2の最右列)が出力サブデータブロックS1の右側に接合されてよく、出力サブデータブロックS1とオーバーラップしない出力サブデータブロックS3の部分(すなわちS3の最下行)が出力サブデータブロックS1の下側に接合されてよく、次いで、出力サブデータブロックS3と出力サブデータブロックS2のどちらともオーバーラップしない出力サブデータブロックS4の部分(すなわちS4の右下コーナーにおける空白のブロック)が出力サブデータブロックS1の右下コーナーに接合されてよく、そこで、矢印の右側に示された最後の層の実際の出力特徴データが取得され得る。最後の層の実際の出力特徴データを取得するためにデータをオーバーラップさせることのない他の出力サブデータブロックの部分は、たとえばS4を基にして段階的に接合されてよい。他の例では、最初にS1とS2、S3とS4を互いに接合してもよく、次いで、取得された2つの中間サブデータブロックが、最後の層向けの実際の出力特徴データを取得するように互いに一部重ねられる。
【0133】
別の実施形態では、最後の層向けの実際の出力特徴データの出力および/または記憶が完成する一方で、すべての出力サブデータブロックの出力および/または記憶が完成するように、それぞれの出力サブデータブロックからのデータが、メモリの対応する記憶位置に直接出力されてよく、または直接記憶されてよい。
【0134】
上記で説明されたように、最初の層向けの入力特徴データが最初の層に供給され、選択された層における動作が遂行される場合には、最後の層向けの出力特徴データのサイズまたは必要な記憶空間のサイズがあらかじめ判定されてよく、またはあらかじめ知られ得る。したがって、実際の出力特徴データに対して(連続または不連続の)記憶空間が最後の層から割り当てられ得て、そのサイズは最後の層によって出力される出力特徴データを格納し得るものであり、最後の層の出力特徴データにおける各データの対応する記憶位置が判定され得る。
【0135】
ステップS330において、それぞれの出力サブデータブロックの各データが、メモリの対応する記憶位置に記憶され得る。たとえば、
図9に示されるように、出力サブデータブロックS1におけるデータS1_1、S1_2、S1_3、およびS1_4は、それぞれメモリの記憶アドレスADDR_0、ADDR_1、ADDR_5、およびADDR_6に記憶され得る。同様に、出力サブデータブロックS2、S3、およびS4におけるデータは、メモリの対応する記憶位置に別個に記憶され得る。次いで、記憶空間においてADDR_0から始まる25の記憶ブロック(
図8の例ではS1が4つのデータを含み、S2が6つのデータを含み、S3が6つのデータを含み、S4が9つのデータを含む)に記憶されたデータが、最後の層向けの実際の出力特徴データに対応する。
【0136】
上記で説明されたように、最後の層向けの出力特徴データを分配することがステップS305において予期される場合、ステップS325で取得される最後の層の出力特徴データからのそれぞれの実際の出力サブデータブロックの間にオーバーラップする部分が存在し得る。たとえば、
図10に示されるように、出力サブデータブロックS1とS2の間にオーバーラップする部分(すなわち
図10におけるS1およびS2の陰になった部分)が存在し、S1のデータS1_2がS2のデータS2_1とオーバーラップしており、S1のデータS1_4がS2のデータS2_4とオーバーラップしている。
【0137】
それゆえに、一実施形態では、最後の層の出力特徴データにおけるそれぞれの出力サブデータブロックの実際の位置は、ステップS315において最初の層向けの入力特徴データからの各サブデータブロックの実際の位置を判定するために使用されたやり方に類似のやり方で判定され得る。次いで、各データブロックにおける各データの対応する記憶位置のアドレスが、それぞれの出力サブデータブロックの実際の位置に従って判定され得る。
【0138】
たとえば、レイアウト位置が0の(あるいは、左側または上側には他の出力サブデータブロックがない)出力サブデータブロックS[0]の最も左上コーナーのデータ(たとえば
図10におけるS1のS1_1)の記憶アドレスがADDR_0と判定された場合、任意の他の出力サブデータブロックS[i](0≦i<Eであり、EはステップS305で判定されたサブデータブロックの予期される数である)からの任意のデータDの対応する記憶アドレスADDR_jのj値は、J=W*(y
S+y
off)+x
S+x
offとして判定され得、Wは最後の層の出力特徴データの幅であり、(x
S, y
S)は出力サブデータブロックS[i]の実際の位置の座標を表し、x
offは出力サブデータブロックS[i]におけるデータDの(x
S, y
S)に対する幅方向のオフセットを表し、y
offは、出力サブデータブロックS[i]におけるデータDの(x
S, y
S)に対する高さ方向のオフセットを表す。
【0139】
たとえば、
図10の例では、最後の層向けの出力特徴データの幅は4であって、S2における実際の位置の座標は(1, 0)であり、したがって、たとえばS2におけるデータS2_5の対応する記憶アドレスはADDR_6と判定され得、J=4*(0+1)+1+1=6である。
【0140】
それぞれの出力サブデータブロックからの各データを記憶するとき、データが、対応する記憶位置に記憶されているかどうかを検査してよい。記憶されていなければ、データが記憶位置に記憶されてよい。記憶されていれば、データの記憶はスキップされてよく、または記憶位置におけるデータが保護されるかもしくは上書きされてよい。
【0141】
出力サブデータブロックの各々のデータの記憶位置または記憶アドレスをそのように判定するやり方は、分割する場合にも適用され得る。
【0142】
加えて、それぞれの出力サブデータブロックにおけるデータは、メモリにおける対応する記憶位置に、並行して出力されるかまたは記憶され得る。
【0143】
図11および
図12は、本開示の一実施形態による、ニューラルネットワークのパラメータを適合させるための装置のブロック図を説明するものである。
【0144】
図11に示されるように、例示的装置1100は1つまたは複数のプロセッサ1110を含み得る。プロセッサ1110は、汎用CPU、GPU、またはニューラルネットワークもしくはアクセラレータ用の専用プロセッサなど、データを処理し、かつ/または命令を実行することができる任意の形式の処理ユニットでよい。たとえば、プロセッサ1110は、本開示の一実施形態による、ニューラルネットワークの特徴データを適合させるための方法を遂行し得る。その上、プロセッサ1110は、期待される機能を遂行するように、装置1100の他の構成要素も制御し得る。
【0145】
プロセッサ1110は、バスシステムおよび/または他の形式の接続機構(図示せず)を通じてメモリ1120およびI/Oインターフェース1130に接続され得る。
【0146】
メモリ1120は、たとえば揮発性メモリおよび/または不揮発性メモリといった、コンピュータによる読み書きが可能な種々の形式の記憶媒体を含み得る。揮発性メモリは、たとえばランダムアクセスメモリ(RAM)および/またはキャッシュなどを含み得る。不揮発性メモリは、たとえば読取り専用メモリ(ROM)、ハードディスク、フラッシュメモリなどを含み得る。読み書き可能な記憶媒体は、それだけではないが、たとえば電気、磁気、光、電磁気、赤外線、または半導体の、システム、装置、またはデバイス、あるいは上記のものの任意の組合せを含み得る。たとえば、メモリ1120は、ニューラルネットワーク専用プロセッサに対応する場合には専用プロセッサを担持するチップ上のRAMでよい。メモリ1120は、本開示の一実施形態による、ニューラルネットワークにおいて特徴データを適合させるための方法を遂行するようにデバイス1100に命令するためのプログラム命令を含み得る。
【0147】
I/Oインターフェース1130は、プロセッサ1110にパラメータまたはデータを供給して、プロセッサ1110によって処理された結果のデータを出力するように使用され得る。
【0148】
図12に示されるように、例示的装置1200はセレクタ1210およびスプリッタ1220を含み得る。
【0149】
セレクタ1210は、畳み込みニューラルネットワークにおける複数の連続した層を選択するように構成され得る。スプリッタ1220は、複数の層のうち最後の層の出力特徴データからのサブデータブロックの予期される数、ならびに各サブデータブロックのレイアウト位置、幅、および高さを判定して、現在の層向けの出力特徴データからの各サブデータブロックのレイアウト位置、幅、および高さに従って、複数の層のそれぞれの現在の層における現在の層向けの入力特徴データからの各サブデータブロックのレイアウト位置、幅、および高さを判定するように構成され得る。一実施形態では、セレクタ1210は、たとえば例示的方法300のステップS301を遂行するように構成され得る。
【0150】
スプリッタ1220はまた、最初の層の入力特徴データにおける複数の層のうち最初の層向けの入力特徴データからの各サブデータブロックの実際の位置を判定して、最初の層向けの入力特徴データからの各サブデータブロックの実際の位置、幅および高さに従って、最初の層向けの入力特徴データのサブデータブロックの予期される数を取得するように構成され得る。一実施形態では、スプリッタ1220は、たとえば例示的方法300のステップS305〜S320を遂行するように構成され得る。
【0151】
図12に示されるように、例示的装置1200はオペレータ1230およびコンバイナ1240を含み得る。
【0152】
オペレータ1230は、最初の層の各サブデータブロックに関する複数の層における動作を遂行して、対応する出力サブデータブロックを取得するように構成され得る。一実施形態では、オペレータ1230は、たとえば例示的方法300のステップS320を、順次に、または並行して遂行するように構成され得る。
【0153】
コンバイナ1240は、オペレータから出力されたそれぞれの出力サブデータブロックを互いに組み合わせて、最後の層向けの実際の出力特徴データを取得するように構成され得る。一実施形態では、コンバイナ1240は、たとえば例示的方法300のステップS330を、順次に、または並行して遂行するように構成され得る。
【0154】
図11および
図12に示された装置1100および装置1200は単なる例示であって限定するものではないことを理解されたい。本開示の実施形態による、ニューラルネットワークの特徴データを適合させるのに使用され得る装置は、要求に基づいて他の構成要素および/または構造を有し得る。
【0155】
上記で説明されたように、畳み込みニューラルネットワークにおける指定された層の入力特徴データは、本開示の一実施形態による方法および/または装置によって予期される数のサブデータブロックに分配され得る。指定された層に各サブデータを入力として供給し、複数の層における動作をそれぞれ遂行した後に取得される結果は、指定された層に分配前の入力特徴データを入力として供給し、複数の層における動作をそれぞれ遂行した後に取得される結果と同一である。そのように分配することにより、畳み込みニューラルネットワークのいくつかの層における並行動作が可能になり、処理効率を改善する。その上、プロセッサと関連した高速メモリも効率的に利用され得、たとえば、畳み込みニューラルネットワークの複数の連続した層における動作は、畳み込みニューラルネットワークにおける動作中にデータ搬送の回数を低減するように融合されたやり方で遂行され得て、処理効率を改善し得る。
【0156】
文脈において明らかに別様な解釈が必要とされるのでなければ、明細書および特許請求の範囲の全体にわたって、「備える」および「含む」などの表現は、排他的または網羅的な意味とは対照的に、包含的な意味、すなわち「それだけではないが、〜を含む」という意味に解釈されるべきである。加えて、「本明細書で」、「上記で」、「以下で」といった表現および類似の表現は、本開示で使用されたとき、本開示の何らかの特定の部分ではなく、本開示を全体として参照するものとする。上記の説明で使用された単数形または複数形の表現は、文脈において可能であれば、それぞれ複数形または単数形も含み得る。2つ以上の品目のリストを参照しての「または」という表現は、リストの品目のいずれか、リストの品目のすべて、およびリストの品目の任意の組合せ、といった表現の解釈のすべてを対象として含むものである。
【0157】
本開示の実施形態の上記の詳細な説明は、網羅的であること、または本開示を上記で開示された正確な形態に限定することを意図するものではない。例示のために本開示の特定の実施形態および例が上記で説明されているが、当業者なら認識するように、本開示の範囲内で種々の等価な修正形態が可能である。たとえば、プロセスまたはブロックが所与の順番で示されているが、代替実施形態は、これらのステップを含むルーチンを異なる順番で遂行するか、またはこれらのブロックを異なる順番で含むシステムを採用してよく、いくつかのプロセスまたはブロックの削除、移動、追加、細分、組合せ、および/または変更が可能である。これらのプロセスまたはブロックの各々が、いろいろな異なるやり方で実施されてよい。その上、プロセスまたはブロックは順次に実行されるように示されることがあるが、これらのプロセスまたはブロックは、代わりに並行して実行されてよく、または異なる時間に実行されてもよい。
【0158】
本明細書で提供された本開示の教示は、必ずしも前述のシステムではなく他のシステムにも適用され得るものである。前述の種々の実施形態の要素および行為は、組み合わされてさらなる実施形態を提供し得るものである。
【0159】
本開示のいくつかの実施形態が説明されてきたが、これらの実施形態は例としてのみ示されており、本開示の範囲を限定するようには意図されていない。実際には、本明細書で説明された斬新な方法およびシステムは、いろいろな他の形態で具現され得るものである。その上、本開示の精神から逸脱することなく、本明細書で説明された方法およびシステムの形態における種々の省略、置換および変更が可能である。