)に機能ベースレイヤを提供することを目的としています。デバイスで利用できます。CPU、GPU、アクセラレータを指すのに使用します。デバイスを指す場合は必ず「Android」という単語を入れます。他の形でデバイスという単語を使用した場合は、プロセッサやアクセラレータを指します。デバイスのデータを適用することで、推論処理をサポートします。この推論処理には、画像の分類、ユーザー行動の予測、検索クエリに対する最適な回答の選択などが含まれます。デバイス上で推論を実行することには、次のような多くのメリットがあります。ネットワーク経由でリクエストを送信して応答を待つ必要がありません。これはカメラからの連続フレームを処理する動画アプリにおいて、非常に重要な点です。ネットワークがつながらない状況でもアプリケーションが動作します。使う場合に比べて計算速度が格段に速くなります。デバイスの外に送信されません。ファームは必要ありません。デベロッパーが留意すべきデメリットもあります。ネットワークの評価時は計算量が多くなるため、電池の消費量が増えます。計算が長時間におよぶアプリなどで、この点が懸念される場合は、電池の状態をモニタリングすることをおすすめします。モデルのサイズに注意してください。モデルは何メガバイトもの容量を占有する場合があります。含まれるモデルの容量が大きく、ユーザーに悪影響がおよぶ可能性がある場合は、アプリのインストール後にモデルをダウンロードする、より小さなモデルを使用する、クラウド上で計算を実行するなどの対策を検討してください。使用方法の例をご覧ください。デバイスへのモデルのデプロイに使用するツール)によって呼び出されることを想定して設計されています。なく、高レベルの機械学習フレームワークです。デバイス上で実行されます。デバイスのハードウェア性能に応じて、そのデバイスで利用可能なプロセッサに効率的に計算負荷を分散させます。プロセッサ(DSP)などに分散させます。上でリクエストを実行します。アーキテクチャを示します。使用して計算を実行するには、まずその計算を定義する有向グラフを作成する必要があります。ランタイム評価のモデルが形成されます。プロセスで学習した定数値です。ネットワークごとに固有です。(ReLU)活性化関数などが含まれます。モデルの作成は同期演算です。正常に作成できると、さまざまなスレッドやコンパイルで再利用できます。インスタンスとして表されます。モデルを下位レベルのコードにコンパイルするための設定を表します。コンパイルの作成は同期的な処理です。正常に作成できると、さまざまなスレッドや実行で再利用できます。インスタンスとして表されます。ファイル、および同様のメモリバッファを表します。ランタイムはデータをより効率的にドライバへ転送できます。メモリバッファを使用して、実行インスタンスの入出力データを保存することもできます。インスタンスとして表されます。モデルを入力データのセットに適用して結果を収集するインターフェースです。実行は同期的にも非同期的にも行えます。件の実行において複数のスレッドが待機できます。この実行が完了すると、すべてのスレッドが解放されます。インスタンスとして表されます。モデルをセットアップして、モデルの計算とコンパイルを行い、コンパイルしたモデルを実行する手順について説明します。スニペットでは各操作の結果コードの検証を省略しています。本番環境のコードでは、検証を行う必要があります。データへのアクセスを可能にする通常、トレーニング済みの重みやバイアスのデータはファイルに保存します。インスタンスを作成します。関数を呼び出して、開いているデータファイルのファイル記述子を渡します。メモリ保護フラグや、ファイル内の共有メモリ領域の開始点となるオフセットも指定します。インスタンスを使用することもできます。バッファを使用できます。オブジェクトにアクセスできます。アクセラレータがこれらの設定のすべてをサポートしているわけではありません。ドキュメントに記載されている制約をご確認ください。使用するコンパイルと実行が期待どおり動作するかどうかご確認ください。インスタンスを作成します。インスタンスを解放してください。バッファ全体に対してのみ使用できます。パラメータと併用することはできません。ランタイムはバッファをフラッシュしません。実行をスケジューリングする前に、入力バッファと出力バッファにアクセスできることを確認する必要があります。ベンダー固有の形式と使用ビットがある場合、クライアントとドライバのどちらにキャッシュのフラッシュを担わせるかはベンダーの実装次第です。計算において、モデルは基本構成要素です。以上のオペランドと演算で定義されます。オペランドには、モデルの入力データと出力データ、ある演算から別の演算に渡されるデータを含む中間ノード、それらの演算に渡される定数が含まれます。スカラーは単一の値を表します。ビット整数の各形式をサポートしています。演算のほとんどで、テンソルを使用します。ブール値テンソルをサポートしています。つの演算(加算の後に乗算)からなるモデルを表しています。つの出力テンソルを算出します。つのオペランドがあります。これらのオペランドは、モデルに追加する順番を示したインデックスにより、間接的に特定されます。なり、それ以降も同様にインデックスが付けられます。オペランドを追加する順序に意味はありません。モデルの出力オペランドを最初に追加してもかまいません。重要なのは、オペランドを参照するときに正しいインデックスを使用することです。オペランドにはタイプがあり、モデルに追加されるときに指定されます。つのオペランドをモデルの入力と出力の両方に使用することはできません。つの演算の出力オペランドのいずれかです。オペランドの使用方法について詳しくは、オペランドの詳細をご覧ください。つの要素で構成されます。リストこれらのリスト内の順番には意味があります。リファレンスをご覧ください。演算を追加する前に、演算で使用または生成するオペランドをモデルに追加する必要があります。演算の追加順には意味がありません。オペランドと演算の計算グラフに規定された依存関係に基づいて演算の実行順序を決定します。サポートする演算をまとめます。)を使用した場合の出力が一致しない場合があります。29)以上で解決されています。つの演算を含むモデルを作成します。モデルの作成手順は次のとおりです。関数を呼び出して空のモデルを定義します。呼び出して、オペランドをモデルに追加します。データ構造を使用して定義します。ファイルにある定数値を設定します。関数を呼び出してその演算をモデルに追加します。この呼び出しの際に、アプリは次のパラメータを指定する必要があります。つのオペランドを同じ演算の入力と出力の両方に使用することはできません。関数を呼び出して、モデルで入力データとして扱うオペランドと出力データとして扱うオペランドを指定します。計算することが許容されるかどうかを指定します。呼び出して、モデルの定義を確定します。ANeuralNetworksModel_finish(model);作成したモデルは何度でもコンパイルでき、コンパイルしたものは何度でも実行できます。コンパイルコンパイルの手順では、モデルを実行するプロセッサを決定し、対応するドライバで実行の準備をします。この手順には、モデルを実行するプロセッサに固有のマシンコードの生成が含まれる場合があります。モデルをコンパイルする手順は次のとおりです。インスタンスを新規作成します。&compilation);必要に応じて、デバイスの割り当てを行って、どのデバイスで実行するかを明示的に選択できます。必要に応じて、ランタイムに電池消費量の節約と実行速度のどちらを優先するかを指定できます。ANEURALNETWORKS_PREFER_LOW_POWER);以下の設定を指定できます。電池の消費量を最小限に抑えて実行することを優先します。実行頻度の高いコンパイルにはこの設定をおすすめします。電池を多く消費しても、最速で単一の回答を返すことを優先します。これがデフォルトです。連続フレームのスループットを最大にすることを優先します(カメラから送られる連続フレームを処理する場合など)。呼び出してコンパイルのキャッシュへの保存をセットアップできます。アプリ内の各モデルに固有である必要があります。呼び出してコンパイルの定義を完了します。関数を使うことにより、使用可能なデバイスに関する情報を取得して、実行に使用するデバイスを指定できます。アプリは、使用可能なデバイスに関する情報を得ることにより、デバイスで見つかったドライバの正確なバージョンから、既知の非互換性の問題を回避できるようになります。デバイス用に最適化できます。使用して使用可能なデバイスの数を取得します。インスタンスをそのデバイスへの参照に設定します。デバイス参照を取得したら、以下の関数を使用してそのデバイスに関する追加情報を得ることができます。使用して、特定のデバイスで実行できるモデルの演算を調べます。オブジェクトを通常どおり使用します。指定されたモデルが選択されたデバイスでサポートされていない演算を含んでいる場合、この関数はエラーを返します。複数のデバイスが指定されている場合、デバイス間で処理を分散する責任はランタイムにあります。実装は使用されません。モデルを特定のデバイスで実行できるようにサブモデルにパーティショニングするのはアプリの責任です。含む)を使ってモデルのアクセラレーションを行う必要があります。ランタイムはその複数のデバイスに作業を分散します。指定された場合、作業の割り当て対象はそれら指定デバイスすべてになります。実行は無効になります。使用可能なすべてのデバイスが対象になります。この分散は、使用可能なデバイスのリストから、モデル内の演算ごとに、デバイスを選択することによって行われます。選択されるのは、その演算をサポートし、最高のパフォーマンスを宣言しているデバイスです。ここでの「最高のパフォーマンス」とは、最短の実行時間または最小の電池消費量(クライアントが指定した実行の優先設定に応じて決まる)を指します。アルゴリズムでは、異なるプロセッサ間での入出力によって生じる可能性のある非効率は考慮されません。使って暗黙的に指定する)場合、最終的なアプリの特性を明確にすることが重要です。付いた情報レベルのメッセージ)をご確認ください。デバイスリストにある候補のデバイスのインデックスです。使ってすべてのデバイスについて繰り返して返されるデバイスのリストです。上でグラフ全体にアクセラレーションを行ったことを示しています。バッファまたはアプリが割り当てたメモリ領域に保存します。コンパイル済みのモデルを実行する手順は次のとおりです。関数を呼び出して、実行インスタンスを新規作成します。&run1);計算の入力値をアプリが読み取る場所を指定します。バッファまたは割り当てられたメモリ領域から入力値を読み取ることができます。指定したモデルの入力と出力のデータリストへのインデックスです。インデックスを混同しないように注意してください。呼び出す必要があります。出力値をアプリが書き出す場所を指定します。バッファまたは割り当てられたメモリ領域に出力値を書き出すことができます。関数を呼び出して、実行を開始するようにスケジューリングします。関数を呼び出して、実行が完了するのを待ちます。実行を開始したスレッドとは別のスレッドで完了を待つことができます。インスタンスを新規作成し、コンパイル済みモデルに異なる入力セットを適用できます。スレッドの生成と同期に時間がかかります。マイクロ秒かかる場合があります。遅延を改善するため、ランタイムへの同期推論呼び出しを行うように、アプリに指示できます。この呼び出しは、推論の開始時ではなく、完了時にだけ戻ります。呼び出してランタイムへの同期呼び出しを行います。呼び出しと対になりません。同期して機能するようにします。オブジェクトを介したバースト実行をサポートしています。サンプルなど、同じコンパイルが途切れずに発生する実行シーケンスです。オブジェクトを使用すると、実行間でリソースの再利用ができることと、バーストの期間中に高パフォーマンス状態を維持する必要があることがアクセラレータに指示されるため、実行が高速になる場合があります。通常の実行パスを少し変更するだけです。オブジェクトを作成します。&burst);バースト実行は同期します。