[51CTO.com クイック翻訳] TensorFlow を使用すると、少量のトレーニング データで単純なニューラル ネットワークをトレーニングできますが、膨大なトレーニング データ セットを持つディープ ニューラル ネットワークでは、加速のために CUDA 対応の NVIDIA GPU、Google TPU、または FPGA を使用する必要があります。最近まで、代替策としては CPU クラスターで数週間かけてトレーニングする必要がありました。 TensorFlow 2.0 で導入されたイノベーションの 1 つは、JavaScript 実装である TensorFlow.js です。これによってトレーニングや推論が高速化されるとは思っていませんでしたが、実際に高速化され、WebGL API を介してすべての GPU (CUDA 対応のものだけでなく) がサポートされます。 TensorFlow.js の紹介 TensorFlow.js は、JavaScript で機械学習モデルを開発およびトレーニングし、ブラウザーまたは Node.js にデプロイするためのライブラリです。既存のモデルを使用したり、Python TensorFlow モデルを変換したり、転移学習を使用して独自のデータで既存のモデルを再トレーニングしたり、モデルをゼロから開発したりすることができます。 TensorFlow.js バックエンド TensorFlow.js は実行のために複数のバックエンドをサポートしていますが、一度にアクティブになるバックエンドは 1 つだけです。 TensorFlow.js Node.js 環境は、バックエンドとして Python/C TensorFlow インストールの使用をサポートしており、これにより、CUDA などのマシンで利用可能なハードウェア アクセラレーション テクノロジを使用できます。 Node.js 用の JavaScript ベースのバックエンドもありますが、機能は制限されています。 ブラウザでは、TensorFlow.js にはさまざまな機能を備えた複数のバックエンドがあります。 WebGL バックエンドは、ストレージ用の WebGL テクスチャと実行用の WebGL シェーダーを使用して GPU サポートを提供し、通常の CPU バックエンドよりも最大 100 倍高速です。 WebGL は CUDA を必要としないため、利用可能な GPU を最大限に活用できます。 ブラウザベースの WebAssembly (WASM) TensorFlow.js バックエンドは、XNNPACK ライブラリを使用して、ニューラル ネットワーク オペレーターの CPU 実装を最適化します。 WASM バックエンドは、通常、JavaScript CPU バックエンドよりもはるかに高速です (10 倍から 30 倍高速) が、非常に小さなモデルを除いて、通常、WebGL バックエンドよりも低速です。結果は異なる可能性がありますので、ご自身のモデルに合わせて、ご自身のハードウェアで WASM バックエンドと WebGL バックエンドの両方をテストしてください。 TensorFlow.js モデルとレイヤー TensorFlow.js は、ニューラル ネットワーク モデルを構築するための 2 つの API をサポートしています。 1 つは Layers API で、これは実質的に TensorFlow 2 の Keras API と同じです。もう 1 つは、実際にテンソルを直接操作する Core API です。 Keras と同様に、TensorFlow.js Layers API には、モデルを作成するための 2 つの方法 (シーケンシャルと関数) があります。シーケンシャル API はレイヤーの線形スタックであり、レイヤー リスト (以下を参照) または model.add() メソッドを介して実装されます。
機能 API は tf.model() API を使用して任意の有向非巡回グラフ (DAG) ネットワークを作成します。
Core API では、同じ目的を達成するために異なるコードを使用できますが、レイヤー間には単純で直感的な接続はありません。次のモデルは基本的なテンソル演算のように見えますが、前の 2 つの式と同じネットワークを作成します。以下の model() 関数では relu() と softmax() が使用されていることに注意してください。どちらもニューラル ネットワーク操作です。
事前に構築された TensorFlow.js モデル リポジトリには、NPM (Node.js で使用) および unpkg (ブラウザーで使用) でホストされた、ビルド済みの TensorFlow.js モデルが 12 個以上文書化されています。これらのモデルは、提供されたまま使用することも、転移学習に使用することもできます。少しの努力で、他のモデルの構成要素として使用することもできます。 これらのモデルの中には、手のジェスチャーなど、デバイスのカメラをリアルタイムで使用するものもあります。 図 1. 手のポーズは手のひらを検出し、手の骨格の指を追跡できます。 次のリストでは、インデックスを簡単に作成できるように、事前にパッケージ化された TensorFlow.js モデルのほとんどを紹介します。
ml5.js は、主にニューヨーク大学で開発された、オープンソースでユーザーフレンドリーな高レベルの TensorFlow.js インターフェースです。 ml5.js は、人間のポーズの検出、テキストの生成、別のスタイルでの画像のスタイル設定、音楽の作曲、ピッチの検出、一般的な英語の単語の関係などを行うための事前トレーニング済みモデルにブラウザで即座にアクセスできるようにします。 TensorFlow.js は主にデータ サイエンティストや開発者を対象としていますが、ml5.js は一般の人々が機械学習をより幅広く理解できるように設計されています。 ml5.js のほとんどの例は TensorFlow.js モデルに依存しています。これらは Web ページとしてパッケージ化されており、そのまま実行することも、たとえば別の画像を使用するために編集することもできます。 図 2. PoseNet は、ブラウザ内の画像またはビデオ ソースからリアルタイムの姿勢推定を実行できます。 Python TensorFlow モデルを JavaScript に変換する TensorFlow.js リポジトリの一部には、保存された TensorFlow および Keras モデル用のコンバーターが含まれています。 SavedModel (TensorFlow のデフォルト形式)、HDF5 (Keras のデフォルト形式)、TensorFlow Hub の 3 つの形式をサポートしています。このコンバーターは、標準リポジトリから保存されたモデル、自分でトレーニングしたモデル、他の場所で見つけたモデルで使用できます。 変換には実際には 2 つのステップがあります。最初のステップは、既存のモデルを model.json およびバイナリ重みファイルに変換することです。 2 番目のステップは、API を使用してモデルを TensorFlow.js にロードすることです。変換された TensorFlow および TensorFlow Hub モデルの場合は tf.loadGraphModel を使用し、変換された Keras モデルの場合は tf.loadLayersModel を使用します。 転移学習の使用 TensorFlow.js は、TensorFlow とほぼ同じ方法で転移学習をサポートします。ドキュメントには、独自の画像に合わせて MobileNet をカスタマイズする例や、独自のサウンド クラスに合わせて音声コマンド認識モデルをカスタマイズする例がいくつか記載されています。基本的に、これらの各コードラボで行ったことは、トレーニング済みのモデルの上に小さなカスタム分類子を追加してトレーニングすることでした。 一般的に、TensorFlow.js は基本的に TensorFlow でできることをすべて実行できます。ただし、TensorFlow.js が対象とする環境 (ゲーム用の一般的な GPU) では、TensorFlow ディープラーニング トレーニングでよく使用される大規模な Nvidia サーバー GPU よりも GPU メモリが少ないことが一般的であるため、ブラウザーで実行するにはモデルのサイズを縮小する必要がある場合があります。変換ユーティリティはこの部分を自動的に実行できますが、トレーニングのためにレイヤーを手動で削除し、バッチ サイズを縮小する必要があります。 原題: ブラウザで TensorFlow を使用する方法、著者: Martin Heller [51CTOによる翻訳。パートナーサイトに転載する場合は、元の翻訳者と出典を51CTO.comとして明記してください] |
<<: 人工ニューラルネットワーク分類器に基づくドメイン適応(DA)技術
>>: 第4世代ロボットが発売。Lingdong TechnologyのAMR分野における粘り強さと革新
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...
9月28日早朝、Meta Connect 2023において、MetaはMeta AIという新しいチャ...
ChatGPTは今年9月末に音声チャットと画像認識機能を追加しました。テキスト駆動型と比較して、C...
ケビン・ケリー氏は「人工知能は人類社会を混乱させる次のものだ」と語った。 2020年は、全世界が前例...
データ分野では、多くの人が機械学習について語っていますが、それが何であるかを明確に説明できる人はごく...
ロボット工学と人工知能の発展により、多くの仕事が機械に置き換えられるでしょう。機械は、一部のタスク、...
この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...
AIが医療業界を変える[[397937]] AIとロボットはすでにいくつかの医療機関で活用されていま...
科学研究の分野で働く人なら、P/NP 問題についてはある程度聞いたことがあるでしょう。この問題は、ク...
最近、Magiという検索エンジンが注目を集めています。この検索エンジンは、私たちが持っている一般的な...
現代人は時間の概念が曖昧です。よく考えなければ、プーチン大統領が2月24日にウクライナに宣戦布告して...