(57)【要約】  畳み込みニューラルネットワーク層の計算を効率的に実行するための方法、システム、および装置である。方法のうちの１つは、Ｘ×Ｙ×Ｚ入力テンソルをＸ’×Ｙ’×Ｚ’入力テンソルに変換するステップを含み、Ｘ’はＸ以下、Ｙ’はＹ以下、Ｚ’はＺ以上であり、修正されたウェイト行列を取得するステップを含み、修正されたウェイト行列は、Ｘ’×Ｙ’×Ｚ’入力テンソルに対して作用することにより、Ｕ’×Ｖ’×Ｗ’出力テンソルを生成し、Ｕ’×Ｖ’×Ｗ’出力テンソルは変換されたＵ×Ｖ×Ｗ出力テンソルを含み、Ｕ’はＵ以下、Ｖ’はＶ以下、Ｗ’はＷ以上であり、修正されたウェイト行列を用いてＸ’×Ｙ’×Ｚ’入力テンソルを処理することによりＵ’×Ｖ’×Ｗ’出力テンソルを生成するステップを含む。
2019527420.tif 000002
【特許請求の範囲】
【請求項１】
畳み込みニューラルネットワーク層の計算をより効率的に実行するためのコンピュータによって実施される方法であって、前記畳み込みニューラルネットワーク層は、Ｘ×Ｙ×Ｚ入力テンソルを受け１つ以上の畳み込みニューラルネットワーク層ウェイト行列を用いて前記受けた入力テンソルを処理することによりＵ×Ｖ×Ｗ出力テンソルを生成するように構成されており、前記方法は、
前記Ｘ×Ｙ×Ｚ入力テンソルをＸ’×Ｙ’×Ｚ’入力テンソルに変換するステップを含み、Ｘ’はＸ以下、Ｙ’はＹ以下、Ｚ’はＺ以上であり、
１つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得するステップを含み、（ｉ）前記修正されたウェイト行列は、前記Ｘ’×Ｙ’×Ｚ’入力テンソルに対して作用することにより、Ｕ’×Ｖ’×Ｗ’出力テンソルを生成し、（ｉｉ）前記Ｕ’×Ｖ’×Ｗ’出力テンソルは、変換されたＵ×Ｖ×Ｗ出力テンソルを含み、Ｕ’はＵ以下、Ｖ’はＶ以下、Ｗ’はＷ以上であり、
前記修正されたウェイト行列を用いて前記Ｘ’×Ｙ’×Ｚ’入力テンソルを処理することにより前記Ｕ’×Ｖ’×Ｗ’出力テンソルを生成するステップを含み、前記Ｕ’×Ｖ’×Ｗ’出力テンソルは前記Ｕ×Ｖ×Ｗ出力テンソルを含む、方法。
【請求項２】
Ｘ’は自然数Ｎで割ったＸのシーリング（ceiling）に等しく、Ｙ’は自然数Ｍで割ったＹのシーリングに等しく、Ｚ’はＺにＮＭを掛けたものに等しい、請求項１に記載の方法。
【請求項３】
前記Ｘ×Ｙ×Ｚ入力テンソルはＸＹ第１入力を表し、前記Ｘ’×Ｙ’×Ｚ’入力テンソルはＸ’Ｙ’スーパー入力を表し、各スーパー入力は複数の第１入力を含む、請求項２に記載の方法。
【請求項４】
前記複数の第１入力の数はＮＭ個の入力に等しい、請求項３に記載の方法。
【請求項５】
前記Ｘ’×Ｙ’×Ｚ’入力テンソルに対する前記修正されたウェイト行列の作用は、前記Ｘ×Ｙ×Ｚ入力テンソルに対する前記畳み込みニューラルネットワーク層ウェイト行列の作用と同等である、請求項１に記載の方法。
【請求項６】
前記修正されたウェイト行列のエントリは、１つ以上の畳み込みニューラルネットワーク層ウェイト行列を含む、請求項１に記載の方法。
【請求項７】
前記修正されたウェイト行列は、バンド構造を有する行列を含む、請求項１に記載の方法。
【請求項８】
Ｕ’は自然数Ｐで割ったＵのシーリング（ceiling）に等しく、Ｖ’は自然数Ｑで割ったＶのシーリングに等しく、Ｗ’はＷにＰＱを掛けたものに等しい、請求項１に記載の方法。
【請求項９】
前記畳み込みニューラルネットワーク層は、Ｘ次元のストライドＳとＹ次元のストライドＴとを含み、ストライドＳ、Ｔと、出力テンソルＵ×Ｖ×Ｗと、変換された出力テンソルＵ’×Ｖ’×Ｗ’との関係は、Ｕ’＝ｃｅｉｌｉｎｇ（Ｕ／ＮＳ）およびＶ’＝ｃｅｉｌｉｎｇ（Ｖ／ＭＴ）によって示される、請求項８に記載の方法。
【請求項１０】
前記Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、前記Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含む、請求項８に記載の方法。
【請求項１１】
前記複数の第１出力はＰＱ個の出力に等しい、請求項１０に記載の方法。
【請求項１２】
前記畳み込みニューラルネットワーク層はプーリングサブ層を含む、請求項１に記載の方法。
【請求項１３】
前記方法は、前記プーリングサブ層を、前記変換された入力テンソルに対するストライド処理に置き換えるステップをさらに含む、請求項１２に記載の方法。
【請求項１４】
前記畳み込みニューラルネットワーク層はカーネルストライド処理を含み、前記方法は、前記変換された入力テンソルおよび修正されたウェイト行列に基づいて効率的なカーネルストライド処理を実施するステップをさらに含む、請求項１に記載の方法。
【請求項１５】
前記Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、前記Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含み、
前記複数の第１出力の中の第１出力の数は、前記畳み込みニューラルネットワーク層ウェイト行列の次元に依存する、請求項１に記載の方法。
【請求項１６】
前記Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、前記Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含み、
前記複数の第１出力の中の出力の数は、（ｉ）前記畳み込みニューラルネットワーク層のアーキテクチャ、（ｉｉ）前記畳み込みニューラルネットワーク層を含むニューラルネットワークモデルのアーキテクチャ、または（ｉｉｉ）前記畳み込みニューラルネットワーク層を実現する装置、のうちの１つ以上に依存する、請求項１に記載の方法。
【請求項１７】
前記１つ以上の畳み込みニューラルネットワーク層ウェイト行列の修正は、ソフトウェアのみの修正である、請求項１に記載の方法。
【請求項１８】
１つ以上のコンピュータと１つ以上の記憶装置とを備えるシステムであって、前記１つ以上の記憶装置は、前記１つ以上のコンピュータによって実行されると前記１つ以上のコンピュータに動作を実行させる演算可能な命令を格納し、前記動作は、Ｘ×Ｙ×Ｚ入力テンソルを受け１つ以上の畳み込みニューラルネットワーク層ウェイト行列を用いて前記受けた入力テンソルを処理することによりＵ×Ｖ×Ｗ出力テンソルを生成するように構成された畳み込みニューラルネットワーク層の計算をより効率的に実行するための動作であり、前記動作は、
前記Ｘ×Ｙ×Ｚ入力テンソルをＸ’×Ｙ’×Ｚ’入力テンソルに変換することを含み、Ｘ’はＸ以下、Ｙ’はＹ以下、Ｚ’はＺ以上であり、
１つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得することを含み、（ｉ）前記修正されたウェイト行列は、前記Ｘ’×Ｙ’×Ｚ’入力テンソルに対して作用することにより、Ｕ’×Ｖ’×Ｗ’出力テンソルを生成し、（ｉｉ）前記Ｕ’×Ｖ’×Ｗ’出力テンソルは、変換されたＵ×Ｖ×Ｗ出力テンソルを含み、Ｕ’はＵ以下、Ｖ’はＶ以下、Ｗ’はＷ以上であり、
前記修正されたウェイト行列を用いて前記Ｘ’×Ｙ’×Ｚ’入力テンソルを処理することにより前記Ｕ’×Ｖ’×Ｗ’出力テンソルを生成することを含み、前記Ｕ’×Ｖ’×Ｗ’出力テンソルは前記Ｕ×Ｖ×Ｗ出力テンソルを含む、システム。
【請求項１９】
Ｘ’は自然数Ｎで割ったＸのシーリング（ceiling）に等しく、Ｙ’は自然数Ｍで割ったＹのシーリングに等しく、Ｚ’はＺにＮＭを掛けたものに等しい、請求項１８に記載のシステム。
【請求項２０】
前記Ｘ×Ｙ×Ｚ入力テンソルはＸＹ第１入力を表し、前記Ｘ’×Ｙ’×Ｚ’入力テンソルはＸ’Ｙ’スーパー入力を表し、各スーパー入力は複数の第１入力を含む、請求項１９に記載のシステム。
【請求項２１】
前記複数の第１入力の数はＮＭ個の入力に等しい、請求項２０に記載のシステム。
【請求項２２】
前記Ｘ’×Ｙ’×Ｚ’入力テンソルに対する前記修正されたウェイト行列の作用は、前記Ｘ×Ｙ×Ｚ入力テンソルに対する前記畳み込みニューラルネットワーク層ウェイト行列の作用と同等である、請求項１８に記載のシステム。
【請求項２３】
前記修正されたウェイト行列のエントリは、１つ以上の畳み込みニューラルネットワーク層ウェイト行列を含む、請求項１８に記載のシステム。
【請求項２４】
前記修正されたウェイト行列は、バンド構造を有する行列を含む、請求項１８に記載のシステム。
【請求項２５】
Ｕ’は自然数Ｐで割ったＵのシーリング（ceiling）に等しく、Ｖ’は自然数Ｑで割ったＶのシーリングに等しく、Ｗ’はＷにＰＱを掛けたものに等しい、請求項１８に記載のシステム。
【請求項２６】
前記畳み込みニューラルネットワーク層は、Ｘ次元のストライドＳとＹ次元のストライドＴとを含み、ストライドＳ、Ｔと、出力テンソルＵ×Ｖ×Ｗと、変換された出力テンソルＵ’×Ｖ’×Ｗ’との関係は、Ｕ’＝ｃｅｉｌｉｎｇ（Ｕ／ＮＳ）およびＶ’＝ｃｅｉｌｉｎｇ（Ｖ／ＭＴ）によって示される、請求項２５に記載のシステム。
【請求項２７】
前記Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、前記Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含む、請求項２５に記載のシステム。
【請求項２８】
前記複数の第１出力はＰＱ個の出力に等しい、請求項２７に記載のシステム。
【請求項２９】
前記畳み込みニューラルネットワーク層はプーリングサブ層を含む、請求項１８に記載のシステム。
【請求項３０】
前記動作は、前記プーリングサブ層を、前記変換された入力テンソルに対するストライド処理に置き換えることをさらに含む、請求項２９に記載のシステム。
【請求項３１】
前記畳み込みニューラルネットワーク層はカーネルストライド処理を含み、前記方法は、前記変換された入力テンソルおよび修正されたウェイト行列に基づいて効率的なカーネルストライド処理を実施することをさらに含む、請求項１８に記載のシステム。
【請求項３２】
前記Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、前記Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含み、
前記複数の第１出力の中の第１出力の数は、前記畳み込みニューラルネットワーク層ウェイト行列の次元に依存する、請求項１８に記載のシステム。
【請求項３３】
前記Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、前記Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含み、
前記複数の第１出力の中の出力の数は、（ｉ）前記畳み込みニューラルネットワーク層のアーキテクチャ、（ｉｉ）前記畳み込みニューラルネットワーク層を含むニューラルネットワークモデルのアーキテクチャ、または（ｉｉｉ）前記畳み込みニューラルネットワーク層を実現する装置、のうちの１つ以上に依存する、請求項１８に記載のシステム。
【請求項３４】
前記１つ以上の畳み込みニューラルネットワーク層ウェイト行列の修正は、ソフトウェアのみの修正である、請求項１８に記載のシステム。
【請求項３５】
１つ以上のコンピュータによって実行されると前記１つ以上のコンピュータに動作を実行させる命令で符号化されたコンピュータ記憶媒体であって、前記動作は、Ｘ×Ｙ×Ｚ入力テンソルを受け１つ以上の畳み込みニューラルネットワーク層ウェイト行列を用いて前記受けた入力テンソルを処理することによりＵ×Ｖ×Ｗ出力テンソルを生成するように構成された畳み込みニューラルネットワーク層の計算をより効率的に実行するための動作であり、前記動作は、
前記Ｘ×Ｙ×Ｚ入力テンソルをＸ’×Ｙ’×Ｚ’入力テンソルに変換することを含み、Ｘ’はＸ以下、Ｙ’はＹ以下、Ｚ’はＺ以上であり、
１つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得することを含み、（ｉ）前記修正されたウェイト行列は、前記Ｘ’×Ｙ’×Ｚ’入力テンソルに対して作用することにより、Ｕ’×Ｖ’×Ｗ’出力テンソルを生成し、（ｉｉ）前記Ｕ’×Ｖ’×Ｗ’出力テンソルは、変換されたＵ×Ｖ×Ｗ出力テンソルを含み、Ｕ’はＵ以下、Ｖ’はＶ以下、Ｗ’はＷ以上であり、
前記修正されたウェイト行列を用いて前記Ｘ’×Ｙ’×Ｚ’入力テンソルを処理することにより前記Ｕ’×Ｖ’×Ｗ’出力テンソルを生成することを含み、前記Ｕ’×Ｖ’×Ｗ’出力テンソルは前記Ｕ×Ｖ×Ｗ出力テンソルを含む、コンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
背景
本明細書は、入力をニューラルネットワークの層を通して処理することにより出力を生成することに関する。
【背景技術】
【０００２】
ニューラルネットワークは、受けた入力に対する出力を予測するために非線形ユニットからなる１つ以上の層を用いる機械学習モデルである。ニューラルネットワークの中には、出力層に加えて１つ以上の隠れ層を含むものがある。各隠れ層の出力は、ネットワーク内の別の層、たとえば次の隠れ層または出力層への入力として使用される。ネットワークの各層は、各組のパラメータの現在の値に従い、受けた入力から出力を生成する。
【発明の概要】
【課題を解決するための手段】
【０００３】
概要
概して、本明細書に記載の主題の１つの革新的な側面は、畳み込みニューラルネットワーク（convolutional neural network）層の計算をより効率的に実行するための方法において実現することができる。この畳み込みニューラルネットワーク層は、Ｘ×Ｙ×Ｚ入力テンソルを受け１つ以上の畳み込みニューラルネットワーク層ウェイト行列を用いて上記受けた入力テンソルを処理することによりＵ×Ｖ×Ｗ出力テンソルを生成するように構成されている。いくつかの側面において、この方法は、Ｘ×Ｙ×Ｚ入力テンソルをＸ’×Ｙ’×Ｚ’入力テンソルに変換するステップを含み、Ｘ’はＸ以下、Ｙ’はＹ以下、Ｚ’はＺ以上であり、この方法はさらに、１つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得するステップを含み、（ｉ）修正されたウェイト行列は、Ｘ’×Ｙ’×Ｚ’入力テンソルに対して作用することにより、Ｕ’×Ｖ’×Ｗ’出力テンソルを生成し、（ｉｉ）Ｕ’×Ｖ’×Ｗ’出力テンソルは、変換されたＵ×Ｖ×Ｗ出力テンソルを含み、Ｕ’はＵ以下、Ｖ’はＶ以下、Ｗ’はＷ以上であり、この方法はさらに、修正されたウェイト行列を用いてＸ’×Ｙ’×Ｚ’入力テンソルを処理することによりＵ’×Ｖ’×Ｗ’出力テンソルを生成するステップを含み、Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ×Ｖ×Ｗ出力テンソルを含む。
【０００４】
この側面のその他の実施形態は、対応するコンピュータシステム、装置、および１つ以上のコンピュータ記憶装置に記録されたコンピュータプログラムを含み、これらは各々、上記方法のアクションを実行するように構成されている。１つ以上のコンピュータからなるシステムは、ソフトウェア、ファームウェア、ハードウェア、またはその任意の組み合わせによって特定の動作またはアクションを実行するように構成することができ、上記ソフトウェア、ファームウェア、ハードウェア、またはその任意の組み合わせは、当該システムにインストールされ動作時に当該システムに上記アクションを実行させることができる。１つ以上のコンピュータプログラムは、データ処理装置によって実行されると当該装置にアクションを実行させる命令を含むことにより、特定の動作またはアクションを実行するように構成することができる。
【０００５】
上記およびその他の実施形態は各々、任意で、以下の特徴のうちの１つ以上を、単独でまたは組み合わせて含み得る。
【０００６】
いくつかの実装例において、Ｘ’は自然数Ｎで割ったＸのシーリング（ceiling）に等しく、Ｙ’は自然数Ｍで割ったＹのシーリングに等しく、Ｚ’はＺにＮＭを掛けたものに等しい。
【０００７】
いくつかの実装例において、Ｘ×Ｙ×Ｚ入力テンソルはＸＹ第１入力を表し、Ｘ’×Ｙ’×Ｚ’入力テンソルはＸ’Ｙ’スーパー入力を表し、各スーパー入力は複数の第１入力を含む。
【０００８】
いくつかの実装例において、複数の第１入力の数はＮＭ個の入力に等しい。
いくつかの実装例において、Ｘ’×Ｙ’×Ｚ’入力テンソルに対する修正されたウェイト行列の作用は、Ｘ×Ｙ×Ｚ入力テンソルに対する畳み込みニューラルネットワーク層ウェイト行列の作用と同等である。
【０００９】
いくつかの実装例において、修正されたウェイト行列のエントリは、１つ以上の畳み込みニューラルネットワーク層ウェイト行列を含む。
【００１０】
いくつかの場合において、修正されたウェイト行列は、バンド構造を有する行列を含む。
【００１１】
いくつかの実装例において、Ｕ’は自然数Ｐで割ったＵのシーリング（ceiling）に等しく、Ｖ’は自然数Ｑで割ったＶのシーリングに等しく、Ｗ’はＷにＰＱを掛けたものに等しい。
【００１２】
いくつかの実装例において、Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含む。
【００１３】
いくつかの場合において、複数の第１出力はＰＱ個の出力に等しい。
いくつかの実装例において、畳み込みニューラルネットワーク層はプーリングサブ層を含む。
【００１４】
いくつかの場合において、方法は、プーリングサブ層を、変換された入力テンソルに対するストライド処理（striding）に置き換えるステップをさらに含む。
【００１５】
いくつかの実装例において、畳み込みニューラルネットワーク層は、Ｘ次元のストライドＳとＹ次元のストライドＴとを含み、ストライドＳ、Ｔと、出力テンソルＵ×Ｖ×Ｗと、変換された出力テンソルＵ’×Ｖ’×Ｗ’との関係は、Ｕ’＝ｃｅｉｌｉｎｇ（Ｕ／ＮＳ）およびＶ’＝ｃｅｉｌｉｎｇ（Ｖ／ＭＴ）によって示される。
【００１６】
いくつかの場合において、Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含み、複数の第１出力の中の第１出力の数は、畳み込みニューラルネットワーク層ウェイト行列の次元に依存する。
【００１７】
いくつかの実装例において、Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含み、複数の第１出力の中の出力の数は、（ｉ）畳み込みニューラルネットワーク層のアーキテクチャ、（ｉｉ）畳み込みニューラルネットワーク層を含むニューラルネットワークモデルのアーキテクチャ、または（ｉｉｉ）畳み込みニューラルネットワーク層を実現する装置、のうちの１つ以上に依存する。
【００１８】
いくつかの場合において、１つ以上の畳み込みニューラルネットワーク層ウェイト行列の修正は、ソフトウェアのみの修正である。
【００１９】
本明細書に記載の主題は、以下の利点のうちの１つ以上を実現するために特定の実施形態において実施することができる。
【００２０】
畳み込みニューラルネットワーク層は、行列乗算演算を用いて計算することができる。しかしながら、ソフトウェアライブラリもハードウェア行列乗算ユニットも、畳み込みニューラルネットワーク層の入力または出力の深さが浅いときは低効率で機能する場合がある。なぜなら、入力深さおよび出力深さは、乗算される行列のうちの１つの行列の次元にマッピングされるからである。一例として、入力画像は入力深さを３にするＲＧＢデータを有することがあり、畳み込みニューラルネットワーク層は深さ１６の出力を生成することがある。ここで３および１６は先に述べた意味において浅い。効率の悪さが生じる理由として、典型的な現代のコンピュータアーキテクチャは、そのキャッシュ、メモリアクセスおよび計算ユニットのアーキテクチャ設計のために、深さが浅い層と同一または同様の効率で、特定の深さを上限とする極めて深い層を処理できることが、挙げられる。
【００２１】
畳み込みニューラルネットワーク層における標準的な動作は、１つの入力、たとえば１つのピクセルを、行列乗算演算の１つの行または列にマッピングする。スーパーピクセル畳み込みニューラルネットワーク層は、本明細書に記載のように、空間的な大きさまたは指標（たとえばＸ次元およびＹ次元）よりも深さの大きさまたは指標（たとえばＺ次元）を優先して、データに相当する複数の入力、たとえば複数の入力ピクセルをグループ化する。グループ化した入力を、行列乗算ユニットを用いてより効率良く実現し処理することによって、スーパーピクセル畳み込みニューラルネットワーク層技術を実現するシステムの計算効率を高める。たとえば、グループ化された入力を処理するように構成されたスーパーピクセルＣＮＮにおけるニューラルネットワーク層のインメモリ表現はよりコンパクトであるため、ニューラルネットワーク層は、受けた入力を、サイズが限定されている低レイテンシアクセスメモリに格納して処理することができる。このような技術を実装するシステムはしたがって、どの行列マシン上、たとえば中央処理装置、グラフィック処理装置または専用ニューラルネットワーク処理装置上においても、畳み込みニューラルネットワークの、より高い計算スループット、より低い計算レイテンシ、より短い入出力転送時間、およびより優れたエネルギー利用から、恩恵を得ることができる。加えて、システムは、システムハードウェアを修正することなく上記技術を実装し得る、すなわち、上記技術は、全体をシステムソフトウェアを用いて実現してもよく、したがって、行列乗算を実行するために使用されるすべてのマシンに適用することができる。
【００２２】
スーパーピクセル畳み込みニューラルネットワーク層は、本明細書に記載のように、標準的な畳み込みニューラルネットワーク層と比較して、含まれるカーネル要素の数を少なくすることができ、したがって、スーパーピクセル畳み込みニューラルネットワーク層を使用するときに実行する必要がある行列乗算演算数を減じることができる。
【００２３】
加えて、スーパーピクセル畳み込みニューラルネットワーク層を実現するシステムは、本明細書に記載のように、ストライドが１よりも大きい畳み込みニューラルネットワーク層を、ストライドが１に等しいスーパーピクセル畳み込みニューラルネットワーク層に変換することができる。ストライドが１に等しいスーパーピクセル畳み込みニューラルネットワーク層は、ニューラルネットワークシステムを実現するいくつかのコンピュータアーキテクチャ、たとえば、シストリックアレイのような行列乗算ユニットを含むアーキテクチャのようにストライドが１に等しい畳み込み計算を直接実行することしかできないコンピュータアーキテクチャにとって、必要な場合がある。加えて、場合によっては、ストライドが１に等しいスーパーピクセル畳み込みニューラルネットワーク層を、上記アーキテクチャ上でより効率的に演算することができる。これはたとえば、ストライドが１よりも大きい畳み込み計算を実行する必要があるオフチップ処理またはその他の対策が不要となり得るからである。よって、スーパーピクセル畳み込みニューラルネットワーク層を実現するシステムの計算効率および利便性が改善される。
【００２４】
本明細書に記載の主題はまた、スーパーピクセル畳み込みニューラルネットワーク層を用いる画像認識方法／システムに関する。
【００２５】
本明細書の主題の１つ以上の実施形態の詳細は、添付の図面および以下の説明に記載される。この主題のその他の特徴、側面、および利点は、この説明、図面、および請求項から明らかになるであろう。
【図面の簡単な説明】
【００２６】
【図１Ａ】スーパーピクセル畳み込みニューラルネットワークシステムの一例である。
【図１Ｂ】畳み込みニューラルネットワーク層とスーパーピクセル畳み込みニューラルネットワーク層との関係を示す図である。
【図２】畳み込みニューラルネットワーク層の計算を効率的に実行するためのプロセスの一例のフロー図である。
【図３】スーパーピクセル入力テンソル変換の図解の一例である。
【図４】畳み込みニューラルネットワーク層ウェイト行列修正の図解の一例である。
【図５】スーパーピクセルカーネルストライド処理を含む畳み込みニューラルネットワーク層のウェイト行列修正の図解の一例である。
【発明を実施するための形態】
【００２７】
各種図面における同様の参照番号および名称は同様の構成要素を示す。
詳細な説明
図１Ａは、一例としてのスーパーピクセル畳み込みニューラルネットワークシステム１００を示す。スーパーピクセル畳み込みニューラルネットワークシステム１００は、下記のシステム、構成要素、および技術を実現することができる１つ以上の場所にある１つ以上のコンピュータ上でコンピュータプログラムとして実現されるシステムの一例である。
【００２８】
スーパーピクセル畳み込みニューラルネットワークシステム１００は、システム入力１０２を受けこのシステム入力１０２からシステム出力１０４を生成する機械学習システムである。
【００２９】
スーパーピクセル畳み込みニューラルネットワークシステム１００は、デジタルデータ入力を受けこの入力に基づいてスコアまたは分類出力を生成するように構成することができる。たとえば、スーパーピクセル畳み込みニューラルネットワークシステム１００に対する入力が、画像、または画像から抽出された特徴である場合、スーパーピクセル畳み込みニューラルネットワークシステム１００が、たとえば、所与の画像に対し、ニューラルネットワークシステム１００に含まれる１つ以上の全結合層または畳み込みニューラルネットワーク層を用いて生成する出力は、１セットのオブジェクトカテゴリ各々のスコアであってもよい。各スコアは、上記画像が、当該カテゴリに属するオブジェクトの画像を含む推定尤度を表すことができる。
【００３０】
特に、スーパーピクセル畳み込みニューラルネットワークシステム１００は、畳み込みニューラルネットワーク層Ａ  １０６と、畳み込みニューラルネットワーク層Ｂ  １０８と、スーパーピクセル畳み込みニューラルネットワーク層１１０とを含む複数の畳み込みニューラルネットワーク層を含む畳み込みニューラルネットワークを実現する。畳み込みニューラルネットワーク層は、そのニューロンまたはノードが３次元アレイ、すなわち幅、高さ、および深さにおいて論理的に配置されたニューラルネットワーク層である。畳み込みニューラルネットワーク層内のニューロンは、受容野またはカーネルパッチと呼ばれるこの畳み込みニューラルネットワーク層よりも前にある層の小さな領域に接続されており、畳み込みニューラルネットワーク層内の各ニューロンは、並進不変という特性を構成する同一の特徴を検出する。畳み込みニューラルネットワーク層は、この層のパラメータの現在値を格納するそれぞれのウェイト行列またはカーネルに対応付けることができる。この層は、たとえば複数の行列乗算演算を実行することによって、ニューラルネットワーク層のパラメータの現在値に従い、入力から出力を生成する。畳み込みニューラルネットワーク層の一例は、Andrej Karpathy、George Toderici、Sanketh Shetty、Thomas Leung、Rahul SukthankarおよびLi Fei-Feiによる「Large-scale Video Classification with Convolutional Neural Networks」（Proceedings of International Computer Vision and Pattern Recognition (CVPR 2014), IEEE）においてより詳細に説明されている。
【００３１】
スーパーピクセル畳み込みニューラルネットワークの層は各々、それぞれの層入力を受け、この層入力を処理することにより、この入力からそれぞれの層出力を生成するように構成されている。たとえば、スーパーピクセル畳み込みニューラルネットワークシステム１００に含まれる畳み込みニューラルネットワーク層は、Ｘ×Ｙ×Ｚ入力テンソルを受けこの受けた入力テンソルを１つ以上の畳み込みニューラルネットワーク層ウェイト行列またはカーネルを用いて処理することにより、Ｕ×Ｖ×Ｗ出力テンソルを生成するように構成することができる。テンソルは、アレイの次元性に対応する特定の順序を有する数値またはその他の値、たとえばストリングからなる多次元アレイである。たとえば、スカラー値は０次テンソル、数値のベクトルは１次テンソル、行列は２次テンソルである。
【００３２】
たとえば、畳み込みニューラルネットワーク層は、特徴深さが３である６４×６４ピクセルを含む画像を表す６４×６４×３入力テンソルを受けるように構成することができ、ここで特徴深さは、赤、緑、および青の特徴チャネルで表される。畳み込みニューラルネットワーク層は、受けた６４×６４×３入力テンソルを１つ以上のそれぞれの畳み込みニューラルネットワーク層行列を用いて処理することにより、それぞれの出力テンソルを生成することができる。
【００３３】
いくつかの実装例において、畳み込みニューラルネットワーク層は、畳み込みニューラルネットワーク層のサイズおよび出力ボリュームを制御する１つ以上のハイパーパラメータを含み得る。たとえば、畳み込みニューラルネットワーク層は、入力データに対するフィルタの評価と評価との間に畳み込みフィルタまたはウェイト行列がＸおよびＹにおいてシフトする量を制御する、カーネルストライドを含み得る。いくつかの実装例において、畳み込みニューラルネットワーク層は、非線形ダウンサンプリングの形態であるプーリング層を含むまたはこのプーリング層に接続することができる。たとえば、畳み込みニューラルネットワーク層は、入力テンソルの深さスライスに対して作用して入力テンソルを空間的にリサイズするプーリングストライドを含み得る。先に述べた例で説明を続けると、畳み込みニューラルネットワーク層はしたがって、それぞれのＵ×Ｖ×Ｗ出力を生成することができ、ＵはＸ以下、ＶはＹ以下、ＷはＺ以上であり、上記出力テンソルは、たとえば、３２×３２×３２出力テンソルである（たとえば７×７カーネルストライドおよび２×２プーリングストライドに相当する）。一般的に、カーネルストライド処理は、最初の計算の省略（たとえば、「評価と評価との間においてＸを２スキップしＹを２スキップする」）とみなすことができ、一方、プーリングは、ストライド１の評価後のポストパス（post-pass）である（たとえば、プーリングにおいて、計算値はストライドを１として生成され、プーリングウィンドウにおける各グループの最大値が選択され、たとえば入力データの２×２の部分である）。
【００３４】
スーパーピクセルニューラルネットワークシステム１００に含まれる少なくとも１つの畳み込みニューラルネットワーク層は、スーパーピクセル畳み込みニューラルネットワーク層、たとえばスーパーピクセル畳み込みニューラルネットワーク層１１０である。スーパーピクセル畳み込みニューラルネットワーク層は、形状は異なるが数学的には同等のスーパーピクセル畳み込みニューラルネットワーク層を生成するために、受けた畳み込み層入力および畳み込みニューラルネットワーク層ウェイト行列に対してスーパーピクセル変換（代わりに、修正とも言う）を適用する、畳み込みニューラルネットワーク層である。
【００３５】
スーパーピクセル畳み込みニューラルネットワーク層１１０は、スーパーピクセル畳み込みニューラルネットワーク層１１０よりも前の畳み込みニューラル層から、入力例えば入力１１２を受けることができる。たとえば、受けた入力は、スーパーピクセル畳み込みニューラルネットワーク層１１０よりも前の畳み込みニューラルネットワーク層が生成した出力を含み得る。
【００３６】
スーパーピクセル畳み込みニューラルネットワーク層１１０は、スーパーピクセル生成器１１４を含み得る。スーパーピクセル生成器１１４は、畳み込みニューラルネットワーク入力を受けこの受けた入力をスーパーピクセル層入力に変換するように構成される。スーパーピクセル生成器１１４は、空間の大きさまたは指標、たとえばＸ次元およびＹ次元よりも、深さの大きさまたは指標、たとえばＺ次元を優先して、受けた入力の構成要素をグループ化する。これに伴う効果として、Ｚ層における畳み込みニューラルネットワーク層の深さが最早浅くはないので、Ｚ層が浅いことに起因する効率の悪さを回避することができる。
【００３７】
たとえば、スーパーピクセル畳み込みニューラルネットワーク層１１０は、入力として、たとえば深さがＺであるＸＹ（Ｘ掛けるＹ）を表す、Ｘ×Ｙ×Ｚ入力テンソルを受けることができる。スーパーピクセル生成器１１４は、このＸ×Ｙ×Ｚ入力テンソルをＸ’×Ｙ’×Ｚ’スーパーピクセル入力テンソルに変換するように構成され、Ｘ’はＸ以下、Ｙ’はＹ以下、Ｚ’はＺ以上である。スーパーピクセル生成器が実行するスーパーピクセル入力テンソルの変換の一例は、以下の図３に示される。
【００３８】
スーパーピクセル畳み込みニューラルネットワーク層１１０は、スーパーピクセルウェイト行列１１６を含む。スーパーピクセルウェイト行列１１６は、畳み込みニューラルネットワーク層に対応する修正された（代わりに、変換されたとも言う）畳み込みニューラルネットワーク層ウェイト行列である。たとえば、畳み込みニューラルネットワーク層ウェイト行列を、スーパーピクセル畳み込みニューラルネットワーク層に変換する各畳み込みニューラルネットワーク層の選択に応じて修正してもよい。スーパーピクセルウェイト行列１１６は、変換された畳み込みニューラルネットワーク層入力に対して作用する。
【００３９】
たとえば、スーパーピクセルニューラルネットワーク層１１０に対応する畳み込みニューラルネットワーク層は、Ｘ×Ｙ×Ｚ入力テンソルを受けるように構成することができる。スーパーピクセルニューラルネットワーク層１１０は、受けた入力を、Ｘ’×Ｙ’×Ｚ’スーパーピクセル入力テンソルに変換することができる。この場合、スーパーピクセルウェイト行列は、Ｘ’×Ｙ’×Ｚ’入力テンソルに対して作用することによりＵ’×Ｖ’×Ｗ’出力テンソルを生成する修正されたウェイト行列を含み得る。Ｘ’は必ずしもＵ’に等しくはなく、Ｙ’は必ずしもＶ’に等しくはなく、Ｚ’は必ずしもＷ’に等しくはない。Ｕ’×Ｖ’×Ｗ’出力テンソルは、変換されたＵ×Ｖ×Ｗ出力テンソルであり、Ｕ’はＵ以下、Ｖ’はＶ以下、Ｗ’はＷ以上である。たとえば、Ｕ’×Ｖ’×Ｗ’出力テンソルは、スーパーピクセル出力テンソル、たとえば、Ｕ×Ｖ×Ｗ出力テンソルの構成要素をグループ化したもの、を表すことができる。いくつかの実装例において、グループ化を利用してスーパーピクセル入力テンソルを作成するまたはスーパーピクセル出力テンソルを表すことは、同一ではないかもしれず、たとえば、構成要素の数および構成要素をグループ化するやり方は異なり得る。一例としての畳み込みニューラルネットワーク層ウェイト行列の修正を、以下で図４を参照しながら説明する。加えて、スーパーピクセルウェイト行列（ストライド処理を伴う、またはストライド処理を伴わない、たとえばstride_x=stride_y=1）を生成するためのアルゴリズム（コメントを含む）の一例は、以下の通りである。
【００４０】
【数１−１】
2019527420.tif 000003
【数１−２】
2019527420.tif 000004
【００４１】
上の記載で使用されているSuperIndexルーチンの例は以下によって定義することができるが、これに限定される訳ではない。
【００４２】
【数２】
2019527420.tif 000005
【００４３】
上に示したものは専ら例示を目的としている。たとえば、いくつかの実装例において、SuperIndexルーチンは、スーパーピクセル内のパッキング順序に依存しない場合がある。
【００４４】
スーパーピクセル畳み込みニューラルネットワーク層１１０は、変換された入力テンソルを、修正されたウェイト行列を用いて処理することにより、変換された畳み込みニューラルネットワーク層出力、たとえばスーパーピクセル出力１１８を生成する。この生成された、変換後の畳み込みニューラルネットワーク層出力は、未修正の畳み込みニューラルネットワーク層ウェイト行列を用いて未変換の畳み込みニューラルネットワーク入力を処理することによって生成したニューラルネットワーク出力と、数学的には同等であり得る。未修正の計算の出力値はすべて、生成した変換後の畳み込みニューラルネットワーク層出力において、図１Ｂを参照しながら以下で説明するように、逆準同型変換を行うことによって計算できる形態で、存在し得る。たとえば、生成した変換された畳み込みニューラルネットワーク層出力は、（未変換の）畳み込みニューラルネットワークを（未修正の）畳み込みニューラルネットワーク層を用いて処理することによって生成したニューラルネットワーク出力に対応するニューラルネットワーク出力を含む出力のスーパーセットを含み得る。いくつかの実装例において、このスーパーセットに含まれる追加の出力は、スーパーピクセルニューラルネットワークシステム１００の後続の層に与えることができる。たとえば、追加の出力は、最初に要求された未変換の出力の「エッジ外」の出力の「部分総和」に対応し得る。スーパーピクセル計算が、１つのスーパーピクセル計算を処理するのに効率的であるものより大きなＸおよびＹでより大きな計算の１つの「タイル」を処理する場合、部分総和を保存しより高い効率を求めて再利用することができる。スーパーピクセル畳み込みニューラルネットワーク層を用いて入力を処理することについては、以下で図２を参照しながらより詳細に説明する。
【００４５】
いくつかの実装例において、スーパーピクセル畳み込みニューラルネットワーク層１１０は、スーパーピクセル出力を受けこの受けたスーパーピクセル出力を通常の順序の出力に変換するように構成されたスーパーピクセルアンフォーマッターを含み得る。たとえば、現在のスーパーピクセル畳み込みニューラルネットワーク層が４×４のスーパーピクセル出力を生成するのに対し、次のスーパーピクセル畳み込みニューラルネットワーク層が８×８のスーパーピクセルを処理するように構成されている場合、システムは、スーパーピクセルアンフォーマッターを使用することにより、４×４のスーパーピクセルを８×８のスーパーピクセルに変換することができる。いくつかの実装例において、スーパーピクセル畳み込みニューラルネットワーク層、たとえば層１１０のための、スーパーピクセルアンフォーマッターは、スーパーピクセルウェイト行列、たとえばウェイト行列１１６に従い、ウェイト行列によって生成された出力のグループ解除を実行することができる。その他の実装例において、スーパーピクセル畳み込みニューラルネットワーク層のためのスーパーピクセルアンフォーマッターは、一連のスーパーピクセル畳み込みニューラルネットワーク層における次のスーパーピクセル畳み込みニューラルネットワーク層のためのスーパーピクセル生成器の一部として、またはそれとともに含めることができる。
【００４６】
スーパーピクセル畳み込みニューラルネットワーク層１１０は、一連のニューラルネットワーク層内のさまざまな場所において含まれ得る。いくつかの実装例において、複数のスーパーピクセル畳み込みニューラルネットワーク層が一連のニューラルネットワーク層に含まれていてもよい。たとえば、いくつかの実装例において、畳み込みニューラルネットワーク層ＡおよびＢのうちの１つ以上が、スーパーピクセル畳み込みニューラルネットワーク層であってもよい。複数のスーパーピクセル畳み込みニューラルネットワーク層が一連のニューラルネットワーク層に含まれる実装例において、各スーパーピクセル畳み込みニューラルネットワーク層は、受けた入力に対してそれぞれの変換を適用することにより、それぞれのスーパー入力を生成することができ、生成したそれぞれのスーパー入力は、サイズが異なるスーパー入力を含み得る。
【００４７】
複数のスーパーピクセル畳み込みニューラルネットワーク層からなるシステムのレイアウトの一例を以下の表に示す。
【００４８】
【表１】
2019527420.tif 000006
【００４９】
上記レイアウトの一例において、ほとんどのニューラルネットワーク層は、１層当たり８×８セットのスーパーピクセルを含む。１スーパーピクセル当たりのピクセルの数は、カーネルストライド処理に応じて調整される。「元の入力深さ（Ｚ）」の欄は、元のニューラルネットワークモデルの入力の深さを示し、「変換後の入力深さ（Ｕ）」の欄は、入力およびウェイトを、指定された１スーパーピクセル当たりのピクセルを用いて変換した後の入力の深さを示す。
【００５０】
複数のスーパーピクセル畳み込みニューラルネットワーク層からなるシステムのレイアウトの第２の例を以下の表に示す。
【００５１】
【表２】
2019527420.tif 000007
【００５２】
スーパーピクセル畳み込みニューラルネットワークシステム１００は、ニューラルネットワーク層のパラメータのトレーニング後の値を求めるために、すなわちパラメータの値を初期値からトレーニング後の値に調整するために、トレーニング例の複数回のバッチでトレーニングすることができる。たとえば、トレーニング中に、スーパーピクセル畳み込みニューラルネットワークシステム１００は、トレーニング例のバッチを処理しこのバッチ内のトレーニング例ごとにそれぞれのニューラルネットワークを生成することができる。次に、ニューラルネットワーク出力を用い、たとえば従来の勾配降下および逆伝搬ニューラルネットワークトレーニング技術を通して、スーパーピクセル畳み込みニューラルネットワークシステム１００の構成要素のパラメータの値を調整することができる。修正されたウェイト行列は、逆伝搬トレーニングプロセス中に、元のウェイト各々のＮＭ個のコピーを作るので（ＮおよびＭは、以下で図２のステップ２０２を参照しながら説明するスーパーピクセルサイズを表す）、システムは、ＮＭ個のコピーすべてにわたってウェイト勾配を追加することにより、元のウェイト各々の正味の値変化を求めることができる。スーパーピクセルニューラルネットワーク層のトレーニングは、深さの大きさまたは指標よりも空間の大きさまたは指標を優先し得る、逆プロセスである。
【００５３】
ニューラルネットワークのトレーニングが完了すると、スーパーピクセル畳み込みニューラルネットワークシステム１００は、処理対象の新たなニューラルネットワーク入力を受け、このニューラルネットワーク入力を、スーパーピクセル畳み込みニューラルネットワークシステム１００の構成要素のパラメータのトレーニングされた値に従い、ニューラルネットワーク層を通して処理することにより、入力用の新たなニューラルネットワーク出力を生成することができる。
【００５４】
いくつかの実装例において、スーパーピクセルニューラルネットワークシステム１００は、１つ以上の逆畳み込みニューラルネットワーク層を含み得る。これらの場合においては、上記構成要素および技術を逆にすることにより、同一の降下を得ることができる、すなわち、スーパーピクセル逆畳み込みニューラルネットワーク層は、深さの大きさまたは指標よりも空間の大きさまたは指標を優先して、複数の入力をグループ化し、それに応じてそれぞれの逆畳み込みニューラルネットワーク層ウェイト行列を修正することができる。
【００５５】
図１Ｂは、畳み込みニューラルネットワーク層とスーパーピクセル畳み込みニューラルネットワーク層との関係を示す図１６０である。
【００５６】
図１６０に示されるように、畳み込みニューラルネットワーク層は、入力された活性化Ｉおよびウェイト行列Ｗに対して畳み込み演算「ｃｏｎｖｏｌｖｅ」１６２を実行することにより、層出力として活性化Ｏ  １６４を生成するように構成することができる。
【００５７】
同様に、スーパーピクセル畳み込みニューラルネットワーク層、たとえば図１Ａを参照しながら先に説明した修正または変換された畳み込みニューラルネットワーク層は、変換された入力活性化Ｔｒａｎｓｆｏｒｍ（Ｉ）および変換されたウェイト行列Ｔｒａｎｓｆｏｒｍ（Ｗ）に対して畳み込み演算「ｃｏｎｖｏｌｖｅ」１６８を実行することにより、変換された層出力として活性化１７０を生成するように構成することができる。
【００５８】
図１６０は、入力Ｉを変換された入力Ｔｒａｎｓｆｏｒｍ（Ｉ）に接続しウェイト行列Ｗを変換されたウェイト行列Ｔｒａｎｓｆｏｒｍ（Ｗ）に接続する２つの準同型矢印を示す。これらの準同型矢印は、元の畳み込みニューラルネットワーク層と修正された畳み込みニューラルネットワーク層との準同型関係を表す。これらの矢印は、たとえば、元のモデル活性化およびウェイトを、修正または変換されたモデル活性化およびウェイトにマッピングする。同様に、図１６０は、変換された出力Ｔｒａｎｓｆｏｒｍ（Ｏ）を出力Ｏに接続する逆準同型矢印を示している。逆準同型は、元の畳み込みニューラルネットワーク層と修正された畳み込みニューラルネットワーク層との逆準同型関係を表す。この矢印は、たとえば、逆に、変換された出力を元の出力にマッピングする。
【００５９】
元のモデル活性化を変換するためのアルゴリズムの一例は以下の通りである。
【００６０】
【数３】
2019527420.tif 000008
【００６１】
逆準同型のアルゴリズムの一例は次の通りである。
【００６２】
【数４】
2019527420.tif 000009
【００６３】
図１６０に示されるように、スーパーピクセル畳み込みニューラルネットワーク層を用いて畳み込みニューラルネットワーク層出力を生成するのに必要な演算の数は、対応する元のニューラルネットワーク層が必要とする演算数よりも多い可能性がある。なぜなら、入力Ｉおよびウェイト行列Ｗは、畳み込みを適用する前に変換しておく必要がある場合があるからである。しかしながら、このより多い数の演算を実行するスーパーピクセル畳み込みニューラルネットワーク層アーキテクチャは、対応する元のニューラルネットワーク層が実行するより少ない数の演算よりも、実行時の計算速度は速いであろう。
【００６４】
図２は、プロセスの一例２００のフロー図であり、このプロセスは、Ｘ×Ｙ×ＺＺ入力テンソルを受けこの受けた入力テンソルを１つ以上の畳み込みニューラルネットワーク層ウェイト行列を用いて処理することによりＵ×Ｖ×Ｗ出力テンソルを生成するように構成された畳み込みニューラルネットワーク層の計算を効率良く実行するためのプロセスである。便宜上、プロセス２００を、１つ以上の場所に配置された１つ以上のコンピュータからなるシステムによって実行されるものとして説明する。例として、本明細書に従い適切にプログラムされたスーパーピクセル畳み込みニューラルネットワークシステム、たとえば図１Ａのスーパーピクセル畳み込みニューラルネットワークシステム１００は、プロセス２００を実行することができる。
【００６５】
本システムは、Ｘ×Ｙ×Ｚ入力テンソルをＸ’×Ｙ’×Ｚ’スーパーピクセル入力テンソルに変換する（ステップ２０２）。このシステムは、入力テンソルを、空間の大きさまたは指標よりも深さの大きさまたは指標を優先して複数の入力をグループ化することにより、変換する。たとえば、Ｘ’×Ｙ’×Ｚ’入力テンソルは、Ｘ×Ｙ×Ｚ入力テンソルと異なる次元を有し得る。より具体的には、Ｘ’はＸ以下であってもよく、Ｙ’はＹ以下であってもよく、Ｚ’はＺ以上であってもよい。いくつかの実装例において、Ｘ’は、自然数Ｎで割ったＸのシーリング（ceiling）、たとえば、自然数Ｎで割ったＸ以上の最小整数に等しく、Ｙ’は、自然数Ｍで割ったＹのシーリングに等しく、Ｚ’はＺにＮＭを掛けたものに等しい。
【００６６】
Ｘ×Ｙ×Ｚ入力テンソルは、ＸＹ第１入力を表すことができる。たとえば、Ｘ×Ｙ×Ｚ入力テンソルは、特徴深さＺのＸ×Ｙピクセルの画像を表すことができる。同様に、Ｘ’×Ｙ’×Ｚ’入力テンソルは、Ｘ’Ｙ’スーパー入力を表すことができ、各スーパー入力は複数の第１入力を含む。たとえば、Ｘ’×Ｙ’×Ｚ’入力テンソルは、深さＺ’のＸ’×Ｙ’スーパーピクセルの画像を表すことができる。いくつかの実装例において、複数の第１入力の数はＮＭ個の入力に等しい。たとえば、各スーパー入力はＮＭ個の第１入力で構成されていてもよい。入力テンソルの変換の一例が下記図３に示される。
【００６７】
このシステムは、１つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得する（ステップ２０４）。この修正されたウェイト行列は、Ｘ’×Ｙ’×Ｚ’入力テンソルに対して作用することにより、Ｕ’×Ｖ’×Ｗ’出力テンソルを生成する。いくつかの実装例において、Ｘ’×Ｙ’×Ｚ’入力テンソルに対する修正されたウェイト行列の作用は、Ｘ×Ｙ×Ｚ入力テンソルに対する畳み込みニューラルネットワーク層ウェイト行列の作用と同等であり、たとえば、Ｘ’×Ｙ’×Ｚ’入力テンソルに対する修正されたウェイト行列の作用により同じ効果が得られる。Ｕ’×Ｖ’×Ｗ’出力テンソルは、変換されたＵ×Ｖ×Ｗ出力テンソルを含み得る。Ｕ’はＵ以下、Ｖ’はＶ以下、Ｗ’はＷ以上である。たとえば、Ｕ’×Ｖ’×Ｗ’出力テンソルは、Ｕ×Ｖ×Ｗ出力テンソルからの複数の出力をグループ化したものを表すことができ、この場合、先に述べたように空間の大きさまたは指標よりも深さの大きさまたは指標が優先されている。
【００６８】
修正されたウェイト行列のエントリは、１つ以上の畳み込みニューラルネットワーク層ウェイト行列を含み、たとえば、修正されたウェイト行列は、ブロックまたはサブ行列と呼ばれるセクションに分割されたものと解釈することができるブロック行列を含み得る。いくつかの実装例において、修正されたウェイト行列のエントリはバンド構造を示し得る。たとえば、畳み込みニューラルネットワーク層は、各入力が各出力に接続されている全結合行列で表すことができる。全結合行列はバンド構造を示す。バンド構造の場合、行列のほとんどのエントリがゼロであり行列内の小数の斜めバンドが非ゼロエントリを有する。
【００６９】
一般的に、１つの次元について、修正されたカーネル要素の数は、ｃｅｉｌｉｎｇ（（スーパー入力サイズ＋元の畳み込みニューラルネットワーク層カーネル幅−１）/スーパー入力サイズ）（ceiling((superinput_size + original convolutional neutral network layer kernel width - 1)/superinput_size））に等しいであろう。畳み込みニューラルネットワーク層ウェイト行列の修正は、以下で図４を参照しながら説明する。
【００７０】
任意で、このシステムは、畳み込みニューラルネットワーク層に対して効率的なカーネルストライド処理を実現できる（ステップ２０６）。たとえば、いくつかの実装例において、畳み込みニューラルネットワーク層はプーリングサブ層を含み得る。これらの場合において、このシステムは、プーリングサブ層を、変換された入力テンソルＸ’×Ｙ’×Ｚ’に対するストライド処理に置き換えることができる。たとえば、以下でステップ２０８を参照しながら説明するように、いくつかの実装例において、Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表すことができ、Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表すことができ、各スーパー出力は複数の第１出力を含む。このような場合において、実現される効率的なカーネルストライド処理サイズは、複数の第１出力の出力数に等しくなくてもよい。カーネルストライド処理の効果は修正されたウェイト行列に組み入れることができる。たとえば、（未変換の）畳み込みニューラルネットワーク層は、畳み込みをそれぞれの入力Ｉおよびそれぞれのウェイト行列Ｗに適用するとともに畳み込まれた入力Ｉおよびウェイト行列Ｗにストライド処理を適用することによって、すなわち２つの作業を実行することによって層出力Ｏを生成することができる。ストライド処理を伴う変換されたスーパーピクセル畳み込みニューラルネットワーク層は、変換されたそれぞれの入力ｔｒａｎｓｆｏｒｍ（Ｉ）と、ストライド処理され変換されたウェイト行列ｓｔｒｉｄｅｄ＿ｔｒａｎｓｆｏｒｍ（２，Ｗ）とに、畳み込みを適用することによって、変換された層出力ｔｒａｎｓｆｏｒｍ（Ｏ）を生成することができる。
【００７１】
いくつかの実装例において、畳み込みニューラルネットワーク層は、カーネルストライド処理を既に含んでいる場合がある。これらの場合において、システムは、このカーネルストライド処理を効率的なカーネルストライド処理に置き換えてもよい。システムは、異なる入力および出力スーパーピクセルサイズを用いることによって効率的なカーネルストライド処理を実現することができ、スーパーピクセルサイズの比率はストライドに等しい。たとえば、畳み込みニューラルネットワーク層がＸ次元のストライドＳおよびＹ次元のストライドＴを含み、出力スーパーピクセルサイズ（Ｎ／Ｓ）（Ｍ／Ｔ）を選択することによって、畳み込みニューラルネットワーク層を、スーパーピクセル入力のサイズがＮＭであるスーパーピクセル畳み込みニューラルネットワーク層に変換した場合、システムは、スーパーピクセル修正ウェイト行列のカーネルストライド処理を実現する。いくつかの実装例において、ストライドＳと、出力テンソルＵ×Ｖ×Ｗと、変換された出力テンソルＵ’×Ｖ’×Ｗ’との関係は、Ｕ’＝ｃｅｉｌｉｎｇ（Ｕ／ＮＭ）およびＶ’＝ｃｅｉｌｉｎｇ（Ｖ／ＭＴ）によって示すことができる。効率的なカーネルストライド処理の実現を、以下で図５を参照しながら説明する。
【００７２】
本システムは、Ｘ’×Ｙ’×Ｚ’入力テンソルを、修正されたウェイト行列を用いて処理することにより、変換された畳み込みニューラルネットワーク層出力、たとえばＵ’×Ｖ’×Ｗ’出力テンソルを生成する（ステップ２０８）。Ｕ’×Ｖ’×Ｗ’出力テンソルは、Ｕ×Ｖ×Ｗ出力テンソルを含み、たとえば、Ｕ’×Ｖ’×Ｗ’出力テンソルは、Ｕ×Ｖ×Ｗ出力テンソルを含む出力のスーパーセットを含み得る。
【００７３】
Ｕ’×Ｖ’×Ｗ’出力テンソルは、Ｕ×Ｖ×Ｗ出力テンソルと異なる次元を有し得る。より具体的には、Ｕ’は、自然数Ｐで割ったＵのシーリングに等しくてもよく、Ｖ’は自然数Ｑで割ったＶのシーリングに等しくてもよく、Ｗ’はＷにＰＱを掛けたものに等しくてもよい。いくつかの実装例において、自然数ＰおよびＱはそれぞれ、ステップ２０２を参照しながら先に説明した自然数ＮおよびＭに等しくてもよい。加えて、いくつかの実装例において、現在のスーパーピクセル畳み込みニューラルネットワーク層のＰおよびＱは、たとえば本システムが現在のスーパーピクセル畳み込みニューラルネットワーク層と次のスーパーピクセル畳み込みニューラルネットワーク層との間においてスーパーピクセル生成器およびスーパーピクセルアンフォーマッターを含まない場合、次のスーパーピクセル畳み込みニューラルネットワーク層のＮおよびＭに等しくてもよい。
【００７４】
Ｕ×Ｖ×Ｗ出力テンソルは、深さＷのＵＶ第１出力を表すことができる。たとえば、Ｕ×Ｖ×Ｗ出力テンソルは、深さＷのＵ×Ｖ出力の特徴マップを表すことができる。同様に、Ｕ’×Ｖ’×Ｗ’出力テンソルは、Ｕ’Ｖ’スーパー出力を表すことができ、各スーパー出力は複数の第１出力を含む。たとえば、Ｕ’×Ｖ’×Ｗ’出力テンソルは、深さＷ’のＵ’×Ｖ’ピクセルの画像を表すことができる。いくつかの実装例において、複数の第１出力の数は、Ｐ×Ｑ個の出力ピクセルに等しく、たとえば、各スーパー出力はＰＱ個の第１出力で構成されていてもよい。
【００７５】
自然数ＰおよびＱは、ステップ２０２を参照しながら先に説明した自然数ＮおよびＭと異なっていてもよい。たとえば、上記スーパー入力のサイズはスーパー出力のサイズと同一でなくてもよい。いくつかの実装例において、複数の第１出力の中の第１出力の数、たとえばスーパー出力のサイズは、畳み込みニューラルネットワーク層ウェイト行列の次元に依存する。いくつかの実装例において、複数の第１出力の中の出力の数は、（ｉ）畳み込みニューラルネットワーク層のアーキテクチャ、（ｉｉ）畳み込みニューラルネットワーク層を含むニューラルネットワークモデルのアーキテクチャ、または（ｉｉｉ）畳み込みニューラルネットワーク層を実現する装置、のうちの１つ以上に依存する。
【００７６】
一例として、最初の畳み込み層の入力サイズがＸ×Ｙ×Ｚであり生成する出力サイズがＵ×Ｖ×Ｗであり、かつ、スーパーピクセル変換畳み込み層の入力サイズがＸ’×Ｙ’×Ｚ’であり生成する出力サイズがＵ’×Ｖ’×Ｗ’であると仮定する。ＫＬがウェイト行列における畳み込みカーネル要素の数を表し、Ｋ’Ｌ’が修正されたウェイト行列における畳み込みカーネル要素の数を表すとする。さらに、入力および出力ピクセル／スーパーピクセルは同一でありＮおよびＭで指定されると想定する。そうすると、Ｕ’＝ｃｅｉｌｉｎｇ（Ｕ／Ｎ）、Ｖ’＝ｃｅｉｌｉｎｇ（Ｖ／Ｍ）、Ｗ’＝Ｗ×Ｎ×Ｍである。加えて、Ｋ’＝ｃｅｉｌｉｎｇ（（Ｎ＋Ｋ−１）／Ｎ）およびＬ’＝ｃｅｉｌｉｎｇ（（Ｍ＋Ｌ−１）／Ｎ）となる。ＰＱがＮＭに等しくない可能性があるケースは、本システムがカーネルストライド処理を実施している可能性がある場合、または、変換されたスーパーピクセル当たりのピクセルの数が入力から出力へと変化したケースを含む。
【００７７】
図３は、スーパーピクセル入力テンソル変換の図解の一例３００である。たとえば、この図解の一例は、図２のステップ２０２を参照しながら先に説明したスーパーピクセル入力テンソル変換を示す。示されている変換は、１つ以上の場所に配置された１つ以上のコンピュータからなるシステムによって実行することができる。例として、本明細書に従い適切にプログラムされたスーパーピクセル生成器、たとえば図１Ａのスーパーピクセル生成器１１４は、図解されている変換を実行することができる。
【００７８】
この図解の例は、一例としてのＸ×Ｙ×Ｚ入力テンソル３０２を示す。図３に示されるように、入力テンソルは、各々が深さＺであるＸＹ入力を含む。図２を参照しながら先に説明したように、Ｘ×Ｙ×Ｚ入力テンソルは、複数の入力をグループ化することにより、Ｘ’×Ｙ’×Ｚ’スーパーピクセル入力テンソルに変換することができる。このグループ化の間、空間次元（ＸおよびＹ次元）における指標またはレイアウトよりも、深さ次元（Ｚ次元）における指標または大きさが優先される。一例としての図解３００において、Ｘ×Ｙ×Ｚ入力テンソルは、Ｘ／２×Ｙ／２×４Ｚスーパーピクセル入力テンソル３０４に変換されている。図３に示されるように、スーパーピクセル入力テンソルは、各々が深さ４Ｚである（Ｘ／２）（Ｙ／２）入力を含む。入力テンソル３０４に含まれる各スーパーピクセル入力は、元の入力４個を表し、このため、元の入力によって表されるデータの量の４倍を表すことになる。
【００７９】
図４は、畳み込みニューラルネットワーク層ウェイト行列修正の図解の一例４００である。たとえば、この図解の一例は、図２のステップ２０４を参照しながら先に説明した畳み込みニューラルネットワーク層ウェイト行列修正を示す。示されている修正は、１つ以上の場所に位置する１つ以上のコンピュータからなるシステムによって実行することができる。例として、本明細書に従い適切にプログラムされたスーパーピクセル畳み込みニューラルネットワーク層、たとえば図１Ａのスーパーピクセル畳み込みニューラルネットワーク層１１０は、図解されている修正を実行することができる。
【００８０】
ステップ（ａ）で、この図解の一例４００は、畳み込みニューラルネットワーク層の３×３カーネルパッチ４０２を示し、このカーネルパッチの各要素は２次元ウェイト行列を含み、次元は、行列乗算に適した元の入力深さ×元の出力深さ、たとえばＺ×Ｗに等しい。この図解の一例はさらに、入力を表す２×２格子４０４〜４１０を示す。入力は、２×２スーパー入力になるようにグループ化され、各スーパー入力は、元の２×２入力を含む。この図解の一例は、４つの元の出力を含むスーパー出力４１２を示す。
【００８１】
ステップ（ｂ）において、図解の一例４００は、ステップ（ａ）において示すものと同一の２次元畳み込みを、４つの元の出力の各々のドット積計算に拡張したものを示す。２×２格子の背後にあるシェーディング、たとえばシェーディング４１４は、入力データのうちのどの３×３サブセットが各出力に影響するかを示す。各格子に対するシェーディングが示すように、すべてのスーパー入力がすべての出力に影響するが、各スーパー入力の有用な分数は９／１６である。
【００８２】
ステップ（ｃ）において、図解の一例４００は、一例としての、修正された２次元ウェイト行列４１６〜４２２を示す。これらのウェイト行列を用いることによりスーパー出力を計算することができる。行列４１６〜４２２は各々、２×２の修正されたカーネルパッチを構成するカーネル要素である。行列４１６〜４２２の次元は４Ｚ×４Ｗであり、したがって、カーネルパッチ４０２の元の２次元行列の１６倍の大きさである。縦軸は、入力深さ、スーパー入力内の入力、およびカーネル要素を表す。横軸は、出力深さ、およびスーパー出力内の出力を表す。この図解例は、ステップ（ｃ）において、行列乗算を示している。カラム４２４は入力を表し、入力が、修正されたウェイト行列４１６〜４２２のエントリと同一高さで示されている場合、これはこのウェイトで乗算される。１カラム内のウェイトと入力との積をすべて加算することにより、スーパー出力内の出力の合計値を得る。合計４つのスーパー入力、たとえば１つのスーパー出力、たとえば４つの元の出力、の計算に寄与する１６個の元の入力が示されている。
【００８３】
４つのスーパー入力は各々、スーパー出力に対し、異なるＸおよびＹ座標関係を有する。説明のために、図４は１スーパーピクセル当たり２×２ピクセルを示し、２×２セットのスーパーピクセルを示す。よって、２×２＝４個のウェイト行列が描かれている。１スーパーピクセル当たりおよび１セットのスーパーピクセル当たりのピクセルの数は、たとえば、他の要素のうちでも特にシステムアーキテクチャに基づいて変化し得る。たとえば、場合によっては、１スーパーピクセル当たり４×４ピクセルがあってもよく、１００×１００スーパーピクセル（よって４００×４００の元の入力ピクセル）からなる大きな画像サイズであってもよい。この場合、各次元において、ｃｅｉｌｉｎｇ（（スーパーピクセル当たりのピクセル＋カーネルサイズ−１）／スーパーピクセル当たりのピクセル）(ceiling（(pixels_per_superpixel + kernel_size - 1) / pixels_per_superpixel）)が２以下である限り、２×２＝４のウェイト行列がなおも存在するであろう。
【００８４】
先に述べたように、修正されたウェイト行列はカーネル要素である。この点について、修正プロセスは、入力に対する３×３畳み込みをスーパー入力に対する２×２畳み込みに変更することによりパッチ内のカーネル要素の数を減じたものとみなすことができ、各カーネル要素は、より大きな２次元行列である、たとえば、行および列（入力深さＺおよび出力深さＷに対応）いずれにおいても４倍の大きさである。積み重ねられている修正されたウェイト行列４１６〜４２２は、３×３カーネル４０２の要素各々の１つのコピーを含む。いくつかの実装例において、修正されたウェイト行列は、例として対角線方向において同様にラベル付けされたカーネル要素、たとえば対角線４２６によって示されるように、バンド構造を示し得る。
【００８５】
図５は、スーパーピクセルカーネルストライド処理を含む畳み込みニューラルネットワーク層ウェイト行列修正の図解の一例５００である。たとえば、この図解の一例は、図２のステップ２０６を参照しながら先に述べたカーネルストライド処理を効率的に実現したものを示す。示されている実装例は、１つ以上の場所に位置する１つ以上のコンピュータからなるシステムによって実行することができる。例として、本明細書に従い適切にプログラムされたスーパーピクセル畳み込みニューラルネットワーク層、たとえば図１Ａのスーパーピクセル畳み込みニューラルネットワーク層１１０は、図解されている実装を実施することができる。
【００８６】
図解の一例５００はウェイト図を示し、それとともに、その要素が２次元ウェイト行列でありその次元が元の入力深さ×元の出力深さたとえばＺ×Ｗに等しい、５×５カーネルパッチ５０６と、各々が４×４の元の入力を含む４×４スーパー入力５０２と、各々が２×２の元の出力を含む２×２スーパー出力５０４とを示す。カーネルストライドの一例は、２×２である。図解の一例５００は、４つのスーパーピクセルカーネル要素５０８〜５１４を含む。各スーパーピクセルカーネル要素は１６Ｚ×４Ｗ行列である。入力／スーパー入力対出力／スーパー出力は、２×２カーネルストライドによって変化しているので、各１６入力に対して４出力しかない。
【００８７】
本明細書に記載の主題の実施形態および機能的動作は、デジタル電子回路において、有形的に実現されたコンピュータソフトウェアまたはファームウェアにおいて、本明細書に開示されている構造およびその構造的均等物を含むコンピュータハードウェアにおいて、または、これらのうちの１つ以上を組み合わせたものにおいて、実現することができる。本明細書に記載の主題の実施形態は、１つ以上のコンピュータプログラムとして、すなわち、データ処理装置によって実行されるまたはデータ処理装置の動作を制御するための有形の非一時的なプログラムキャリア上で符号化されたコンピュータプログラム命令の１つ以上のモジュールとして、実現することができる。これに代えてまたはこれに加えて、プログラム命令は、データ処理装置による実行のために適切な受信装置に送信される情報を符号化するために生成された、人為的に生成された伝搬信号、たとえばマシンによって生成された電気、光、または電磁信号上で符号化することができる。コンピュータ記憶媒体は、マシン読取可能記憶媒体、マシン読取可能記憶基盤、ランダムもしくはシリアルアクセスメモリデバイス、または、これらのうちの１つ以上を組み合わせたものであってもよい。しかしながら、コンピュータ記憶媒体は伝搬信号ではない。
【００８８】
「データ処理装置」という用語は、例としてプログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データ処理用のすべての種類の装置、デバイス、およびマシンを包含する。この装置は、専用論理回路たとえばＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）を含み得る。この装置はまた、ハードウェアに加えて、当該コンピュータプログラムのために実行環境を作成するコード、たとえばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはこれらのうちの１つ以上の組み合わせを構成するコードを含み得る。
【００８９】
コンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードと呼ぶ、またはそういうものとして説明することもできる）は、コンパイルもしくはインタプリタ言語、または宣言型もしくは手続型言語を含む、任意のプログラミング言語形態で記述することができ、また、スタンドアロンプログラムとしてまたはモジュールとして、コンポーネント、サブルーチン、または計算環境で使用するのに適したその他のユニットを含む、任意の形態でデプロイすることができる。コンピュータプログラムはファイルシステム内のファイルに対応していてもよいがそうでなくてもよい。プログラムは、その他のプログラムまたはデータを保持する、たとえばマークアップ言語文書に保存されている１つ以上のスクリプトを保持するファイルの一部に、または当該プログラム専用の１つのファイルに、または連携している複数のファイル、たとえば１つ以上のモジュール、サブプログラム、またはコードの一部を保存する複数のファイルに、格納することができる。
【００９０】
本明細書で使用する「エンジン」または「ソフトウェアエンジン」は、入力と異なる出力を提供する、ソフトウェアによって実現される入出力システムのことを言う。エンジンは、ライブラリ、プラットフォーム、ソフトウェア開発キット（software development kit：「ＳＤＫ」）またはオブジェクト等の機能の符号化ブロックであってもよい。各エンジンは、適切な任意の種類の計算装置上で実現することができ、この計算装置は、たとえば、サーバ、携帯電話、タブレットコンピュータ、ノートブックコンピュータ、音楽再生機器、電子書籍リーダー、ラップトップもしくはデスクトップコンピュータ、ＰＤＡ、スマートフォン、または、１つ以上のプロセッサとコンピュータ読取可能媒体とを含むその他の静止もしくは移動デバイスである。加えて、エンジンの２つ以上は、同一の計算装置上で実現されても、異なる計算装置上で実現されてもよい。
【００９１】
本明細書に記載のプロセスおよび論理フローは、入力データに対して作用し出力を生成することによって機能を果たすために１つ以上のコンピュータプログラムを実行する１つ以上のプログラマブルコンピュータによって実行することができる。プロセスおよび論理フローは、専用ロジック回路たとえばＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）によって実行されてもよく、装置は、専用ロジック回路たとえばＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）として実現されてもよい。
【００９２】
コンピュータプログラムの実行に適したコンピュータは、一例として、汎用もしくは専用マイクロプロセッサまたはこれら双方に基づいていてもよく、または、その他任意の種類の中央処理装置に基づいていてもよい。一般的に、中央処理装置は、命令およびデータを、読み取り専用メモリまたはランダムアクセスメモリまたはこれら双方から受ける。コンピュータの必須要素は、命令を実施または実行するための中央処理装置と、命令およびデータを格納するための１つ以上のメモリデバイスとである。一般的に、コンピュータは、データを格納するための１つ以上の大量記憶装置たとえば磁気、光磁気ディスク、または光ディスクを含む、または、上記大量記憶装置からデータを受ける、これにデータを転送する、またはこれら双方のために、上記大量記憶装置に作動的に結合される。しかしながら、コンピュータはこのようなデバイスを有していなくてもよい。加えて、コンピュータは別のデバイスに、たとえば、例を挙げると、携帯電話、携帯情報端末（ＰＤＡ）、モバイルオーディオまたはビデオプレーヤー、ゲーム機、グローバルポジショニングシステム（ＧＰＳ）受信機、またはポータブル記憶装置たとえばユニバーサル・シリアル・バス（ＵＳＢ）フラッシュデバイスに、埋め込まれていてもよい。
【００９３】
コンピュータプログラム命令およびデータを格納するのに適したコンピュータ読取可能媒体は、すべての形態の不揮発性メモリ、媒体およびメモリデバイスを含み、これは、一例として、半導体メモリデバイスたとえばＥＰＲＯＭ、ＥＥＰＲＯＭ、およびフラッシュメモリデバイス、磁気ディスクたとえば内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにＣＤ  ＲＯＭおよびＤＶＤ−ＲＯＭディスクを含む。プロセッサおよびメモリに、専用論理回路を補充してもよく、専用論理回路にプロセッサおよびメモリが組み込まれていてもよい。
【００９４】
ユーザとのやり取りために、本明細書に記載の主題の実施形態は、ユーザに対して情報を表示するためのディスプレイデバイスたとえばＣＲＴ（陰極線管）またはＬＣＤ（液晶ディスプレイ）モニタと、ユーザがコンピュータに入力を与えることができるようにするためのキーボードおよびポインティングデバイスたとえばマウスまたはトラックボールとを有するコンピュータ上で実現することができる。その他の種類のデバイスを用いてユーザとのやり取りが行われるようにしてもよい。たとえば、ユーザに与えられるフィードバックは、任意の形態の感覚フィードバックたとえば視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってもよく、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受けることができる。加えて、コンピュータは、ユーザとの対話を、ユーザが使用するデバイスに文書を送信するかまたはこのデバイスから文書を受信することによって、たとえば、ウェブブラウザから受信した要求に応じてユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによって、実現してもよい。
【００９５】
本明細書に記載の主題の実施形態は、たとえばデータサーバとしてバックエンドコンポーネントを含む計算システム、または、ミドルウェアコンポーネントたとえばアプリケーションサーバを含む計算システム、または、フロントエンドコンポーネント、たとえば、本明細書に記載の主題を実現したものとユーザとのやり取りを可能にするためのグラフィカルユーザインターフェイスもしくはウェブブラウザを有するクライアントコンピュータを含む計算システム、または、このようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントのうちの１つ以上の任意の組み合わせを含む計算システムにおいて、実現することができる。当該システムのコンポーネントは、デジタルデータ通信の形態または媒体たとえば通信ネットワークによって相互接続することができる。通信ネットワークの例は、ローカルエリアネットワーク（「ＬＡＮ」）およびワイドエリアネットワーク（「ＷＡＮ」）、たとえばインターネットを含む。
【００９６】
計算システムはクライアントとサーバとを含み得る。クライアントとサーバは、通常は互いに離れており、通信ネットワークを通してやり取りするのが一般的である。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されクライアントとサーバとの関係を有するコンピュータプログラムによって発生する。いくつかの実施形態において、サーバは、データ、たとえばＨＴＭＬページを、クライアントとして機能するユーザデバイスに、たとえばユーザデバイスとやり取りするユーザに対してデータを表示するためおよびユーザからユーザ入力を受けるために、送信する。ユーザデバイスにおいて、たとえばユーザとのやり取りの結果発生したデータは、サーバでユーザデバイスから受信することができる。
【００９７】
本明細書には実装の具体的詳細事項が多く含まれているが、これらは、どの発明の範囲またはクレームし得るものの範囲の限定としても解釈されてはならないものであって、むしろ、特定の発明の特定の実施形態に固有であり得る特徴の説明として解釈されるべきものである。本明細書において、別々の実施形態という観点で記載されている特定の特徴は、１つの実施形態において組み合わせ実現することも可能である。逆に、１つの実施形態という観点から記載されている各種特徴を、複数の実施形態において別々に、または任意の適切な下位の組み合わせとして実現することも可能である。加えて、上記特徴は、特定の組み合わせで機能するものとして記載され最初にそういうものとしてクレームされている場合があるが、クレームされている組み合わせに含まれる１つ以上の特徴は、場合によってはこの組み合わせから省略することができる。
【００９８】
同様に、動作は図面において特定の順序で示されているが、これは、このような動作が、示されている特定の順序もしくは連続した順序で実行されることを要する、または、示されているすべての動作が所望の結果を得るために実行されることを要する、と理解されてはならない。特定の状況ではマルチタスキングおよび並列処理が好都合である場合がある。加えて、上記実施形態における各種システムモジュールおよびコンポーネントの分離は、すべての実施形態においてこのような分離を要するものと理解されてはならない。記載されているプログラムコンポーネントおよびシステムは一般的に、１つのソフトウェアプロダクトに統合できる、または、パッケージングして複数のソフトウェアプロダクトにできることが、理解されるはずである。
【００９９】
開示されている技術のさらに他の実装例を以下の例で説明する。
例１：畳み込みニューラルネットワーク層の計算をより効率的に実行するためのコンピュータによって実施される方法であって、上記畳み込みニューラルネットワーク層は、Ｘ×Ｙ×Ｚ入力テンソルを受け１つ以上の畳み込みニューラルネットワーク層ウェイト行列を用いて上記受けた入力テンソルを処理することによりＵ×Ｖ×Ｗ出力テンソルを生成するように構成されており、上記方法は、上記Ｘ×Ｙ×Ｚ入力テンソルをＸ’×Ｙ’×Ｚ’入力テンソルに変換するステップを含み、Ｘ’はＸ以下、Ｙ’はＹ以下、Ｚ’はＺ以上であり、１つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得するステップを含み、（ｉ）上記修正されたウェイト行列は、上記Ｘ’×Ｙ’×Ｚ’入力テンソルに対して作用することにより、Ｕ’×Ｖ’×Ｗ’出力テンソルを生成し、（ｉｉ）上記Ｕ’×Ｖ’×Ｗ’出力テンソルは、変換されたＵ×Ｖ×Ｗ出力テンソルを含み、Ｕ’はＵ以下、Ｖ’はＶ以下、Ｗ’はＷ以上であり、上記修正されたウェイト行列を用いて上記Ｘ’×Ｙ’×Ｚ’入力テンソルを処理することにより上記Ｕ’×Ｖ’×Ｗ’出力テンソルを生成するステップを含み、上記Ｕ’×Ｖ’×Ｗ’出力テンソルは上記Ｕ×Ｖ×Ｗ出力テンソルを含む。
【０１００】
例２：Ｘ’は自然数Ｎで割ったＸのシーリング（ceiling）に等しく、Ｙ’は自然数Ｍで割ったＹのシーリングに等しく、Ｚ’はＺにＮＭを掛けたものに等しい、例１に記載の方法。
【０１０１】
例３：上記Ｘ×Ｙ×Ｚ入力テンソルはＸＹ第１入力を表し、上記Ｘ’×Ｙ’×Ｚ’入力テンソルはＸ’Ｙ’スーパー入力を表し、各スーパー入力は複数の第１入力を含む、例２に記載の方法。
【０１０２】
例４：上記複数の第１入力の数はＮＭ個の入力に等しい、例３に記載の方法。
例５：上記Ｘ’×Ｙ’×Ｚ’入力テンソルに対する上記修正されたウェイト行列の作用は、上記Ｘ×Ｙ×Ｚ入力テンソルに対する上記畳み込みニューラルネットワーク層ウェイト行列の作用と同等である、例１〜例４のいずれか１つに記載の方法。
【０１０３】
例６：上記修正されたウェイト行列のエントリは、１つ以上の畳み込みニューラルネットワーク層ウェイト行列を含む、例１〜例５のいずれか１つに記載の方法。
【０１０４】
例７：上記修正されたウェイト行列は、バンド構造を有する行列を含む、例１〜例６のいずれか１つに記載の方法。
【０１０５】
例８：Ｕ’は自然数Ｐで割ったＵのシーリング（ceiling）に等しく、Ｖ’は自然数Ｑで割ったＶのシーリングに等しく、Ｗ’はＷにＰＱを掛けたものに等しい、例１〜例７のいずれか１つに記載の方法。
【０１０６】
例９：上記畳み込みニューラルネットワーク層は、Ｘ次元のストライドＳとＹ次元のストライドＴとを含み、ストライドＳ、Ｔと、出力テンソルＵ×Ｖ×Ｗと、変換された出力テンソルＵ’×Ｖ’×Ｗ’との関係は、Ｕ’＝ｃｅｉｌｉｎｇ（Ｕ／ＮＳ）およびＶ’＝ｃｅｉｌｉｎｇ（Ｖ／ＭＴ）によって示される、例８に記載の方法。
【０１０７】
例１０：上記Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、上記Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含む、例８または例９に記載の方法。
【０１０８】
例１１：上記複数の第１出力はＰＱ個の出力に等しい、例１０に記載の方法。
例１２：上記畳み込みニューラルネットワーク層はプーリングサブ層を含む、例１〜例１１のいずれか１つに記載の方法。
【０１０９】
例１３：上記方法は、上記プーリングサブ層を、上記変換された入力テンソルに対するストライド処理に置き換えるステップをさらに含む、例１２に記載の方法。
【０１１０】
例１４：上記畳み込みニューラルネットワーク層はカーネルストライド処理を含み、上記方法は、上記変換された入力テンソルおよび修正されたウェイト行列に基づいて効率的なカーネルストライド処理を実施するステップをさらに含む、例１２または例１３に記載の方法。
【０１１１】
例１５：上記Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、上記Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含み、上記複数の第１出力の中の第１出力の数は、上記畳み込みニューラルネットワーク層ウェイト行列の次元に依存する、例１〜例１４のいずれか１つに記載の方法。
【０１１２】
例１６：上記Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、上記Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含み、上記複数の第１出力の中の出力の数は、（ｉ）上記畳み込みニューラルネットワーク層のアーキテクチャ、（ｉｉ）上記畳み込みニューラルネットワーク層を含むニューラルネットワークモデルのアーキテクチャ、または（ｉｉｉ）上記畳み込みニューラルネットワーク層を実現する装置、のうちの１つ以上に依存する、例１〜例１５のいずれか１つに記載の方法。
【０１１３】
例１７：上記１つ以上の畳み込みニューラルネットワーク層ウェイト行列の修正は、ソフトウェアのみの修正である、例１〜例１６のいずれか１つに記載の方法。
【０１１４】
例１８：１つ以上のコンピュータと１つ以上の記憶装置とを備えるシステムであって、上記１つ以上の記憶装置は、上記１つ以上のコンピュータによって実行されると上記１つ以上のコンピュータに動作を実行させる演算可能な命令を格納し、上記動作は、Ｘ×Ｙ×Ｚ入力テンソルを受け１つ以上の畳み込みニューラルネットワーク層ウェイト行列を用いて上記受けた入力テンソルを処理することによりＵ×Ｖ×Ｗ出力テンソルを生成するように構成された畳み込みニューラルネットワーク層の計算をより効率的に実行するための動作であり、上記動作は、上記Ｘ×Ｙ×Ｚ入力テンソルをＸ’×Ｙ’×Ｚ’入力テンソルに変換することを含み、Ｘ’はＸ以下、Ｙ’はＹ以下、Ｚ’はＺ以上であり、１つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得することを含み、（ｉ）上記修正されたウェイト行列は、上記Ｘ’×Ｙ’×Ｚ’入力テンソルに対して作用することにより、Ｕ’×Ｖ’×Ｗ’出力テンソルを生成し、（ｉｉ）上記Ｕ’×Ｖ’×Ｗ’出力テンソルは、変換されたＵ×Ｖ×Ｗ出力テンソルを含み、Ｕ’はＵ以下、Ｖ’はＶ以下、Ｗ’はＷ以上であり、上記修正されたウェイト行列を用いて上記Ｘ’×Ｙ’×Ｚ’入力テンソルを処理することにより上記Ｕ’×Ｖ’×Ｗ’出力テンソルを生成することを含み、上記Ｕ’×Ｖ’×Ｗ’出力テンソルは上記Ｕ×Ｖ×Ｗ出力テンソルを含む。
【０１１５】
例１９：Ｘ’は自然数Ｎで割ったＸのシーリング（ceiling）に等しく、Ｙ’は自然数Ｍで割ったＹのシーリングに等しく、Ｚ’はＺにＮＭを掛けたものに等しい、例１８に記載のシステム。
【０１１６】
例２０：上記Ｘ×Ｙ×Ｚ入力テンソルはＸＹ第１入力を表し、上記Ｘ’×Ｙ’×Ｚ’入力テンソルはＸ’Ｙ’スーパー入力を表し、各スーパー入力は複数の第１入力を含む、例１９に記載のシステム。
【０１１７】
例２１：上記複数の第１入力の数はＮＭ個の入力に等しい、例２０に記載のシステム。
例２２：上記Ｘ’×Ｙ’×Ｚ’入力テンソルに対する上記修正されたウェイト行列の作用は、上記Ｘ×Ｙ×Ｚ入力テンソルに対する上記畳み込みニューラルネットワーク層ウェイト行列の作用と同等である、例１８〜例２１のいずれか１つに記載のシステム。
【０１１８】
例２３：上記修正されたウェイト行列のエントリは、１つ以上の畳み込みニューラルネットワーク層ウェイト行列を含む、例１８〜例２２のいずれか１つに記載のシステム。
【０１１９】
例２４：上記修正されたウェイト行列は、バンド構造を有する行列を含む、例１８〜例２３のいずれか１つに記載のシステム。
【０１２０】
例２５：Ｕ’は自然数Ｐで割ったＵのシーリング（ceiling）に等しく、Ｖ’は自然数Ｑで割ったＶのシーリングに等しく、Ｗ’はＷにＰＱを掛けたものに等しい、例１８〜例２４のいずれか１つに記載のシステム。
【０１２１】
例２６：上記畳み込みニューラルネットワーク層は、Ｘ次元のストライドＳとＹ次元のストライドＴとを含み、ストライドＳ、Ｔと、出力テンソルＵ×Ｖ×Ｗと、変換された出力テンソルＵ’×Ｖ’×Ｗ’との関係は、Ｕ’＝ｃｅｉｌｉｎｇ（Ｕ／ＮＳ）およびＶ’＝ｃｅｉｌｉｎｇ（Ｖ／ＭＴ）によって示される，例２５に記載のシステム。
【０１２２】
例２７：上記Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、上記Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含む、例２５または例２６に記載のシステム。
【０１２３】
例２８：上記複数の第１出力はＰＱ個の出力に等しい、例２７に記載のシステム。
例２９：上記畳み込みニューラルネットワーク層はプーリングサブ層を含む、例１８に記載のシステム。
【０１２４】
例３０：上記動作は、上記プーリングサブ層を、上記変換された入力テンソルに対するストライド処理に置き換えることをさらに含む、例２９に記載のシステム。
【０１２５】
例３１：上記畳み込みニューラルネットワーク層はカーネルストライド処理を含み、上記方法は、上記変換された入力テンソルおよび修正されたウェイト行列に基づいて効率的なカーネルストライド処理を実施することをさらに含む、例１８〜例３０のいずれか１つに記載のシステム。
【０１２６】
例３２：上記Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、上記Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含み、上記複数の第１出力の中の第１出力の数は、上記畳み込みニューラルネットワーク層ウェイト行列の次元に依存する、例１８〜例３１のいずれか１つに記載のシステム。
【０１２７】
例３３：上記Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、上記Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含み、上記複数の第１出力の中の出力の数は、（ｉ）上記畳み込みニューラルネットワーク層のアーキテクチャ、（ｉｉ）上記畳み込みニューラルネットワーク層を含むニューラルネットワークモデルのアーキテクチャ、または（ｉｉｉ）上記畳み込みニューラルネットワーク層を実現する装置、のうちの１つ以上に依存する、例１８〜例３２のいずれか１つに記載のシステム。
【０１２８】
例３４：上記１つ以上の畳み込みニューラルネットワーク層ウェイト行列の修正は、ソフトウェアのみの修正である、例１８〜例３３のいずれか１つに記載のシステム。
【０１２９】
例３５：１つ以上のコンピュータによって実行されると上記１つ以上のコンピュータに動作を実行させる命令で符号化されたコンピュータ記憶媒体であって、上記動作は、Ｘ×Ｙ×Ｚ入力テンソルを受け１つ以上の畳み込みニューラルネットワーク層ウェイト行列を用いて上記受けた入力テンソルを処理することによりＵ×Ｖ×Ｗ出力テンソルを生成するように構成された畳み込みニューラルネットワーク層の計算をより効率的に実行するための動作であり、上記動作は、上記Ｘ×Ｙ×Ｚ入力テンソルをＸ’×Ｙ’×Ｚ’入力テンソルに変換することを含み、Ｘ’はＸ以下、Ｙ’はＹ以下、Ｚ’はＺ以上であり、１つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得することを含み、（ｉ）上記修正されたウェイト行列は、上記Ｘ’×Ｙ’×Ｚ’入力テンソルに対して作用することにより、Ｕ’×Ｖ’×Ｗ’出力テンソルを生成し、（ｉｉ）上記Ｕ’×Ｖ’×Ｗ’出力テンソルは、変換されたＵ×Ｖ×Ｗ出力テンソルを含み、Ｕ’はＵ以下、Ｖ’はＶ以下、Ｗ’はＷ以上であり、上記修正されたウェイト行列を用いて上記Ｘ’×Ｙ’×Ｚ’入力テンソルを処理することにより上記Ｕ’×Ｖ’×Ｗ’出力テンソルを生成することを含み、上記Ｕ’×Ｖ’×Ｗ’出力テンソルは上記Ｕ×Ｖ×Ｗ出力テンソルを含む。
【０１３０】
当該主題の具体的な実施形態は上に述べた通りである。その他の実施形態は以下の請求項の範囲に含まれる。たとえば、請求項に記載の動作は、異なる順序で実行されてそれでもなお所望の結果を得ることができる。一例として、添付の図面に記載されているプロセスは、必ずしも示されている通りの特定の順序または連続した順序によって所望の結果を得ることを要している訳ではない。特定の実装例において、マルチタスキングおよび並列処理が好都合である場合がある。
【図１Ａ】
2019527420.tif 000010
【図１Ｂ】
2019527420.tif 000011
【図２】
2019527420.tif 000012
【図３】
2019527420.tif 000013
【図４（ａ）】
2019527420.tif 000014
【図４（ｂ）】
2019527420.tif 000015
【図４（ｃ）】
2019527420.tif 000016
【図５】
2019527420.tif 000017
【手続補正書】
【提出日】平成31年4月25日(2019.4.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
畳み込みニューラルネットワーク層の計算をより効率的に実行するためのコンピュータによって実施される方法であって、前記畳み込みニューラルネットワーク層は、Ｘ×Ｙ×Ｚ入力テンソルを受け１つ以上の畳み込みニューラルネットワーク層ウェイト行列を用いて前記受けた入力テンソルを処理することによりＵ×Ｖ×Ｗ出力テンソルを生成するように構成されており、前記方法は、
前記Ｘ×Ｙ×Ｚ入力テンソルをＸ’×Ｙ’×Ｚ’入力テンソルに変換するステップを含み、Ｘ’はＸ以下、Ｙ’はＹ以下、Ｚ’はＺ以上であり、
１つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得するステップを含み、（ｉ）前記修正されたウェイト行列は、前記Ｘ’×Ｙ’×Ｚ’入力テンソルに対して作用することにより、Ｕ’×Ｖ’×Ｗ’出力テンソルを生成し、（ｉｉ）前記Ｕ’×Ｖ’×Ｗ’出力テンソルは、変換されたＵ×Ｖ×Ｗ出力テンソルを含み、Ｕ’はＵ以下、Ｖ’はＶ以下、Ｗ’はＷ以上であり、
前記修正されたウェイト行列を用いて前記Ｘ’×Ｙ’×Ｚ’入力テンソルを処理することにより前記Ｕ’×Ｖ’×Ｗ’出力テンソルを生成するステップを含み、前記Ｕ’×Ｖ’×Ｗ’出力テンソルは前記Ｕ×Ｖ×Ｗ出力テンソルを含む、方法。
【請求項２】
Ｘ’は自然数Ｎで割ったＸのシーリング（ceiling）に等しく、Ｙ’は自然数Ｍで割ったＹのシーリングに等しく、Ｚ’はＺにＮＭを掛けたものに等しい、請求項１に記載の方法。
【請求項３】
前記Ｘ×Ｙ×Ｚ入力テンソルはＸＹ第１入力を表し、前記Ｘ’×Ｙ’×Ｚ’入力テンソルはＸ’Ｙ’スーパー入力を表し、各スーパー入力は複数の第１入力を含む、請求項２に記載の方法。
【請求項４】
前記複数の第１入力の数はＮＭ個の入力に等しい、請求項３に記載の方法。
【請求項５】
前記Ｘ’×Ｙ’×Ｚ’入力テンソルに対する前記修正されたウェイト行列の作用は、前記Ｘ×Ｙ×Ｚ入力テンソルに対する前記畳み込みニューラルネットワーク層ウェイト行列の作用と同等である、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記修正されたウェイト行列のエントリは、１つ以上の畳み込みニューラルネットワーク層ウェイト行列を含む、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記修正されたウェイト行列は、バンド構造を有する行列を含む、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
Ｕ’は自然数Ｐで割ったＵのシーリング（ceiling）に等しく、Ｖ’は自然数Ｑで割ったＶのシーリングに等しく、Ｗ’はＷにＰＱを掛けたものに等しい、請求項１〜７のいずれか１項に記載の方法。
【請求項９】
前記畳み込みニューラルネットワーク層は、Ｘ次元のストライドＳとＹ次元のストライドＴとを含み、ストライドＳ、Ｔと、出力テンソルＵ×Ｖ×Ｗと、変換された出力テンソルＵ’×Ｖ’×Ｗ’との関係は、Ｕ’＝ｃｅｉｌｉｎｇ（Ｕ／ＮＳ）およびＶ’＝ｃｅｉｌｉｎｇ（Ｖ／ＭＴ）によって示される、請求項８に記載の方法。
【請求項１０】
前記Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、前記Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含む、請求項８または９に記載の方法。
【請求項１１】
前記複数の第１出力はＰＱ個の出力に等しい、請求項１０に記載の方法。
【請求項１２】
前記畳み込みニューラルネットワーク層はプーリングサブ層を含む、請求項１〜１１のいずれか１項に記載の方法。
【請求項１３】
前記方法は、前記プーリングサブ層を、前記変換された入力テンソルに対するストライド処理に置き換えるステップをさらに含む、請求項１２に記載の方法。
【請求項１４】
前記畳み込みニューラルネットワーク層はカーネルストライド処理を含み、前記方法は、前記変換された入力テンソルおよび修正されたウェイト行列に基づいて効率的なカーネルストライド処理を実施するステップをさらに含む、請求項１〜１３のいずれか１項に記載の方法。
【請求項１５】
前記Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、前記Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含み、
前記複数の第１出力の中の第１出力の数は、前記畳み込みニューラルネットワーク層ウェイト行列の次元に依存する、請求項１〜９のいずれか１項に記載の方法。
【請求項１６】
前記Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、前記Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含み、
前記複数の第１出力の中の出力の数は、（ｉ）前記畳み込みニューラルネットワーク層のアーキテクチャ、（ｉｉ）前記畳み込みニューラルネットワーク層を含むニューラルネットワークモデルのアーキテクチャ、または（ｉｉｉ）前記畳み込みニューラルネットワーク層を実現する装置、のうちの１つ以上に依存する、請求項１〜９のいずれか１項に記載の方法。
【請求項１７】
前記１つ以上の畳み込みニューラルネットワーク層ウェイト行列の修正は、ソフトウェアのみの修正である、請求項１〜１６のいずれか１項に記載の方法。
【請求項１８】
１つ以上のコンピュータと１つ以上の記憶装置とを備えるシステムであって、前記１つ以上の記憶装置は、前記１つ以上のコンピュータによって実行されると前記１つ以上のコンピュータに動作を実行させる演算可能な命令を格納し、前記動作は、Ｘ×Ｙ×Ｚ入力テンソルを受け１つ以上の畳み込みニューラルネットワーク層ウェイト行列を用いて前記受けた入力テンソルを処理することによりＵ×Ｖ×Ｗ出力テンソルを生成するように構成された畳み込みニューラルネットワーク層の計算をより効率的に実行するための動作であり、前記動作は、
前記Ｘ×Ｙ×Ｚ入力テンソルをＸ’×Ｙ’×Ｚ’入力テンソルに変換することを含み、Ｘ’はＸ以下、Ｙ’はＹ以下、Ｚ’はＺ以上であり、
１つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得することを含み、（ｉ）前記修正されたウェイト行列は、前記Ｘ’×Ｙ’×Ｚ’入力テンソルに対して作用することにより、Ｕ’×Ｖ’×Ｗ’出力テンソルを生成し、（ｉｉ）前記Ｕ’×Ｖ’×Ｗ’出力テンソルは、変換されたＵ×Ｖ×Ｗ出力テンソルを含み、Ｕ’はＵ以下、Ｖ’はＶ以下、Ｗ’はＷ以上であり、
前記修正されたウェイト行列を用いて前記Ｘ’×Ｙ’×Ｚ’入力テンソルを処理することにより前記Ｕ’×Ｖ’×Ｗ’出力テンソルを生成することを含み、前記Ｕ’×Ｖ’×Ｗ’出力テンソルは前記Ｕ×Ｖ×Ｗ出力テンソルを含む、システム。
【請求項１９】
Ｘ’は自然数Ｎで割ったＸのシーリング（ceiling）に等しく、Ｙ’は自然数Ｍで割ったＹのシーリングに等しく、Ｚ’はＺにＮＭを掛けたものに等しい、請求項１８に記載のシステム。
【請求項２０】
前記Ｘ×Ｙ×Ｚ入力テンソルはＸＹ第１入力を表し、前記Ｘ’×Ｙ’×Ｚ’入力テンソルはＸ’Ｙ’スーパー入力を表し、各スーパー入力は複数の第１入力を含む、請求項１９に記載のシステム。
【請求項２１】
前記複数の第１入力の数はＮＭ個の入力に等しい、請求項２０に記載のシステム。
【請求項２２】
前記Ｘ’×Ｙ’×Ｚ’入力テンソルに対する前記修正されたウェイト行列の作用は、前記Ｘ×Ｙ×Ｚ入力テンソルに対する前記畳み込みニューラルネットワーク層ウェイト行列の作用と同等である、請求項１８〜２１のいずれか１項に記載のシステム。
【請求項２３】
前記修正されたウェイト行列のエントリは、１つ以上の畳み込みニューラルネットワーク層ウェイト行列を含む、請求項１８〜２２のいずれか１項に記載のシステム。
【請求項２４】
前記修正されたウェイト行列は、バンド構造を有する行列を含む、請求項１８〜２３のいずれか１項に記載のシステム。
【請求項２５】
Ｕ’は自然数Ｐで割ったＵのシーリング（ceiling）に等しく、Ｖ’は自然数Ｑで割ったＶのシーリングに等しく、Ｗ’はＷにＰＱを掛けたものに等しい、請求項１８〜２４のいずれか１項に記載のシステム。
【請求項２６】
前記畳み込みニューラルネットワーク層は、Ｘ次元のストライドＳとＹ次元のストライドＴとを含み、ストライドＳ、Ｔと、出力テンソルＵ×Ｖ×Ｗと、変換された出力テンソルＵ’×Ｖ’×Ｗ’との関係は、Ｕ’＝ｃｅｉｌｉｎｇ（Ｕ／ＮＳ）およびＶ’＝ｃｅｉｌｉｎｇ（Ｖ／ＭＴ）によって示される、請求項２５に記載のシステム。
【請求項２７】
前記Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、前記Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含む、請求項２５または２６に記載のシステム。
【請求項２８】
前記複数の第１出力はＰＱ個の出力に等しい、請求項２７に記載のシステム。
【請求項２９】
前記畳み込みニューラルネットワーク層はプーリングサブ層を含む、請求項１８〜２８のいずれか１項に記載のシステム。
【請求項３０】
前記動作は、前記プーリングサブ層を、前記変換された入力テンソルに対するストライド処理に置き換えることをさらに含む、請求項２９に記載のシステム。
【請求項３１】
前記畳み込みニューラルネットワーク層はカーネルストライド処理を含み、前記方法は、前記変換された入力テンソルおよび修正されたウェイト行列に基づいて効率的なカーネルストライド処理を実施することをさらに含む、請求項１８〜３０のいずれか１項に記載のシステム。
【請求項３２】
前記Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、前記Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含み、
前記複数の第１出力の中の第１出力の数は、前記畳み込みニューラルネットワーク層ウェイト行列の次元に依存する、請求項１８〜２６のいずれか１項に記載のシステム。
【請求項３３】
前記Ｕ×Ｖ×Ｗ出力テンソルはＵＶ第１出力を表し、前記Ｕ’×Ｖ’×Ｗ’出力テンソルはＵ’Ｖ’スーパー出力を表し、各スーパー出力は複数の第１出力を含み、
前記複数の第１出力の中の出力の数は、（ｉ）前記畳み込みニューラルネットワーク層のアーキテクチャ、（ｉｉ）前記畳み込みニューラルネットワーク層を含むニューラルネットワークモデルのアーキテクチャ、または（ｉｉｉ）前記畳み込みニューラルネットワーク層を実現する装置、のうちの１つ以上に依存する、請求項１８〜２６のいずれか１項に記載のシステム。
【請求項３４】
前記１つ以上の畳み込みニューラルネットワーク層ウェイト行列の修正は、ソフトウェアのみの修正である、請求項１８〜３３のいずれか１項に記載のシステム。
【請求項３５】
１つ以上のコンピュータによって実行されると前記１つ以上のコンピュータに動作を実行させる命令で符号化されたコンピュータ記憶媒体であって、前記動作は、Ｘ×Ｙ×Ｚ入力テンソルを受け１つ以上の畳み込みニューラルネットワーク層ウェイト行列を用いて前記受けた入力テンソルを処理することによりＵ×Ｖ×Ｗ出力テンソルを生成するように構成された畳み込みニューラルネットワーク層の計算をより効率的に実行するための動作であり、前記動作は、
前記Ｘ×Ｙ×Ｚ入力テンソルをＸ’×Ｙ’×Ｚ’入力テンソルに変換することを含み、Ｘ’はＸ以下、Ｙ’はＹ以下、Ｚ’はＺ以上であり、
１つ以上の修正された畳み込みニューラルネットワーク層ウェイト行列を取得することを含み、（ｉ）前記修正されたウェイト行列は、前記Ｘ’×Ｙ’×Ｚ’入力テンソルに対して作用することにより、Ｕ’×Ｖ’×Ｗ’出力テンソルを生成し、（ｉｉ）前記Ｕ’×Ｖ’×Ｗ’出力テンソルは、変換されたＵ×Ｖ×Ｗ出力テンソルを含み、Ｕ’はＵ以下、Ｖ’はＶ以下、Ｗ’はＷ以上であり、
前記修正されたウェイト行列を用いて前記Ｘ’×Ｙ’×Ｚ’入力テンソルを処理することにより前記Ｕ’×Ｖ’×Ｗ’出力テンソルを生成することを含み、前記Ｕ’×Ｖ’×Ｗ’出力テンソルは前記Ｕ×Ｖ×Ｗ出力テンソルを含む、コンピュータ記憶媒体。
【請求項３６】
コンピュータによって実行されるプログラムであって、前記プログラムは、前記コンピュータに、請求項１〜１７のいずれか１項に記載の方法を実行させる、プログラム。
【国際調査報告】
2019527420.tif 000018
2019527420.tif 000019
2019527420.tif 000020