モデルを構築して変換する

マイクロコントローラーは RAM とストレージが限られているため、 サイズ、サイズ、サイズです。また、LiteRT for マイクロコントローラは現在一部の演算のみをサポートしているため、 いくつかあります。

このドキュメントでは、TensorFlow モデルを Google Cloud で実行する です。また、サポートされているオペレーションの概要と、 限られたメモリに収まるようにモデルを設計、トレーニングするためのガイダンスです。

モデルを構築して変換するエンドツーエンドの実行可能な例については、 Hello World 例です。

モデル変換

トレーニング済みの TensorFlow モデルをマイクロコントローラで動作するように変換するには、 LiteRT コンバータ Python API これにより、モデルは FlatBuffer: モデルサイズを縮小します。 LiteRT オペレーションを使用するように変更します。

モデルサイズをできる限り小さくするには、 トレーニング後の量子化

C 配列に変換する

多くのマイクロコントローラ プラットフォームは、ファイルシステムをネイティブでサポートしていません。「 プログラムのモデルを使用する最も簡単な方法は、それを C 配列として含めることです。 プログラムにコンパイルします。

次の unix コマンドを実行すると、 char 配列としての LiteRT モデル:

xxd -i converted_model.tflite > model_data.cc

出力は次のようになります。

unsigned char converted_model_tflite[] = {
  0x18, 0x00, 0x00, 0x00, 0x54, 0x46, 0x4c, 0x33, 0x00, 0x00, 0x0e, 0x00,
  // <Lines omitted>
};
unsigned int converted_model_tflite_len = 18200;

ファイルを生成したら、プログラムに含めることができます。内容 メモリ容量を改善するために配列宣言を const に変更することが重要です。 統合プラットフォームにおける 効率性の向上を図ります

モデルをプログラムに含めて使用する方法の例については、以下をご覧ください。 hello_world_test.ccHello World の例)をご覧ください。

モデルのアーキテクチャとトレーニング

マイクロコントローラで使用するモデルを設計する際は、 使用されるオペレーションです。

モデルの規模

モデルは、ターゲット デバイスのメモリ内に収まるように、 バイナリとして、または実行時の両方で、プログラムの他の部分を移行できます。

より小さなモデルを作成するには、小さなレイヤを 説明します。ただし、小規模なモデルは学習不足の影響を受けやすくなります。 つまり、多くの問題では、最大規模のモデルを使用して 選択することもできますただし、より大規模なモデルを使用すると、 増大する傾向があります

ワークロード

モデルのサイズと複雑さはワークロードに影響します。大規模、複雑 デューティ サイクルが長くなる可能性があり、その場合はデバイスのプロセッサが 働く時間が増え、アイドル状態が減る傾向にあります。消費電力が 消費電力と熱出力です。ご使用の環境によっては、 説明します。

オペレーション サポート

LiteRT for Microcontrollers は現在、 TensorFlow 演算。これは可能なモデル アーキテクチャに影響を与えます。 指定します。Google では現在 リファレンス実装と最適化を紹介します。

サポートされているオペレーションは micro_mutable_ops_resolver.h