[従来] モデル・オプティマイザーの拡張

危険

ここで説明されているコードは非推奨になりました。従来のソリューションの適用を避けるため使用しないでください。下位互換性を確保するためにしばらく保持されますが、最新のアプリケーションでは使用してはなりません

このガイドでは、非推奨である TensorFlow 変換方法について説明します。新しい推奨方法に関するガイドは、フロントエンド拡張に記載されています。

モデル・オプティマイザーの拡張機能を使用すると、モデル・オプティマイザーのコアコードを変更せずに、モデル変換パイプラインにロジックを挿入できます。モデル・オプティマイザー拡張機能には 3 つのタイプがあります。

  1. モデル・オプティマイザー操作

  2. フレームワーク操作エクストラクター

  3. モデル変換。モデル変換のフロントフェーズ、ミドルフェーズ、またはバックフェーズで実行できます。

拡張機能は、Python コードを含むプレーン・テキスト・ファイルです。ファイルには、拡張基本クラスの 1 つから継承されたクラス (複数可) が含まれている必要があります。拡張ファイルは、次の構造のディレクトリーに保存する必要があります。

./<MY_EXT>/
           ops/                  - custom operations
           front/                - framework independent front transformations
                 <FRAMEWORK_1>/  - front transformations for <FRAMEWORK_1> models only and extractors for <FRAMEWORK_1> operations
                 <FRAMEWORK_2>/  - front transformations for <FRAMEWORK_2> models only and extractors for <FRAMEWORK_2> operations
                 ...
           middle/               - middle transformations
           back/                 - back transformations

モデル・オプティマイザーは、内部で同じレイアウトを使用して、組み込みの拡張機能を保持します。唯一の例外は、mo/ops/ ディレクトリーがモデル・オプティマイザー操作のソースとしても使用されることです。

拡張子を含むルート・ディレクトリーの名前は、組み込みの Model Optimizer 拡張機能と名前が競合するため、“extensions” と等しくないようにしてください。

モデル・オプティマイザー自体はこれらの拡張機能を使用して構築されているため、モデル・オプティマイザーのコードには膨大な拡張機能の使用例があります。