(57)【要約】      （修正有）【課題】異なる実行パターンで同じコードを実行することにより、深層学習ネットワークモデルを構築する方法及び装置を提供する。【解決手段】方法は、実行パターンが第１の実行パターンであると決定された場合に、コード内の文法要素によって第１の実行パターンで使用できる第１のコンポーネントを使用してコードを実行することと、実行パターンが第２の実行パターンであると決定された場合に、文法要素によって第２の実行パターンで使用できる第２のコンポーネントを使用して前記コードを実行することと、を含む。第１のコンポーネントと第２のコンポーネントは、同じコンポーネントインターフェイスを有する。文法要素は、コンポーネントインターフェイスに対応する。【選択図】図２
2022000768.tif 000002
【特許請求の範囲】
【請求項１】
パターンパラメータに基づいてコードを実行するための実行パターンを決定することと、
前記実行パターンが第１の実行パターンであると決定された場合に、前記コード内の文法要素によって第１の実行パターンで使用できる第１のコンポーネントを使用して前記コードを実行することと、
前記実行パターンが第２の実行パターンであると決定された場合に、前記文法要素によって前記第２の実行パターンで使用できる第２のコンポーネントを使用して前記コードを実行することと、を含み、
前記第１のコンポーネントと前記第２のコンポーネントは同じコンポーネントインターフェイスを有し、前記文法要素は前記コンポーネントインターフェイスに対応する
深層学習ネットワークモデルを構築する方法。
【請求項２】
前記コンポーネントインターフェースは、制御フローコンポーネントインターフェースを含み、
前記方法は、
前記制御フローインターフェースに対応する文法要素が実行されるとき、
前記第１の実行パターンでは、前記第１のコンポーネント中の第１の制御フローコンポーネントを使用することと、
前記第２の実行パターンでは、前記第２のコンポーネント中の第２の制御フローコンポーネントを使用することと、をさらに含む
請求項１に記載の方法。
【請求項３】
前記コンポーネントインターフェースは、ネットワーク構築コンポーネントインターフェースを含み、
前記方法は、前記ネットワーク構築コンポーネントに対応する文法要素が実行されるとき、
前記第１の実行パターンでは、前記第１の制御フローコンポーネントを介してネットワーク構築コンポーネントを使用することと、
前記第２の実行パターンでは、前記第２の制御フローコンポーネントを介して前記ネットワーク構築コンポーネントを使用することと、をさらに含む
請求項２に記載の方法。
【請求項４】
前記コンポーネントインターフェースは、ネットワーク実行コンポーネントインターフェースを含み、
前記方法は、前記ネットワーク実行コンポーネントインターフェースに対応する文法要素が実行されるとき、
前記第１の実行パターンでは、前記第１のコンポーネント中の第１のネットワーク実行コンポーネントを使用して入力データを処理して出力データを取得することと、
前記第２の実行パターンでは、前記第２のコンポーネント中の第２のネットワーク実行コンポーネントを使用して入力データを処理して出力データを取得することと、をさらに含む
請求項１に記載の方法。
【請求項５】
前記第２のコンポーネント中の第２のネットワーク実行コンポーネントが実行されるとき、
前記入力データに基づいて前記入力データに対する第１のコンピューティンググラフを決定することと、
前記第１のコンピューティンググラフに基づいて、前記入力データを処理して前記出力データを取得することと、をさらに含む
請求項４に記載の方法。
【請求項６】
前記コンポーネントインターフェースは、ネットワーク最適化コンポーネントインターフェースを含み、
前記方法は、前記ネットワーク最適化コンポーネントインターフェースに対応する文法要素が実行されるとき、
前記第１の実行パターンでは、前記第１のコンポーネント中の第１のネットワーク最適化コンポーネントを使用して、ネットワークモデルパラメータを更新することと、
前記第２の実行パターンでは、前記第２のコンポーネント中の第２のネットワーク最適化コンポーネントを使用して、ネットワークモデルパラメータを更新することと、をさらに含む
請求項１に記載の方法。
【請求項７】
前記第２のネットワーク最適化コンポーネントが実行されるとき、
前記ネットワークモデルパラメータによる損失を決定するように、順方向伝搬に対する第２のコンピューティンググラフを構築することと、
前記ネットワークモデルパラメータに関連する勾配を決定するように、逆方向伝搬に対する第３のコンピューティンググラフを構築することと、
更新されたネットワークモデルパラメータを決定するように、勾配更新の第４のコンピューティンググラフを構築することと、をさらに含む
請求項６に記載の方法。
【請求項８】
前記コンポーネントインターフェースは、学習率調整コンポーネントインターフェースを含み、
前記方法は、前記学習率調整コンポーネントインターフェースに対応する文法要素が実行されるとき、
前記第１の実行パターンでは、前記第１のコンポーネント中の第１の学習率調整コンポーネントを使用して学習率を調整してネットワークモデルパラメータを更新することと、
前記第２の実行パターンでは、前記第２のコンポーネント中の第２の学習率調整コンポーネントを使用して学習率を調整してネットワークモデルパラメータを更新することと、をさらに含む
請求項１に記載の方法。
【請求項９】
前記第２の学習率調整コンポーネントが実行されるとき、
前記学習率ノードを更新するためのノードを含まず、学習率ノードを含む第５のコンピューティンググラフを構築することと、
前記学習率ノードの入力として前記学習率の更新値を受信することと、
前記第５のコンピューティンググラフと前記学習率の更新値に基づいて、前記学習率を調整することと、をさらに含む
請求項８に記載の方法。
【請求項１０】
前記第１のコンポーネントを使用して前記コードを実行することは、
前記文法要素に関連付けられた入力データに基づいて前記第１のコンポーネントに対応する第１の操作を実行して出力データを決定すること、を含む
請求項１に記載の方法。
【請求項１１】
前記第２のコンポーネントを使用して前記コードを実行することは、
前記第２のコンポーネントに対応する第２の操作を使用して複数の計算操作に対応する複数のネットワークノードを含むコンピューティンググラフを決定することと、
前記文法要素に関連付けられた入力データに基づいて、実行コンポーネントで前記コンピューティンググラフを使用して出力データを決定することと、を含む
請求項１に記載の方法。
【請求項１２】
前記第１の実行パターンは動的画像パターンを含み、
前記第２の実行パターンは静的画像パターンを含む
請求項１〜１１のいずれか一項に記載の方法。
【請求項１３】
パターンパラメータに基づいてコードを実行するための実行パターンを決定するように配置される実行パターン決定モジュールと、
前記実行パターンが第１の実行パターンであると決定された場合に、前記コード内の文法要素によって第１の実行パターンで使用できる第１のコンポーネントを使用して前記コードを実行するように配置される第１の実行モジュールと、
前記実行パターンが第２の実行パターンであると決定された場合に、前記文法要素によって前記第２の実行パターンで使用できる第２のコンポーネントを使用して前記コードを実行するように配置される第２の実行モジュールと、を含み、
前記第１のコンポーネントと前記第２のコンポーネントは同じコンポーネントインターフェイスを有し、前記文法要素は前記コンポーネントインターフェイスに対応する
深層学習ネットワークモデルを構築するための装置。
【請求項１４】
前記コンポーネントインターフェースは、制御フローコンポーネントインターフェースを含み、
前記制御フローインターフェースに対応する文法要素が装置によって実行されるとき、
前記第１の実行モジュールはさらに、前記第１の実行パターンでは、前記第１のコンポーネント中の第１の制御フローコンポーネントを使用するように配置され、且つ
前記第２の実行モジュールはさらに、前記第２の実行パターンでは、前記第２のコンポーネント中の第２の制御フローコンポーネントを使用するように配置される
請求項１３に記載の装置。
【請求項１５】
前記コンポーネントインターフェースは、ネットワーク構築コンポーネントインターフェースを含み、
前記ネットワーク構築コンポーネントに対応する文法要素が装置によって実行されるとき、
前記第１の実行モジュールはさらに、前記第１の実行パターンでは、前記第１の制御フローコンポーネントを介してネットワーク構築コンポーネントを使用するように配置され、且つ
前記第２の実行モジュールはさらに、前記第２の実行パターンでは、前記第２の制御フローコンポーネントを介して前記ネットワーク構築コンポーネントを使用するように配置される
請求項１４に記載の装置。
【請求項１６】
前記コンポーネントインターフェースは、ネットワーク実行コンポーネントインターフェースを含み、
前記ネットワーク実行コンポーネントインターフェースに対応する文法要素が装置によって実行されるとき、
前記第１の実行モジュールはさらに、前記第１の実行パターンでは、前記第１のコンポーネント中の第１のネットワーク実行コンポーネントを使用して入力データを処理して出力データを取得するように配置され、且つ
前記第２の実行モジュールはさらに、前記第２の実行パターンでは、前記第２のコンポーネント中の第２のネットワーク実行コンポーネントを使用して入力データを処理して出力データを取得するように配置される
請求項１３に記載の装置。
【請求項１７】
前記第２の実行モジュールはさらに、
前記第２のコンポーネント中の第２のネットワーク実行コンポーネントが前記装置によって実行されるとき、
前記入力データに基づいて前記入力データに対する第１のコンピューティンググラフを決定し、
前記第１のコンピューティンググラフに基づいて、前記入力データを処理して前記出力データを取得するように配置される
請求項１６に記載の装置。
【請求項１８】
前記コンポーネントインターフェースは、ネットワーク最適化コンポーネントインターフェースを含み、
前記ネットワーク最適化コンポーネントインターフェースに対応する文法要素が装置によって実行されるとき、
前記第１の実行モジュールはさらに、前記第１の実行パターンでは、前記第１のコンポーネント中の第１のネットワーク最適化コンポーネントを使用してネットワークモデルパラメータを更新するように配置され、且つ
前記第２の実行モジュールはさらに、前記第２の実行パターンでは、前記第２のコンポーネント中の第２のネットワーク最適化コンポーネントを使用して、ネットワークモデルパラメータを更新するように配置される
請求項１３に記載の装置。
【請求項１９】
前記第２の実行モジュールはさらに、
前記第２のネットワーク最適化コンポーネントが装置によって実行されるとき、
前記ネットワークモデルパラメータによる損失を決定するように順方向伝搬に対する第２のコンピューティンググラフを構築し、
前記ネットワークモデルパラメータに関連する勾配を決定するように逆方向伝搬に対する第３のコンピューティンググラフを構築し、
更新されたネットワークモデルパラメータを決定するように、勾配更新の第４のコンピューティンググラフを構築するように配置される
請求項１８に記載の装置。
【請求項２０】
前記コンポーネントインターフェースは、学習率調整コンポーネントインターフェースを含み、
前記学習率調整コンポーネントインターフェースに対応する文法要素が装置によって実行されるとき、
前記第１の実行モジュールはさらに、前記第１の実行パターンでは、前記第１のコンポーネント中の第１の学習率調整コンポーネントを使用して学習率を調整してネットワークモデルパラメータを更新するように配置され、
前記第２の実行モジュールはさらに、前記第２の実行パターンでは、第２のコンポーネント中の第２の学習率調整コンポーネントを使用して学習率を調整してネットワークモデルパラメータを更新するように配置される
請求項１３に記載の装置。
【請求項２１】
前記第２の実行モジュールはさらに、
前記第２の学習率調整コンポーネントが装置によって実行されるとき、
学習率ノードを更新するためのノードを含まず、学習率ノードを含む第５のコンピューティンググラフを構築し、
前記学習率ノードの入力として前記学習率の更新値を受信し、
前記第５のコンピューティンググラフと前記学習率の更新値に基づいて前記学習率を調整するように配置される
請求項２０に記載の装置。
【請求項２２】
前記第１の実行モジュールはさらに、
前記文法要素に関連付けられた入力データに基づいて前記第１のコンポーネントに対応する第１の操作を実行して出力データを決定するように配置される
請求項１３に記載の装置。
【請求項２３】
前記第２の実行モジュールはさらに、
前記第２のコンポーネントに対応する第２の操作を使用して複数の計算操作に対応する複数のネットワークノードを含むコンピューティンググラフを決定し、
前記文法要素に関連付けられた入力データに基づいて、実行コンポーネントで前記コンピューティンググラフを使用して出力データを決定するように配置される
請求項１３に記載の装置。
【請求項２４】
前記第１の実行パターンは動的画像パターンを含み、
前記第２の実行パターンは静的画像パターンを含む
請求項１３〜２３のいずれか一項に記載の装置。
【請求項２５】
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサと通信可能に接続されたメモリとを含み、
前記メモリは、前記少なくとも１つのプロセッサによって実行されると、前記少なくとも１つのプロセッサに請求項１〜１２のいずれか一項に記載の方法を実行させる命令を記憶する
電子デバイス。
【請求項２６】
コンピュータに請求項１〜１２のいずれか一項に記載の方法を実行させるコンピュータ命令を記憶する
非一時的なコンピュータ読み取り可能な記憶媒体。
【請求項２７】
プロセッサによって実行される際に、請求項１〜１２のいずれか一項に記載の方法を実現するコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理分野に関し、特に人工知能と深層学習分野に関し、且つより具体的には、深層学習ネットワークモデルを構築する方法、装置、デバイス、記憶媒体およびコンピュータプログラムに関する。
【背景技術】
【０００２】
コンピュータ技術の開発に伴い、ユーザの開発プロセスを簡単化するために、ユーザが利用できる深層学習プラットフォームがすでに存在している。深層学習プラットフォームは、通常、静的画像（宣言型プログラミングとも呼ばれる）などのパターンを使用して最終的なネットワークモデルを手配して、実際のアプリケーションでの予測することに用いる。コンピューティングデバイスの場合、静的画像は実行が高速であり、手配に役立ちいる。ただし、現在、ユーザは、トレーニングとデバッグを容易にするために、ネットワークモデル開発に動的画像（命令型プログラミングとも呼ばれる）などのパターンを使用することに慣れている。したがって、コードを異なるパターンで実行することができる必要がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本開示は、深層学習ネットワークモデルを構築するための方法、装置、デバイス、記憶媒体およびコンピュータプログラムを提供している。
【課題を解決するための手段】
【０００４】
本開示の第１の局面によれば、パターンパラメータに基づいてコードを実行するための実行パターンを決定することと、実行パターンが第１の実行パターンであると決定された場合に、コード内の文法要素によって第１の実行パターンで使用できる第１のコンポーネントを使用してコードを実行することと、実行パターンが第２の実行パターンであると決定された場合に、文法要素によって第２の実行パターンで使用できる第２のコンポーネントを使用してコードを実行することと、を含み、第１のコンポーネントと第２のコンポーネントは同じコンポーネントインターフェイスを有し、文法要素はコンポーネントインターフェイスに対応する深層学習ネットワークモデルを構築する方法を提供した。
【０００５】
本開示の第２の局面によれば、パターンパラメータに基づいてコードを実行するための実行パターンを決定するように配置される実行パターン決定モジュールと、実行パターンが第１の実行パターンであると決定された場合に、コード内の文法要素によって第１の実行パターンで使用できる第１のコンポーネントを使用してコードを実行するように配置される第１の実行モジュールと、実行パターンが第２の実行パターンであると決定された場合に、文法要素によって第２の実行パターンで使用できる第２のコンポーネントを使用してコードを実行するように配置される第２の実行モジュールと、を含み、第１のコンポーネントと第２のコンポーネントは同じコンポーネントインターフェイスを有し、文法要素はコンポーネントインターフェイスに対応する深層学習ネットワークモデルを構築するための装置を提供した。
【０００６】
本開示の第３の局面によれば、少なくとも１つのプロセッサと、少なくとも１つのプロセッサと通信可能に接続されたメモリとを含み、メモリは、少なくとも１つのプロセッサによって実行されると、少なくとも１つのプロセッサに本開示の第１の局面の方法を実行させる命令を記憶する電子デバイスを提供した。
【０００７】
本開示の第４の局面によれば、コンピュータに本開示の第１の局面の方法を実行させるコンピュータ命令を記憶する非一時的なコンピュータ読み取り可能な記憶媒体を提供した。
【０００８】
本開示の第５の局面によれば、プロセッサによって実行される際に、本開示の第１の局面の方法を実現するコンピュータプログラムを提供した。
【０００９】
本願の技術により、深層学習ネットワークモデルのトレーニングおよび手配を促進するために、異なる実行パターンで同じコードを実行することをサポートすることができる。
【００１０】
この部分で説明した内容は、本開示の実施例の肝心な又は重要な特徴を表記するためのものでもなく、本開示の範囲を限定するためのものでもないと理解すべできである。本開示の他の特徴は、以下の明細書によって理解し易くなるであろう。
【００１１】
添付の図面を結合して以下の詳細な説明を参照して、本開示の各実施例の上記および他の特徴、利点、および態様がより明らかになるであろう。図面では、同じまたは類似の図面符号は、同じまたは類似の要素を示する。
【図面の簡単な説明】
【００１２】
【図１】図１は、本開示の複数の実施例が実現される例示的な環境の概略図を示している。
【図２】図２は、本開示のいくつかの実施例による、深層学習ネットワークモデルを構築する方法のフローチャートを示している。
【図３】図３は、本開示のいくつかの実施例による、コンピューティングデバイスが制御フローコンポーネントを実行する方法の概略図を示している。
【図４】図４は、本開示のいくつかの実施例による、コンピューティングデバイスがコンポーネントを実行する方法の概略図を示している。
【図５】図５は、本開示のいくつかの実施例による、コンピューティングデバイスがネットワーク最適化コンポーネントを実行する方法の概略図を示している。
【図６】図６は、本開示のいくつかの実施例によるパラメータを更新するためのコンピューティンググラフの概略図を示している。
【図７】図７は、本開示のいくつかの実施例による、コンピューティングデバイスが学習率調整コンポーネントを実行する方法の概略図を示している。
【図８】図８は、本開示の実施例による、深層学習のネットワークモデルを構築するための装置８００の概略ブロック図を示している。
【図９】図９は、本開示の複数の実施例を実施することができる電子デバイス９００のブロック図を示している。
【発明を実施するための形態】
【００１３】
以下、理解を容易にするための本願の実施例の様々な詳細を含む添付の図面を参照して本願の例示的な実施例を説明し、単なる例示と見なされるべきである。したがって、当業者は、本願の範囲および精神から逸脱することなく、本明細書に記載の実施例に対して様々な変更および修正を行うことができることを理解すべきである。同様に、明瞭と簡潔のために、公知機能と構造の説明は、以下の説明では省略されている。
【００１４】
本開示の実施例の説明において、「含む」という用語および類似の用語は、制限のない包含、すなわち「含むがこれに限定されない」と理解されるべきである。「に基づく」という用語は、「少なくとも部分的に基づく」と理解されるべきである。「一実施例」または「この実施例」という用語は、「少なくとも１つの実施例」として理解されるべきである。「第１」、「第２」などの用語は、異なるまたは同じ対象を指す場合がある。以下には、他の明示的および暗黙的な定義も含まれる場合がある。
【００１５】
上記のように、深層学習プラットフォームは、通常、静的画像を使用して最終的なネットワークモデルの手配を行い、実際の応用での予測に用いられる。静的画像パターンでは、コンピューティングデバイスは、コンピューティンググラフ（Ｃｏｍｐｕｔａｔｉｏｎａｌ  Ｇｒａｐｈ）構築段階とコンピューティンググラフ実行段階を別々に実行する。コンピューティンググラフ構築段階では、コンピューティングデバイスが変数と変数との間の計算関係を定義して、完全なコンピューティンググラフを作成できる。この段階では、入力データはない。コンピューティンググラフ構築段階が完了した後、コンピューティングデバイスは、コンピューティンググラフ実行段階を実行して、構築されたコンピューティンググラフに入力データを入力して、出力データを取得することができる。
【００１６】
したがって、静的画像パターンの場合、コンピューティンググラフの構築段階でネットワーク構造のみを定義でき、このネットワーク構造による相応的な出力データをリアルタイムで取得することができない。したがって、ユーザにとって、静的画像パターンは、デバッグ、特に、ネットワークモデルのトレーニング段階のデバッグに役立ちない。
【００１７】
したがって、ネットワークモデルを開発する場合、ユーザは動的画像パターン、つまり即時実行パターンを採用することに慣れている。静的画像パターンと異なり、動的画像パターンでは、コンピューティンググラフの構築とコンピューティンググラフの実行という２つの段階に区別されないことである。コンピューティンググラフを構築する際に入力データを入力することで、直接に計算して出力データを返すことができる。したがって、動的画像パターンの場合、コードをより簡単に編集する必要があり、ネットワークの出力をリアルタイムで取得することができるため、デバッグがさらに簡単である。したがって、ネットワークモデルのトレーニング段階では、ユーザは動的画像パターンを採用する傾向がある。
【００１８】
ただし、この２つの間で使用されるＡＰＩ（アプリケーションプログラミングインターフェイス）は一致していない。従来の技術では、動的画像パターンプログラミング言語で記述されたコードが静的画像パターンで直接に実行することができない。
【００１９】
２つの解決案がある。１つの解決案は、ユーザが、動的画像パターンでデバッグされたコード（以下、動的画像コードと呼ぶ）を、静的画像パターンで実行可能な対応コード（以下、静的画像コードと呼ぶ）に書き換えることである。この解決案は、大量の労力が必要であり、書き換えの過程で新しいエラーを導入する可能性がある。
【００２０】
別の解決案は、コンピューティングデバイスによって動的画像コードと静的画像コードとの変換を実行することである（以下、動静変換と呼ぶ）。ただし、動静変換には一定の制限があり、第一、この変換に関する機能を開発するコストが高く、変換プロセスでも新しいエラーを導入する可能性がある。第二、変換用の動的画像コードを作成するプロセスに、ユーザが動的画像プログラミング言語（例えば、ｐｙｔｈｏｎ）の制御フロー（例えば、ｉｆ−ｅｌｓｅ）を使用できるが、当該プログラミング言語でサポートされるすべての文法を使用できるわけではなく、静的画像プログラミング言語で使用されているロジックに切り替える必要がある場合がある。これについて、ユーザに混乱を引き起こす可能性がある。第三、プログラミングプロセスでは、ユーザは常々に静的画像のロジックに切り替える必要があることにより、デバッグが困難になる。また、動静変換後のコードは非常に複雑であり、問題があってもデバッグが困難である。
【００２１】
上記の問題および他の潜在的な問題の１つまたは複数を少なくとも部分的に解決するために、本開示の実施例は、同じ文法要素によって同じコンポーネントインターフェイスを呼び出し、所在の実行パターンのタイプに応じて、当該コンポーネントインターフェースを介して第１の実行パターンで呼び出されるべき相応的なコンポーネントおよび／または第２の実行パターンで呼び出されるべき相応的なコンポーネントをそれぞれ呼び出す深層学習ネットワークモデルを構築するための方法を提案する。このように、一連のコードによって、コンピューティングデバイスは、２つの実行パターンに対するサポートを実現することができ、深層学習ネットワークモデルのトレーニングおよび／または手配に用いられる。
【００２２】
以下、図面を参照して本開示の実施例を詳細に説明する。本明細書では、「モデル」という用語は、トレーニングデータから相応的な入力との出力の相関関係を学習できるため、トレーニングの完了後に、所定の入力に対して対応出力を生成できる。「モデル」は、「ニューラルネットワーク」、「学習モデル」、「ネットワークモデル」または「学習ネットワーク」と呼ばれることもあることを理解されたい。モデルの例には、ＤＮＮ、ＣＮＮ、ＲＮＮ、ＬＳＴＭ、またはそれらの任意の組み合わせが含まれるが、これらに限定されない。
【００２３】
本明細書では、「コンポーネント」という用語は、深層学習フレームワークに、ユーザが呼び出すことができるパッケージされたモジュールを指す。コンポーネントは、実行時に関連機能および／または方法を実現することができる予め定義されたコードを含み、データの入力および／または出力、論理制御、計算、ネットワークモデル構築、ネットワークモデル最適化、逆方向伝搬、ネットワークモデル実行、学習率の調整などを含むが、これらに限定されない。各種のコンポーネントには、インターフェイス（ＡＰＩ）技術を介してアクセスでき、ユーザは、インターフェイスを知っていて、相応的な文法要素によってインターフェイスにアクセスするだけで、各種のコンポーネントを使用できる。本明細書では、データ計算型のコンポーネントをオペレーターまたはオペレーター（Ｏｐｅｒａｔｏｒ）と呼ぶことがある。
【００２４】
本明細書では、「文法要素」という用語は、実現する必要がある一つの機能を指示するコード内の１行以上の命令を示す。文法要素は各種のインターフェイスに対応でき、データを含めることもできる。文法要素を通じて、各種のコンポーネントの使用およびデータ（例えば、変数、パラメータ、定数、ベクトル、行列、テンソル、パラメータリストなど）の入出力を実現できる。コードの記述過程では、複数の文法要素を組み合わせて、順次実行、分岐条件選択およびループ実行などの実行構造により、任意の複雑なモデルの記述を実現する。
【００２５】
本明細書では、「実行パターン」という用語は、各種のコンポーネントが呼び出されることができる動作パターンを指す。実行パターンには、上記の動的画像パターンと静的画像パターンが含まれるが、これらに限定されない。なお、通常、異なる実行パターンでは、使用できるコンポーネントが同じではない可能性があり、且つ、対応するＡＰＩが異なる可能性がある。
【００２６】
本明細書では、「コンピューティンググラフ」という用語は、ネットワークモデルの操作組み合わせを説明するためのグラフである。コンピューティンググラフには、ノード（Ｎｏｄｅ）とエッジ（Ｅｄｇｅ）という２つの要素を含めることができる。いくつかの実施例では、ノードは、例えばベクトル、行列、テンソルなどのデータを表すことができ、エッジは、例えば加算、減算、乗算、除算および畳み込みなどの操作を表すことができる。しかしながら、本開示はこれを限定するものではない。
【００２７】
本明細書では、「制御フローコンポーネント」という用語は、制御フローを実現するように配置されたコンポーネントを指す。制御フローには、順序制御、分岐（二重分岐および複数分岐を含むことができる）条件選択制御、およびループ制御が含まれるが、これらに限定されない。制御フローは、コード内の各文法要素（したがって、それに対応するコンポーネント）の実行順序を決定するために使用される。
【００２８】
例えば、動的画像パターンでは、分岐条件制御フローコンポーネントを使用するように、例えばｉｆ−ｅｌｓｅ（Ｐｙｔｈｏｎで使用される制御フローコンポーネント）などを含む文法要素を採用して、分岐条件制御フローインターフェイスに対応することができる。ループ制御フローコンポーネントを使用するように、例えばｗｈｉｌｅやｆｏｒ（Ｐｙｔｈｏｎで使用される制御フローコンポーネント）などを含む文法要素を採用して、ループ制御フローインターフェイスに対応することができる。
【００２９】
静的画像パターンでは、（デュアル）分岐条件制御フローコンポーネントを使用するように、（デュアル）分岐条件制御を含む文法要素を採用して、（デュアル）分岐条件制御フローインターフェースに対応することができる。（マルチ）分岐条件制御フローコンポーネントを使用するように、（マルチ）分岐条件制御を含む文法要素を採用して、（マルチ）分岐条件制御フローＡＰＩに対応することができる。ループ制御フローコンポーネントを使用するように、ループ制御を含む文法要素を採用して、ループ制御フローＡＰＩに対応することができる。従来の技術では、静的画像の文法要素を動的画像パターンで直接使用することができない。
【００３０】
図１は、本開示の複数の実施例が実現される例示的な環境１００の概略図を示している。例示を目的として、例示的な環境１００の構造および機能を説明し、本開示の範囲を制限するものではない。本開示の実施例は、異なる構造および／または機能を有する環境に適用することができる。
【００３１】
コンピューティングデバイス１０５は、コード１１０に含まれる文法要素１１１、１１２および１１３に従って対応処理ロジックを実行することができ、これにより、最終的に深層学習ネットワークモデル１７０を構築する。コード１１０には、ネットワークモデル１７０を構築するための任意個の文法要素を含めることができることは理解できる。
【００３２】
コンピューティングデバイス１０５は、例えば、文法要素１１１に従って第１の実行パターンで呼び出すことができる深層学習フレームワーク１３０の第１のコンポーネント１４０を呼び出すことができる。第１のコンポーネント１４０は、例えば、第１の制御フローコンポーネント１４１、第１のネットワーク構築コンポーネント１４２、第１のネットワーク実行コンポーネント１４３、第１のネットワーク最適化コンポーネント１４４、および第１の学習率調整コンポーネント１４５を含むことができる。第１のコンポーネント１４０はまた、他の機能を実現する他のコンポーネントを含み得ることが理解され得る。
【００３３】
コンピューティングデバイス１０５は、例えば、文法要素１１３に従って第２の実行パターンで呼び出すことができる深層学習フレームワーク１３０の第２のコンポーネント１５０を呼び出すことができる。第２のコンポーネント１５０は、例えば、第２の制御フローコンポーネント１５１、第２のネットワーク構築コンポーネント１５２、第２のネットワーク実行コンポーネント１５３、第２のネットワーク最適化コンポーネント１５４、および第２の学習率調整コンポーネント１５５を含み得る。第２のコンポーネント１４０はまた、他の機能を実現する他のコンポーネントを含み得ることが理解され得る。
【００３４】
コンピューティングデバイス１０５は、例えば、文法要素１１３に従って実行パターンを変更するためのコンポーネント１６０を呼び出すことができる。コンポーネント１６０は、パターンパラメータ更新コンポーネント１６１およびパターンパラメータアクセスコンポーネント１６２を含む。
【００３５】
同じ機能を有する上記のコンポーネントは、同じインターフェースを介して呼び出すことができる。例えば、第１の制御フローコンポーネント１４１および第２の制御フローコンポーネント１５１は、同じインターフェースを共有することができ、コンピューティングデバイス１０５は、同じ文法要素によって第１の制御フローコンポーネント１４１および／または第２の制御フローコンポーネント１５１に対する呼び出しを実現することができる。
【００３６】
上記のコンポーネントは、自由に新しいコンポーネントに組み合わせても、又はさらに複数のサブコンポーネントに分割してもよい。
【００３７】
明確に説明するために、本開示の実施例は、図１の環境１００を参照して以下に説明される。本開示の実施例はまた、示されていない追加の動作および／または省略され得る示された動作を含んでもよいことが理解されるべきである。本開示の範囲は、この点に関して限定されない。理解を容易にするために、以下の説明に記載されている具体的なデータはすべて例示的なものであり、本開示の保護範囲を制限するものではない。
【００３８】
図２は、本開示のいくつかの実施による深層学習ネットワークモデルを構築するための方法２００のフローチャートを示している。例えば、方法２００は、図１に示されるコンピューティングデバイス１０５によって実行され得る。以下、方法２００の各動作について、図１を参照して詳細に説明する。
【００３９】
ブロック２０２において、コンピューティングデバイス１０５は、パターンパラメータに基づいて、コードを実行するための実行パターンを決定することができる。
【００４０】
具体的には、コード内の相応的な文法要素を実行する前に、コンピューティングデバイス１０５は、第１の実行パターンに従って実行するか、第２の実行パターンに従って実行するかを決定する。これは、パターンパラメータを設定することによって達成することができる。例えば、パターンパラメータは実行パターンが第１の実行パターンであると指示する場合、コンピューティングデバイス１０５は、コード内の文法要素に対応する第１のコンポーネントを呼び出して、相応的な操作を実行する。
【００４１】
いくつかの実施例では、パターンパラメータは、相応的な文法要素を使用してパターンパラメータ更新コンポーネントを呼び出すことによって更新される。例えば、パターンパラメータ更新コンポーネントを深層学習フレームワークで提供し、対応する文法要素によってこのコンポーネントを呼び出して、上記の更新を実行できる。文法要素が第２の実行パターンを開始するための文法要素（例えば、静的画像パターンを開始するための文法要素）を含む場合、コンピューティングデバイス１０５は、パターンパラメータ更新コンポーネントを呼び出して、パターンパラメータを更新して、第２の実行パターン（例えば、静止画像パターン）を開始することができる。文法要素が第２の実行パターンを禁止するための文法要素（例えば、静止画像パターンを禁止するための文法要素）を含む場合、コンピューティングデバイス１０５は、パターンパラメータ更新コンポーネントを呼び出してモードパラメータを更新して、第１の実行パターン（例えば、動的画像パターン）を開始する。
【００４２】
いくつかの実施例では、相応的な文法要素を使用してパターンパラメータアクセスコンポーネントを呼び出すことにより、現在のパターンパラメータを取得することができる。例えば、パターンパラメータアクセスコンポーネントを深層学習フレームワークで提供し、対応する文法要素（例えば、現在の実行パターンを検索するための文法要素）を介してこのコンポーネントを呼び出して、現在のパターンパラメータを取得できる。
【００４３】
本願は、第１の実行パターンと第２の実行パターンを採用して説明するが、本願の解決案は、より多くの実行パターンに使用できることは理解できる。いくつかの実施例では、第１の実行パターンは動的画像パターンを含み、第２の実行パターンは静的画像パターンを含む。しかし、本願はこれに限定されない。
【００４４】
第１実行パターンと第２の実行パターンで各種の機能を実現するために、深層学習フレームワークに第１実行パターンと第２の実行パターンに対する（複数の）第１のコンポーネントと（複数の）第２のコンポーネントを事前設定できることは理解できる。（例えば、同じまたは類似の機能を有する）第１のコンポーネントと第２のコンポーネントとは、同じコンポーネントインターフェースを有するので、コンピューティングデバイス１０５は、このコンポーネントに対応するコードにおける同じ文法要素を使用してこれらのコンポーネントへの呼び出しを実現し、相応的なコンポーネントに含まれる所定のコードを異なる実行パターンで実行する。
【００４５】
実行パターンが第１の実行パターンであると決定された場合、ブロック２０４において、コンピューティングデバイス１０５は、第１の実行パターンで使用できる第１のコンポーネントを使用して、コード内の文法要素によってコードを実行する。
【００４６】
具体的には、第１の実行パターンは、コンピューティンググラフがリアルタイムで計算されるパターンであり得る。このパターンでは、コンピューティングデバイス１０５は、文法要素に関連付けられた入力データに基づいて第１のコンポーネントに対応する第１の操作を実行して、出力データを決定することができる。これにより、コンピューティングデバイス１０５は、例えば、ユーザがこの出力データに基づいてネットワークモデルをデバッグおよび／またはトレーニングすることを容易にするように、出力データをリアルタイムでユーザに表示することができる。
【００４７】
実行パターンが第２の実行パターンであると決定された場合、ブロック２０６において、コンピューティングデバイス１０５は、第２の実行パターンで使用できる第２のコンポーネントを使用して、文法要素によってコードを実行する。
【００４８】
具体的には、第２の実行パターンは、コンピューティンググラフが非リアルタイムに計算されるパターンであり得る。このパターンでは、コンピューティングデバイス１０５は、まず、第２のコンポーネントに対応する第２の操作を使用して、コンピューティンググラフを決定することができ、コンピューティンググラフは、複数の計算操作に対応する複数のネットワークノードを含む。次に、コンピューティングデバイス１０５は、文法要素に関連付けられた入力データに基づいて、実行コンポーネントによってこのコンピューティンググラフを使用して、出力データを決定する。これにより、コンピューティングデバイス１０５は、例えば、トレーニングされたネットワークモデルの手配および使用を容易にするように、ネットワークモデルに対応するグローバルコンピューティンググラフを迅速に構築することができる。
【００４９】
本開示の実施例によれば、第１の実行パターンでのコンポーネントと第２の実行パターンでの相応的なコンポーネントとのインターフェースを一致になるように設計することにより、コンピューティングデバイス１０５は、相応的な結果を得るために、同じコードのセットを使用して、それぞれ第１の実行パターンおよび第２の実行パターンで実行する。これにより、一致ではないインターフェースによるネットワークモデルの構築において２セットのコードを使用することを回避する。
【００５０】
図３は、本開示のいくつかの実施例による、コンピューティングデバイス１０５が制御フローコンポーネントを実行するの方法３００の概略図を示している。
【００５１】
制御フローコンポーネントは、制御フローを実現するように配置されたコンポーネントである。制御フローには、順序制御、分岐（二重分岐および複数分岐を含むことができる）条件選択制御、およびループ制御が含まれるが、これらに限定されない。例えば、前述のように、従来の技術案では、静的画像パターンと動的画像パターンは、異なる制御フローコンポーネントを使用する。
【００５２】
本開示の実施例によれば、第１の実行パターンおよび第２の実行パターンで使用される制御フローコンポーネントは、同じコンポーネントインターフェース、すなわち、同じ制御フローコンポーネントインターフェース３３０を有するように設計することができる。制御フローコンポーネントインターフェース３３０は、分岐条件選択制御コンポーネントインターフェース（例えば、分岐条件制御のための文法要素に対応することができ）、およびループ制御コンポーネントインターフェース（例えば、ループ制御のための文法要素に対応することができ）を含んでもよい。いくつかの実施例では、制御フローインターフェースは、ユーザが元の文法要素によって使用できるように、元の静的画像パターンの制御フローインターフェースと一致するように設計することができる。他のいくつかの実施例では、制御フローインターフェースは、新しい文法要素によって使用されるように設計することもできる。
【００５３】
第１の実行パターンでは、制御フローインターフェース３３０に対応する文法要素３１１がコンピューティングデバイス１０５によって実行されるとき、コンピューティングデバイス１０５は、第１のコンポーネント３４０中の第１の制御フローコンポーネント３４１を使用することができる。
【００５４】
例えば、第１の制御フローコンポーネント３４１が分岐条件選択制御コンポーネントである場合、コンピューティングデバイス１０５は、入力データに従って比較関数の戻り値を決定することができ、それにより、どの分岐の関数を実行することが必要であるかをリアルタイムで決定することができる（すなわち、コンポーネント３４２またはコンポーネント３４３を呼び出す）。
【００５５】
例えば、第１の制御フローコンポーネント３４１がループ制御コンポーネントである場合、コンピューティングデバイス１０５は、入力データに基づいてループを終了する必要があるかどうかをリアルタイムで決定し、ループを終了する必要がない場合、ループのロジックを実行し、ループ変数を操作して更新された変数を取得する。
【００５６】
コンピューティングデバイス１０５は、例えば、コード３１０内の文法要素３１２によって、パターンパラメータ更新コンポーネント３６１を呼び出して、実行パターンを第１の実行パターンから第２の実行パターンに切り替えることができる。
【００５７】
第２の実行パターンでは、制御フローインターフェース３３０に対応する文法要素３１３（文法要素３１１と同じ）がコンピューティングデバイス１０５によって実行されるとき、コンピューティングデバイス１０５は、第２のコンポーネント３５０中の第２の制御フローコンポーネントを使用することができる。
【００５８】
例えば、第２の制御フローコンポーネント３４１が分岐条件選択制御コンポーネントである場合、コンピューティングデバイス１０５は、分岐条件に対して選択されたコンピューティンググラフを決定し、例えば、比較関数の操作ノードを設定し、分岐の関数の操作ノード（すなわち、コンポーネント３５２およびコンポーネント３５３）を設定する。次に、コンピューティングデバイス１０５は、第２の実行パターンのネットワーク実行コンポーネントを実行することによって、コンピューティンググラフの出力を取得する。
【００５９】
例えば、第１の制御フローコンポーネント３４１がループ制御コンポーネントである場合、コンピューティングデバイス１０５は、ループ操作に対するコンピューティンググラフをリアルタイムで決定することができ、次に、コンピューティングデバイス１０５は、第２の実行パターンのネットワークを実行することによってコンピューティンググラフの出力を取得する。
【００６０】
このようにして、２つの実行パターンの制御フローコンポーネントを同じ制御フローインターフェースに統一することによって、コンピューティングデバイス１０５は、同じ文法要素および同じコンポーネントインターフェースを介してこれらの制御フローコンポーネントを呼び出して、異なる実行パターンで異なる処理ロジックを実行することをサポートする。
【００６１】
２つの実行パターン（例えば、動的画像と静的画像）のインターフェースが統一になる実現方式により、開発者は、一つのセットのコードを記述するだけで、それを２つの実行パターンで実行させることができる。コンピューティングデバイスは、この一つのセットのコードを使用して、動的画像パターンと静的画像パターンで別々に実行できる。このようにして、デバッグが容易であるという動的画像の利点、およびグローバル最適化と予測手配が容易であるという静的画像の利点を維持し、コードの書き直しやコードの動静変換を同時に回避することができる。
【００６２】
図４は、本開示のいくつかの実施例による、コンピューティングデバイス１０５がコンポーネントを実行する方法４００の概略図を示している。
【００６３】
第１の実行パターンと第２の実行パターンでは、コンピューティングデバイス１０５がコンピューティンググラフを実行する方法が統一していない。例えば、上記のように、コンピューティングデバイス１０５は、ネットワーク実行コンポーネントを呼び出すための別のコードによって静的画像パターン中のコンピューティンググラフの計算を実現し、且つコードは、前記実行されたコードを実現するのための冗長なコードを含み得る。
【００６４】
本開示の実施例によれば、第１の実行パターンおよび第２の実行パターンで使用されるそのようなコンポーネントを、同じコンポーネントインターフェース、例えば、ネットワーク実行コンポーネントインターフェース４３０を有するように設計することができる。第２の実行パターンで実行機能を実現する方法を対応するコンポーネント４５１にパッケージすることも可能であり、それにより、コード４１０は、実行機能を実現する方法に対応する異なる文法要素を含む必要がない。
【００６５】
第１の実行パターンでは、ネットワーク実行コンポーネントインターフェース４３０に対応する文法要素４１１がコンピューティングデバイス１０５によって実行されるとき、コンピューティングデバイス１０５は、第１のコンポーネント４４０内の第１のネットワーク実行コンポーネント４４１を使用して入力データを処理して出力データを取得する。
【００６６】
コンピューティングデバイス１０５は、例えば、コード４１０の文法要素４１２によって、パターンパラメータ更新コンポーネント４６１を呼び出して、実行パターンを第１の実行パターンから第２の実行パターンに切り替えることができる。
【００６７】
第２の実行パターンでは、ネットワーク実行コンポーネントインターフェース４３０に対応する文法要素４１３（文法要素４１１と同じ）がコンピューティングデバイス１０５によって実行されるとき、コンピューティングデバイス１０５は、第２のコンポーネント中の第２のネットワーク実行コンポーネント４５１を使用して入力データを処理して、出力データを取得する。
【００６８】
いくつかの実施例では、コンピューティングデバイス１０５が相応的な実行パターンで対応するネットワーク実行コンポーネントを呼ぶ出すように、クラスラベル（例えば、動的画像パターンクラスおよび静的画像パターンクラス）を第１のネットワーク実行コンポーネントおよび第２のネットワーク実行コンポーネントにそれぞれ設定する。
【００６９】
いくつかの実施例では、上記の第１および第２のネットワーク実行コンポーネント４４１および４５１は、パッケージされた保持対象およびパッケージされた保持関数に対する操作をサポートするように設計されてもよい。
【００７０】
いくつかの実施例では、第１のネットワーク実行コンポーネント４４１は、コンピューティングデバイス１０５で第２の実行パターンで実行されるように配置される文法要素（例えば、プレースホルダを決定するためのコード）が実行される時に、エラーなしでそのような文法要素に対する実行をスキップするように配置されてもよい。
【００７１】
いくつかの実施例では、第２のネットワーク実行コンポーネント４５１は、実行されると、コンピューティングデバイス１０５に、入力データに基づいて、入力データに対する第１のコンピューティンググラフを決定し、第１のコンピューティンググラフに基づいて、入力データを処理して出力データを取得するように配置されてもよい。
【００７２】
具体的には、第２の実行パターンでは、入力された変数（「プレースホルダー」とも呼ばれる）を定義する必要があるため、第２のネットワーク実行コンポーネント４５１は、入力するデータの形状およびタイプに応じてプレースホルダを自動的に決定してコンピューティンググラフを生成するように配置されることができ、次に、コンピューティングデバイス１０５は、生成されたコンピューティンググラフに従って、入力したデータに対して相応的な操作を実行して、出力データを決定する。この場合、コード４４０は、第２の実行パターンで実行されるように配置される文法要素を含む必要がなく、異なる実行パターンのコード４４０は完全に統合される。
【００７３】
いくつかの実施例では、バッチ（ｂａｔｃｈ）データが処理中に、バッチサイズ（ｂａｔｃｈ＿ｓｉｚｅ）が変化する可能性があるため、第２のネットワーク実行コンポーネント４５１もバッチサイズに適応する方式でプレースホルダーを設定するように配置されてもよい。例えば、プレースホルダーの推論に使用される関数の第１の次元を可変次元に設定することで実現することができる。
【００７４】
いくつかの実施例では、ループまたは反復実行などのプロセスで第２の実行パターンで使用されるコンピューティンググラフの反復的な構築を回避するために、第２のネットワーク実行コンポーネント４５１は、コンピューティングデバイス１０５が実行されるとき、コンピューティンググラフ構築マークの種類を決定するように配置されてもよく、このマークがコンピューティンググラフが構築されていないことを指示する場合、コンピューティングデバイス１０５は、入力データに対する第１のコンピューティンググラフを決定し、そうでない場合、再びにコンピューティンググラフを構築してはなく構築された第１のコンピューティンググラフを使用する。同様の手順は、コンピューティンググラフの構築を含む他のプロセスにも適用できる。
【００７５】
いくつかの実施例では、前述のネットワーク実行コンポーネントは、入力データのタイプに従って相応的な操作を実行するように配置されてもよい。
【００７６】
このようにして、コンピューティングデバイス１０５は、同じ文法要素および同じコンポーネントインターフェースを使用して、ネットワーク実行コンポーネントに対する呼び出しを実現することができる。コンピューティングデバイス１０５は、異なる実行パターンで入力データを処理することをサポートするように、所在の実行パターンの異なりに従って対応コンポーネントが含む実行ロジックを実行してもよい。
【００７７】
いくつかの実施例では、ネットワーク構築コンポーネントのインターフェースも同様の方法で設計することができる。第１の実行パターンでは、ネットワーク構築コンポーネントに対応する文法要素がコンピューティングデバイス１０５によって実行されるとき、コンピューティングデバイス１０５は、第１の制御フローコンポーネントを介してネットワーク構築コンポーネントを使用することができる。第２の実行パターンでは、ネットワーク構築コンポーネントに対応する文法要素がコンピューティングデバイス１０５によって実行されるとき、コンピューティングデバイス１０５は、第２の制御フローコンポーネントを介してネットワーク構築コンポーネントを使用することができる。
【００７８】
このようにして、コンピューティングデバイス１０５は、同じ文法要素を使用して、２つの実行パターンで例えばＬＳＴＭなどのネットワーク構築のためのコンポーネントを使用することができる。
【００７９】
図５は、本開示のいくつかの実施例による、コンピューティングデバイス１０５がネットワーク最適化コンポーネントを実行する方法５００の概略図を示す。
【００８０】
ネットワーク最適化コンポーネントは、ネットワークモデルの最適化待ちパラメータを更新するように配置される。例えば、ランダム勾配降下法（ＳＧＤ）を採用して、負の勾配の方向に最適化待ちパラメータを更新できる。従来の解決案では、前述した第１の実行パターンと第２の実行パターン（リアルタイム実行と段階的実行）との違いにより、コンピューティングデバイス１０５は、異なる文法要素を使用してネットワーク最適化コンポーネントへの呼び出しを実現する必要がある。
【００８１】
本開示の実施例によれば、第１の実行パターンおよび第２の実行パターンで使用されるネットワーク最適化コンポーネントは、同じコンポーネントインターフェース、すなわち、同じネットワーク最適化コンポーネントインターフェース５３０を有するように設計することができる。第１または第２の実行パターンでネットワーク最適化機能を実現するために使用される方法を対応するコンポーネント５４１または５５１にパッケージすることも可能である。したがって、コード５１０は、ネットワーク最適化機能を実現する方法に対応する異なる文法要素を含む必要はない。
【００８２】
第１の実行パターンでは、ネットワーク最適化コンポーネントインターフェース５３０に対応する文法要素がコンピューティングデバイス１０５によって実行されるとき、コンピューティングデバイス１０５は、第１のコンポーネント５４０内の第１のネットワーク最適化コンポーネント５４１を使用してネットワークモデルパラメータを更新することができる。
【００８３】
コンピューティングデバイス１０５は、例えば、コード５１０の文法要素５１２によって、パターンパラメータ更新コンポーネント５６１を呼び出して、実行パターンを第１の実行パターンから第２の実行パターンに切り替えることができる。
【００８４】
第２の実行パターンでは、ネットワーク最適化コンポーネントインターフェース５３０に対応する文法要素がコンピューティングデバイス１０５によって実行されるとき、コンピューティングデバイス１０５は、第２のコンポーネント５５０内の第２のネットワーク最適化コンポーネント５５１を使用してネットワークモデルパラメータを更新することができる。
【００８５】
いくつかの実施例では、第２のネットワーク最適化コンポーネントおよび第１のネットワーク最適化コンポーネントは両方とも、重みパラメータ（例えば、重み行列Ｗ）に基づいて入力データを操作するように配置される変換層コンポーネントを呼び出す。例えば、この操作には、入力データに重み行列を乗算する操作が含まれる。
【００８６】
いくつかの実施例では、第１のネットワーク最適化コンポーネントは、実行される際に、コンピューティングデバイス１０５に、ネットワークモデルパラメータによる損失を決定するステップと、（例えば、損失関数コンポーネントを使用して）前記ネットワークモデルパラメータに関連する勾配を決定するステップと、（例えば、各タイムステップで実行される操作を定義するように配置されるタイムステップコンポーネントを使用して）更新されたネットワークモデルパラメータを決定するステップと、を別々に（追加的にまたは代替的に、順次に）実行させ、それぞれ結果を出力するように配置されてもよい。
【００８７】
第２のネットワーク最適化コンポーネントは、コンピューティングデバイス１０５による第１のネットワーク最適化コンポーネントの実行に含まれるステップに対応するために、実行される際に、コンピューティングデバイス１０５に、ネットワークモデルパラメータによる損失を決定するように、順方向伝搬に対する第２のコンピューティンググラフを構築するステップ５５２と、ネットワークモデルパラメータに関連する勾配を決定するように、逆方向伝搬に対する第３のコンピューティンググラフを構築するステップ５５４と、更新されたネットワークモデルパラメータを決定するように、ネットワークモデルパラメータの更新に対する第４のコンピューティンググラフを構築するステップ５５６と、を別々に（追加的にまたは代替的に、順次に）実行させるように配置されてもよい。これにより、第２の実行パターンでは、コンピューティングデバイス１０５は、デバッグを容易にするために結果を段階的に出力することができる。
【００８８】
いくつかの実施例では、ネットワーク最適化コンポーネントは、上記のようにネットワーク実行コンポーネントを使用して、コンピューティングデバイス１０５が読み取る必要のあるコードおよび実行ステップを簡単化することができる。例えば、損失関数の計算や逆方向伝搬の勾配計算の過程で、上記のネットワーク実行コンポーネントを使用することができる。
【００８９】
いくつかの実施例では、コンピューティングデバイス１０５は、最初の反復プロセスのみで前記ステップ５５２〜５５６におけるコンピューティンググラフを構築するステップを実行する。後続の反復プロセスでは、構築されたコンピューティンググラフを使用して、損失関数および／または勾配および／または更新されたネットワークモデルパラメータを決定することができる。
【００９０】
上記のステップは、図６を参照して詳細に説明される。図６は、本開示のいくつかの実施例によるパラメータを更新するためのコンピューティンググラフ６００の概略図を示している。具体的には、コンピューティンググラフ６００は、前述のステップ５５２〜５５６に対応する。コンピューティンググラフ６００は例示のためだけであり、実際には、コードに従ってコンピューティングデバイス１０５が決定したコンピューティンググラフは、より多いおよび／またはより少ないおよび／または異なるコンピューティングノードを含み得ることが理解され得る。例えば、学習率調整を考慮する場合、このコンピューティンググラフは、学習率調整に関連するノードを含み得る。
【００９１】
コンピューティンググラフ６００は、順方向伝搬部分６５２、逆方向伝搬部分６５４、およびネットワークモデルパラメータ更新部分６５６を含み得る。
【００９２】
第２の実行パターンでは、第２のネットワーク最適化コンポーネントを使用することにより、コンピューティングデバイス１０５は、まず、順方向伝搬部分６５２のコンピューティンググラフ（第２のコンピューティンググラフ）を構築し、このコンピューティンググラフを使用して相応的な操作を実行して当該部分の出力結果（例えば、誤差）を取得する。
【００９３】
具体的には、最適化待ちパラメータは、バイアスパラメータ６０１（例えば、バイアスパラメータｂ）および重みパラメータ６０２（例えば、重み行列Ｗ）であり、これらは、初期化操作６０１および６０２を通じて初期値を設定することができる。コンピューティンググラフ構築段階では、プレースホルダーするためのプレースホルダーを構築することができ、このプレースホルダーは、コンピューティンググラフ実行段階で、操作６０３により入力データ６０７を入力することができる。次に、コンピューティングデバイス１０５は、操作６１４（例えば、上記のような変換層コンポーネントを呼び出すこと）を介してネットワークモデルの出力６０９を計算することができる。出力６０９は、例えば、入力重みパラメータ６０２に入力データを乗算し、さらにバイアスパラメータ６０１を加算することにより得られる（すなわち、Ｗ＊ｘ＋ｂ）。コンピューティンググラフ構築段階では、プレースホルダするためのプレースホルダを構築することができ、操作６０４によって、出力６０９に対応する実際値６１０（例えば、マークされたサンプルを介して取得することができる）を入力することができる。コンピューティンググラフの実行段階において、コンピューティングデバイスは、出力６０９と実際値６１０に操作６１９（例えば、平均二乗誤差を求める操作）を行い、ネットワークモデルの出力６０９と実際値６１０との間の損失６１１（誤差と呼ばれることもある）を取得する。これから、順方向伝搬部分は終了する。これにより、コンピューティングデバイス１０５は、第２の実行パターンで、第２のネットワーク最適化コンポーネントを呼び出すことによって損失６１１を取得し、順方向伝搬プロセスの調整を容易にすることができる。
【００９４】
次に、第２のネットワーク最適化コンポーネントを使用することにより、コンピューティングデバイス１０５は、逆方向伝搬部分６５４のコンピューティンググラフ（第３のコンピューティンググラフ）を構築し、このコンピューティンググラフを使用して相応的な操作を実行し、この部分の出力結果（データ６１５および６１６）を取得することができる。
【００９５】
具体的には、出力６０９、損失６１１、実際値６１０および損失の勾配６１２に基づいて、コンピューティングデバイス１０５は、操作６１３（例えば、各入力について、それに対するすべての出力の勾配の合計を計算すること）を実行することによって、出力６０９の勾配を指示するデータ６２０が得られる。バイアスパラメータ６０１、重みパラメータ６０２、入力データ６０７、出力６０９、およびデータ６１３に基づいて、コンピューティングデバイス１０５は、操作６１４を実行して、重みパラメータ６０５およびバイアスパラメータ６０６の勾配をそれぞれ指示するデータ６１５および６１６を取得する。それから、逆方向伝搬の部分は終了する。これにより、コンピューティングデバイス１０５は、第２の実行パターンで、重みパラメータ６０５およびバイアスパラメータ６０６の勾配を指示するデータ６１５および６１６を取得し、逆方向伝搬プロセスの調整を容易にすることができる。
【００９６】
次に、第２のネットワーク最適化コンポーネントを使用することにより、コンピューティングデバイス１０５は、ネットワークモデルパラメータ更新部分６５６のコンピューティンググラフ（第４のコンピューティンググラフ）を構築し、このコンピューティンググラフを使用して相応的な操作を実行し、出力結果を得ることができ、この出力結果に基づいてネットワークモデルのパラメータ６０５および６０６を更新する。
【００９７】
具体的には、データ６１５および６１６に基づいて、コンピューティングデバイスは、例えば、操作６１７および６１８をそれぞれ実行して（ランダム勾配降下ＳＧＤによって実行され得る）、重みパラメータ６０１およびバイアスパラメータ６０２を更新することができる。
【００９８】
図５に戻ると、いくつかの実施例では、第１のネットワーク最適化コンポーネントは、実行される際に、コンピューティングデバイス１０５に、ネットワークモデルパラメータによる損失を決定するステップと、前記ネットワークモデルパラメータに関連する勾配を決定するステップと、更新されたネットワークモデルパラメータを決定して結果を出力するステップと、を統一的に実行させるように配置され得る。これは、上記のステップについて統一的に定義された関数を介して、この関数を呼び出すことで実現できる。これにより、関数が呼び出されるときに、対応する結果が出力される。
【００９９】
従来の解決案では、第２の実行パターンでは、まずコンピューティンググラフ順方向ネットワークに従ってに逆方向ネットワークを追加し、次にコンピューティンググラフに勾配が更新されたオペレーターを追加するコンポーネントを使用してコンピューティンググラフを決定し、実行コンポーネントを使用して、決定されたコンピューティンググラフに相応的な計算を実行する。これに対し、本開示の実施例によれば、コンピューティングデバイス１０５は、同じ文法要素および同じコンポーネントインターフェースを使用して、ネットワーク最適化コンポーネントに対する呼び出しを実現することができる。コンピューティングデバイス１０５は、異なる実行パターンでのネットワークモデルパラメータの最適化をサポートするように、所在の実行パターンの異なりに従って、対応コンポーネントに含まれる実行ロジックをそれぞれ実行する。
【０１００】
図７は、本開示のいくつかの実施例による、コンピューティングデバイス１０５が学習率調整コンポーネントを実行する方法７００の概略図である。
【０１０１】
従来の解決案では、上記した第１の実行パターンと第２の実行パターンとの違いにより（リアルタイム実行および段階的実行）、コンピューティングデバイス１０５は、異なる文法要素によりネットワーク最適化コンポーネントに対する呼び出しを実現する必要がある。ネットワーク最適化コンポーネントがネットワークモデルのパラメータ最適化を実行する場合、通常、次の式１に従って更新されたパラメータを決定する必要がある。
【０１０２】
ｐａｒａｍ＿ｎｅｗ＝ｐａｒａｍ−ｌｅａｒｎｉｎｇ＿ｒａｔｅ＊ｇｒａｄ  （式１）
その中で、ｐａｒａｍ＿ｎｅｗは更新されたパラメータを指し、ｐａｒａｍは更新されていないパラメータを指し、ｌｅａｒｎｉｎｇ＿ｒａｔｅは学習率を指し、ｇｒａｄは勾配を指す。
【０１０３】
ネットワークモデルのトレーニングプロセスでは、学習率を調整する必要があることは理解できる。通常、トレーニングの反復回数が多いほど、必要な学習率は小さくなる。
【０１０４】
本開示の実施例によれば、第１の実行パターンおよび第２の実行パターンで使用される学習率調整コンポーネントは、同じコンポーネントインターフェース、すなわち、同じ学習率調整コンポーネントインターフェース７３０を有するように設計され得る。第２の実行パターンで学習率調整機能を実現する方法を対応するコンポーネント７５１にパッケージすることも可能である。したがって、コード７１０は、学習率調整機能を実現する方法に対応する異なる文法要素を含む必要はない。
【０１０５】
第１の実行パターンでは、学習率調整コンポーネントインターフェース７３０に対応する文法要素７１１がコンピューティングデバイス１０５によって実行されるとき、コンピューティングデバイス１０５は、第１のコンポーネント７４０内の第１の学習率調整コンポーネント７４１を使用して学習レートを調整することができる。
【０１０６】
コンピューティングデバイス１０５は、例えば、コード７１０内の文法要素７１２を使用して、パターンパラメータ更新コンポーネント７６１を呼び出して、実行パターンを第１の実行パターンから第２の実行パターンに切り替えることができる。
【０１０７】
第２の実行パターンでは、学習率調整コンポーネントインターフェース７３０に対応する文法要素７１３（例えば、それは文法要素７１１と同じである）がコンピューティングデバイス１０５によって実行されると、コンピューティングデバイス１０５は、第２のコンポーネント７５０中の第２の学習率調整コンポーネント７５１を使用して学習率を調整することができる。
【０１０８】
学習率を調整する過程で、更新された学習率を計算する必要があるため、第２の実行パターンでは、対応するコンピューティンググラフノードを設定し、このノードにデータを入力することによって実現される必要がある。その実現プロセスは相対的に複雑で、ある程度のリソースの浪費を引き起こす。
【０１０９】
いくつかの実施例では、第２の学習率調整コンポーネント７５１は、第２の学習率調整コンポーネントが実行されるときに、コンピューティングデバイス１０５に、学習率を更新するためのノードを含まずに学習率ノードを含む第５のコンピューティンググラフを構築するステップ７５２と、学習率の更新値が学習率ノードの入力として受信されるステップ７５４と、第５のコンピューティンググラフ及び学習率の更新値に基づいて学習率を調整するステップ７５６と、を実行させるように配置される。
【０１１０】
具体的には、上記の操作により、コンピューティングデバイス１０５は、学習率調整コンポーネント（例えば、学習率調整コンポーネントで使用される上記の時間ステップコンポーネント）が初めて呼び出された場合、第５のコンピューティンググラフを生成するときに、学習率を更新するための計算操作の元のノードを入力学習率のノードに変更し、初期の学習率を入力することができる。次に、コンピューティングデバイス１０５は、その後に学習率調整コンポーネント（例えば、タイムステップコンポーネント）を呼び出す際に、ネットワークモデルパラメータ更新を実行するように、更新された学習率を外部からコンピューティンググラフの相応的なノードに転送することができる。ここで、更新された学習率は、コンピューティングデバイス１０５が、例えばｐｙｔｈｏｎなどの言語で書かれたプログラムを実行することによって計算することができる。
【０１１１】
いくつかの実施例では、ネットワーク最適化コンポーネントは、上記のネットワーク実行コンポーネントおよび上記のネットワーク最適化コンポーネントを使用して、コンピューティングデバイス１０５が読み取る必要のあるコードおよび実行されるステップを簡単化することができる。例えば、このようにして、コンピューティングデバイス１０５が学習率を計算するための必要とされるステップを簡単化することができ、それにより、計算を実現するために必要とされるコストを削減する。
【０１１２】
図８は、本開示の実施例による、深層学習ネットワークモデルを構築するための装置８００の概略ブロック図を示している。図８に示すように、装置８００は、パターンパラメータに基づいてコードを実行するための実行パターンを決定するように配置される実行パターン決定モジュール８０２を含むことができる。装置８００は、実行パターンが第１の実行パターンであると決定された場合に、コード内の文法要素によって第１の実行パターンで使用できる第１のコンポーネントを使用してコードを実行するように配置される第１の実行モジュール８０４をさらに含むことができる。装置８００は、実行パターンが第２の実行パターンであると決定された場合に文法要素によって第２の実行パターンで使用できる第２のコンポーネントを使用してコードを実行するように配置される第２の実行モジュール８０６をさらに含むことができ、第１のコンポーネントと第２のコンポーネントは同じコンポーネントインターフェイスを有し、文法要素はコンポーネントインターフェイスに対応する。
【０１１３】
いくつかの実施例では、上記のコンポーネントインターフェースは、制御フローコンポーネントインターフェースを含む。制御フローインターフェースに対応する文法要素が装置によって実行されるとき、第１の実行モジュール８０４はさらに、第１の実行パターンで、第１のコンポーネント中の第１の制御フローコンポーネントを使用するように配置される。第２の実行モジュール８０６はさらに、第２の実行パターンで、第２のコンポーネント中の第２の制御フローコンポーネントを使用するように配置される。
【０１１４】
いくつかの実施例では、上記のコンポーネントインターフェースは、ネットワーク構築コンポーネントインターフェースを含む。ネットワーク構築コンポーネントに対応する文法要素が装置によって実行されるとき、第１の実行モジュール８０４はさらに、第１の実行パターンで、第１の制御フローコンポーネントを介してネットワーク構築コンポーネントを使用するように配置される。第２の実行モジュール８０６はさらに、第２の実行パターンで、第２の制御フローコンポーネントを介してネットワーク構築コンポーネントを使用するように配置される。
【０１１５】
いくつかの実施例では、上記のコンポーネントインターフェースは、ネットワーク実行コンポーネントインターフェースを含む。ネットワーク実行コンポーネントインターフェースに対応する文法要素が装置によって実行されるとき、第１の実行モジュール８０４はさらに、第１の実行パターンで、第１のコンポーネント中の第１のネットワーク実行コンポーネントを使用して入力データを処理して出力データを取得するように配置される。第２の実行モジュール８０６はさらに、第２の実行パターンで、第２のコンポーネント中の第２のネットワーク実行コンポーネントを使用して入力データを処理して出力データを取得するように配置される。
【０１１６】
いくつかの実施例では、上記の第２の実行モジュール８０６はさらに、第２のコンポーネント中の第２のネットワーク実行コンポーネントが装置によって実行されるときに、入力データに基づいて入力データに対する第１のコンピューティンググラフを決定し、第１のコンピューティンググラフに基づいて、入力データを処理して出力データを取得するように配置される。
【０１１７】
いくつかの実施例では、上記のコンポーネントインターフェースは、ネットワーク最適化コンポーネントインターフェースを含む。ネットワーク最適化コンポーネントインターフェースに対応する文法要素が装置によって実行されるとき、第１の実行モジュール８０４はさらに、第１の実行パターンで、第１のコンポーネント中の第１のネットワーク最適化コンポーネントを使用してネットワークモデルパラメータを更新するように配置される。そして、第２の実行モジュール８０６は、さらに、第２の実行パターンで、第２のコンポーネント中の第２のネットワーク最適化コンポーネントを使用して、ネットワークモデルパラメータを更新するように配置される。
【０１１８】
いくつかの実施例では、上記の第２の実行モジュール８０６はさらに、第２のネットワーク最適化コンポーネントが装置によって実行されるとき、ネットワークモデルパラメータによる損失を決定するように順方向伝搬に対する第２のコンピューティンググラフを構築し、ネットワークモデルパラメータに関連する勾配を決定するように逆方向伝搬に対する第３のコンピューティンググラフを構築し、更新されたネットワークモデルパラメータを決定するように勾配更新に対する第４のコンピューティンググラフを構築するように配置される。
【０１１９】
いくつかの実施例では、上記のコンポーネントインターフェースは、学習率調整コンポーネントインターフェースを含む。学習率調整コンポーネントインターフェースに対応する文法要素が装置によって実行されるとき、第１の実行モジュール８０４は、さらに、第１の実行パターンで、ネットワークモデルパラメータを更新するように第１のコンポーネント中の第１の学習率調整コンポーネントを使用して学習率を調整するように配置される。第２の実行モジュール８０６は、さらに、第２の実行パターンで、ネットワークモデルパラメータを更新するように第２のコンポーネント中の第２の学習率調整コンポーネントを使用して学習率を調整するように配置される。
【０１２０】
いくつかの実施例では、上記の第２の実行モジュール８０６はさらに、第２の学習率調整コンポーネントが装置によって実行されるとき、学習率ノードを更新するためのノードを含まずに学習率ノードを含む第５のコンピューティンググラフを構築し、学習率ノードの入力として学習率の更新値を受信し、第５のコンピューティンググラフと学習率の更新値に基づいて学習率を調整するように配置される。
【０１２１】
いくつかの実施例では、上記の第１の実行モジュール８０４は、さらに、文法要素に関連付けられた入力データに基づいて、第１のコンポーネントに対応する第１の操作を実行して、出力データを決定するようにさらに配置される。
【０１２２】
いくつかの実施例では、上記の第２の実行モジュール８０６は、さらに、第２のコンポーネントに対応する第２の操作を使用して、複数の計算操作に対応する複数のネットワークノードを含むコンピューティンググラフを決定し、文法要素に関連付けられた入力データに基づいて、実行コンポーネントによりコンピューティンググラフを使用して出力データを決定するように配置される。
【０１２３】
いくつかの実施例では、第１の実行パターンは動的画像パターンを含み、第２の実行パターンは静的画像パターンを含む。
【０１２４】
本願の実施例によれば、本願はまた、電子デバイス、読み取り可能な記憶媒体、およびコンピュータプログラム製品を提供する。
【０１２５】
図９に示すように、本願の一実施例による深層学習ネットワークモデルを構築する方法による電子デバイス９００のブロック図である。電子デバイスは、ラップトップコンピューター、デスクトップコンピューター、ワークステーション、パーソナルデジタルアシスタント、サーバー、ブレードサーバー、メインフレームコンピューター、その他の適切なコンピューターなど、各種の形式のデジタルコンピューターを表すことを目的としている。電子デバイスは、携帯情報端末、携帯電話、スマートフォン、ウェアラブルデバイス、およびその他の同様のコンピューティングデバイスなどの各種の形式のモバイルデバイスを表すこともできる。本明細書に示される部品、それらの接続および関係、ならびにそれらの機能は単なる例であり、本明細書に記載および／または要求とされる本願の実現を制限することを意図するものではない。
【０１２６】
図９に示すように、当該電子デバイスは、１つまたは複数のプロセッサ９０１、メモリ９０２、および高速インターフェースおよび低速インターフェースを含む様々な部品を接続するためのインターフェースを含む。各部品は、異なるバスを使用して相互に接続されており、共通のマザーボードにインストールすることも、必要に応じて他の方法でインストールすることもできる。プロセッサは、外部入力／出力デバイス（インターフェースに結合された表示デバイスなど）にＧＵＩのグラフィック情報を表示するための、メモリ内またはメモリ上に格納された命令を含む、電子デバイスで実行される命令を処理することができる。他の実施形態では、必要に応じて、複数のプロセッサおよび／または複数のバスを、複数のメモリおよび複数のメモリとともに使用することができる。同様に、複数の電子デバイスを接続することができ、各デバイスは一部の必要な操作を提供する（例えば、サーバーアレイ、ブレードサーバーのグループ、またはマルチプロセッサシステムとして）。図９では、一つのプロセッサ９０１が例として取り上げられている。
【０１２７】
メモリ９０２は、この出願によって提供される非一時的なコンピュータ可読記憶媒体である。ここで、少なくとも１つのプロセッサは、この出願で提供される深層学習ネットワークモデルを構築するための方法を実行するように、メモリは、少なくとも１つのプロセッサによって実行可能な命令を格納する。本願の非一時的なコンピュータ可読記憶媒体は、コンピュータ命令を格納し、当該コンピュータ命令は、本願によって提供される深層学習ネットワークモデルを構築するための方法をコンピュータに実行させるために使用される。
【０１２８】
非一時的なコンピュータ可読記憶媒体とするメモリ９０２は、非一時的なソフトウェアプログラム、非一時的なコンピュータ実行可能プログラムとモジュール、および本願実施例中の深層学習ネットワークモデルを構築する方法に対応するプログラム命令／モジュール（例えば、図８に示される実行パターン決定モジュール８０２、第１の実行モジュール８０４、および第２の実行モジュール８０６）を格納するために使用することができる。プロセッサ９０１は、メモリ９０２に格納された非一時的なソフトウェアプログラム、命令、およびモジュールを実行することによって、サーバの様々な機能的アプリケーションおよびデータ処理を行なう。すなわち、前述の方法の実施例において深層学習ネットワークモデルを構築する方法を実現する。
【０１２９】
メモリ９０２は、オペレーティングシステムと少なくとも１つの機能によって必要とされるアプリケーションプログラムを記憶するプログラム領域および深層学習ネットワークモデルを構築する電子デバイスの使用により作成されたデータを記憶する記憶データ領域を含み得る。また、メモリ９０２は、少なくとも１つの磁気ディスク記憶装置、フラッシュ記憶装置、または他の非一時的ソリッドステート記憶装置などの高速ランダムアクセスメモリを含み得る。いくつかの実施例では、メモリ９０２は、任意選択で、プロセッサ９０１に対して遠隔的に設置されるメモリを選択的に含み、これらの遠隔メモリは、ネットワークを介して深層学習のネットワークモデルを構築する電子デバイスに接続され得る。前述のネットワークの例には、インターネット、企業イントラネット、ローカルエリアネットワーク、モバイル通信ネットワーク、およびそれらの組み合わせが含まれるが、これらに限定されない。
【０１３０】
深層学習ネットワークモデルを構築するための方法の電子デバイスは、入力デバイス９０３および出力デバイス９０４をさらに含み得る。プロセッサ９０１、メモリ９０２、入力デバイス９０３、および出力デバイス９０４は、バスによって、または他の方法で接続することができる。図９には、バスによる接続ことを例とする。
【０１３１】
入力デバイス９０３は、入力データまたは文字情報を受信し、タッチスクリーン、キーパッド、マウス、トラックパッドなどの深層学習ネットワークモデルを構築する電子デバイスのユーザ設定および機能制御に関連するキー信号入力を生成することができ、例えばタッチスクリーン、キーパッド、マウス、トラックパッド、タッチパッド、インジケータースティック、1つ以上のマウスボタン、トラックボール、ジョイスティックなどの入力デバイスである。出力装置９０４は、表示デバイス、補助照明装置（例えば、ＬＥＤ）、触覚フィードバック装置（例えば、振動モーター）などを含み得る。この表示装置は、液晶ディスプレイ（ＬＤＣ）、発光ダイオード（ＬＥＤ）ディスプレイ、およびプラズマディスプレイを含み得るが、これらに限定されない。いくつかの実施例では、ディスプレイデバイスは、タッチスクリーンであり得る。
【０１３２】
本明細書に記載のシステムおよび技術の様々な実施形態は、デジタル電子回路システム、集積回路システム、特定用途向けＡＳＩＣ（特定用途向け集積回路）、コンピュータハードウェア、ファームウェア、ソフトウェア、および／またはそれらの組み合わせで実現することができる。これらの様々な実施形態は、少なくとも１つのプログラム可能なプロセッサを含むプログラム可能なシステム上で実行および／または解釈される１つまたは複数のコンピュータプログラムに実施されることを含み得る。当該プログラム可能なプロセッサは、ストレージシステム、少なくとも１つの入力装置、および少なくとも１つの出力装置からデータおよび命令を受信し、データおよび命令をこのストレージシステム、少なくとも１つの出力デバイス及び少なくとも１つの入力デバイスに送信することができる専用または一般的なプログラマブルプロセッサであり得る。
【０１３３】
これらの計算プログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとも呼ばれる）には、プログラム可能なプロセッサのデバイス命令が含まれ、高水準プロセスおよび／または対象指向プログラミング言語、および／またはアセンブリ／デバイス言語を利用してこれらの計算プログラムを実施する。本明細書で使用される場合、「デバイス可読媒体」および「コンピュータ可読媒体」という用語は、プログラム可能なプロセッサの任意のコンピュータプログラム製品、デバイス、および／または装置（例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジック装置（ＰＬＤ）））にデバイス命令および／またはデータを提供するために使用されることを指し、デバイス可読信号としてのデバイス命令を受信するデバイス可読メディアを含む。「デバイス可読信号」という用語は、プログラム可能なプロセッサにデバイス命令および／またはデータを提供するために使用される任意の信号を指す。
【０１３４】
ユーザとのインタラクティブを提供するために、ここで説明するシステムおよび技術は、ユーザに情報を表示するための表示装置（例えば、ＣＲＴ（陰極線管）またはＬＣＤ（液晶ディスプレイ）モニター））、及びユーザがコンピューターに入力を提供できるキーボードおよびポインティングデバイス（例えば、マウスまたはトラックボール）を備えたコンピューターに実施することができる。他のタイプの装置は、ユーザとのインタラクティブ を提供することに用いられる。例えば、ユーザに提供されるフィードバックは、任意の形式の感覚フィードバック（例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック）であり、任意の形式（音響入力、音声入力、または触覚入力を含む）を用いてユーザからの入力を受信する。
【０１３５】
本明細書に記載のシステムおよび技術は、バックエンド部品を含むコンピューティングシステム（例えば、データサーバーとして）、またはミドルウェア部品を含むコンピューティングシステム（例えば、アプリケーションサーバー）、またはフロントエンド部品を含むコンピューティングシステム（例えば、グラフィカルユーザインターフェイス又はＷｅｂブラウザーを備えたユーザコンピューターであり、ユーザがこのグラフィカルユーザインターフェイス又はこのＷｅｂブラウザーによりここで説明するシステムとテクノロジーの実施形態とインタラクティブすることができる）、またはそのようなバックグラウンド部品を含む、ミドルウェア部品、またはフロントエンド部品の任意組み合わせのコンピューティングシステム内に実施させる。システムの部品は、デジタルデータ通信の任意の形式または媒体（例えば、通信ネットワーク）を介して相互に接続できる。通信ネットワークの例には、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、およびインターネットが含まれる。
【０１３６】
コンピュータシステムには、クライアントとサーバーを含めることができる。クライアントとサーバーは通常、互いに遠く離れており、通常は通信ネットワークを介してインタラクティブする。クライアントとサーバーの関係は、相応的なコンピューター上で実行され、相互にクライアント−サーバー関係を持つコンピュータープログラムによって生成される。
【０１３７】
２つの実行パターン（動的画像と静的画像など）のインターフェースが統一になる実現方式により、開発者は一つのコードセットを記述するだけでそれを２つの実行パターンで実行させることができる。コンピューティングデバイスは、この一つのコードセットを使用して、動的画像パターンと静的画像パターンで別々に実行できる。このようにして、デバッグが容易な動的画像の利点、およびグローバル最適化と予測手配が容易である静的画像の利点を維持し、同時にコードの書き直しやコードの動静変換の実行の必要性を回避することができる。
【０１３８】
上記の各種の形式のプロセス、再並べ替え、追加、または削除のステップを使用することができると理解すべきである。例えば、本願に記載されている各ステップは、並行して、順次に、または異なる順序で実行することができるが、本願に開示されている技術案の所望の結果が達成できる限り、本明細書にはこれに限定されない。
【０１３９】
上記の具体的な実施形態は、本願の保護範囲を制限するものを構成していない。当業者は、様々な修正、組み合わせ、サブ組み合わせおよび置換が、設計要件および他の要因に従って行うことができることを理解する必要がある。本願の精神と原則の範囲内で行われた変更、同等の交換、および改善は、本願の保護範囲に含まれすべきである。
【図１】
2022000768.tif 000003
【図２】
2022000768.tif 000004
【図３】
2022000768.tif 000005
【図４】
2022000768.tif 000006
【図５】
2022000768.tif 000007
【図６】
2022000768.tif 000008
【図７】
2022000768.tif 000009
【図８】
2022000768.tif 000010
【図９】
2022000768.tif 000011