[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分野における粘り強さと革新
翻訳者 | 崔昊校正 | 梁哲、孫淑娟1. はじめにこの記事では、Deep Graph Librar...
[[190844]] DL の難しさは、問題をどのような視点から見るかによって決まります。数学を勉...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
過去数か月間、数学者のテレンス・タオ氏は、ChatGPT を使用して数学の問題を解くのに何度も試み、...
最近、AI関連の技術は業界でますます人気が高まっています。機械化されたゲームリソースの作成から開発者...
機械学習は主に教師あり学習、教師なし学習、強化学習に分けられます。ただし、各手法の適用分野はそれぞれ...
アレックス・ガーランド監督の2015年大ヒット作『エクス・マキナ』では、監督が意図したように、機械の...
2022年11月30日のChatGPTのリリース以来、OpenAIが新しい機能をリリースするたびに...
C# 再帰アルゴリズムを理解するということは、単に使いやすいと感じるということではありません。C# ...
業界では、人工知能はこれまで2世代を経てきたと一般的に考えられています。第一世代の人工知能は知識主導...
現在の最先端の音声変換システムは、「考える」から「話す」へと進む人間の自然なプロセスと比較すると遅い...
翻訳者 |ブガッティレビュー | Chonglouこの記事では、無料で使いやすい新しいクラウドIDE...