ホームページ  >  記事  >  テクノロジー周辺機器  >  TensorFlow で機械学習開発ができるのはなぜですか?

TensorFlow で機械学習開発ができるのはなぜですか?

WBOY
WBOY転載
2023-04-08 21:21:041591ブラウズ

機械学習は複雑な主題ですが、機械学習フレームワーク (Google の TensorFlow など) により、データの取得、モデルのトレーニング、予測の提供、将来の結果の改善のプロセスが簡素化されるため、機械学習の実装は以前よりもはるかに困難ではなくなりました。 。

TensorFlow で機械学習開発ができるのはなぜですか?

Google Brain チームによって作成され、2015 年に初めて一般公開された TensorFlow は、数値コンピューティングおよび大規模機械学習用のオープンソース ライブラリです。 TensorFlow は、幅広い機械学習および深層学習のモデルとアルゴリズム (ニューラル ネットワークとも呼ばれる) をバンドルし、共通のプログラミング メタファーを通じてそれらを活用できるようにします。 Python または JavaScript を使用してアプリケーションを構築し、それらを高性能 C で実行するための便利なフロントエンド API を提供します。

TensorFlow は、PyTorch や Apache MXNet などのフレームワークと競合して、手書き数字分類、画像認識、単語埋め込み、リカレント ニューラル ネットワーク、機械翻訳用のシーケンスツーシーケンス モデル、自然言語のためのディープ ニューラル ネットワークをトレーニングおよび実行します。処理および PDE (偏微分方程式) ベースのシミュレーション。何よりも、TensorFlow はトレーニングに同じモデルを使用して、大規模な生産予測をサポートします。

TensorFlow には、独自のプロジェクトで使用できる事前トレーニングされたモデルの広範なライブラリもあります。 TensorFlow Model Park のコードを、独自のモデルをトレーニングするためのベスト プラクティスの例として使用することもできます。

TensorFlow の仕組み

TensorFlow を使用すると、開発者はデータ フロー グラフ (データがグラフまたは一連の処理ノード内をどのように移動するかを記述する構造) を作成できます。グラフ内の各ノードは数学的演算を表し、ノード間の各接続またはエッジは多次元データ配列、つまりテンソルです。

TensorFlow アプリケーションは、ローカル マシン、クラウド内のクラスター、iOS および Android デバイス、CPU、GPU などの最も便利なターゲット上で実行できます。 Google 独自のクラウドを使用している場合は、Google のカスタム TensorFlow Processing Unit (TPU) チップ上で TensorFlow を実行して、さらに高速化できます。ただし、TensorFlow によって作成された結果のモデルは、予測を提供するために使用されるほとんどのデバイスにデプロイできます。

TensorFlow 2.0 は 2019 年 10 月にリリースされ、ユーザーのフィードバックに基づいてフレームワークにさまざまな改良が加えられ、使いやすく (たとえば、モデルのトレーニングに比較的シンプルな KerasAPI を使用することで) パフォーマンスが向上しました。新しい API のおかげで分散トレーニングの実行が容易になり、TensorFlow Lite のサポートにより、より多様なプラットフォームにモデルをデプロイできるようになります。ただし、新しい TensorFlow 2.0 の機能を最大限に活用するには、TensorFlow の以前のバージョン用に書かれたコードを、場合によってはわずかに、場合によっては大幅に書き直す必要があります。

トレーニングされたモデルを使用すると、REST または gRPC API を使用して、Docker コンテナーを通じてサービスとして予測を提供できます。より高度なサービス シナリオの場合は、Kubernetes を使用できます。

Python で TensorFlow を使用する

TensorFlow は、Python 言語を通じてこれらすべての機能をプログラマに提供します。 Python は学習と使用が簡単で、高レベルの抽象化を結合する方法を表現する便利な方法を提供します。 TensorFlow は Python バージョン 3.7 ~ 3.10 でサポートされており、以前のバージョンの Python でも動作する可能性がありますが、動作することは保証されていません。

TensorFlow のノードとテンソルは Python オブジェクトであり、TensorFlow アプリケーション自体も Python アプリケーションです。ただし、実際の数学演算は Python では実行されません。 TensorFlow を通じて提供される変換ライブラリは、高性能 C バイナリとして作成されます。 Python は、さまざまな部分間のフローを単純に指示し、それらを接続するための高レベルのプログラミング抽象化を提供します。

TensorFlow の高度な作業 (ノードとレイヤーの作成とそれらのリンク) では、Keras ライブラリを使用します。 Keras API は一見シンプルです。基本的な 3 層モデルは 10 行未満のコードで定義でき、同じトレーニング コードに必要なコードはわずか数行です。ただし、「ベールを解除」して、独自のトレーニング ループを作成するなど、よりきめの細かい作業を実行したい場合は、それを行うことができます。

TensorFlow と JavaScript の使用

Python は、TensorFlow と機械学習を操作するための最も人気のある言語です。しかし、JavaScript は現在、TensorFlow のファーストクラス言語でもあり、JavaScript の大きな利点の 1 つは、Web ブラウザーがあればどこでも実行できることです。

TensorFlow.js (JavaScript TensorFlow ライブラリと呼ばれる) は、WebGL API を使用して、システムで利用可能な GPU による計算を高速化します。 WebAssembly バックエンドを使用して実行することもできます。CPU のみで実行する場合、通常の JavaScript バックエンドよりも高速ですが、可能な限り GPU を使用することをお勧めします。事前に構築されたモデルを使用すると、単純なプロジェクトを立ち上げて実行でき、物事がどのように機能するかを理解できます。

TensorFlow Lite

トレーニングされた TensorFlow モデルは、iOS や Android システムなどのエッジ コンピューティングやモバイル デバイスにデプロイすることもできます。 TensorFlow Lite ツールセットは、モデルのサイズと精度をトレードオフできるようにすることで、そのようなデバイス上で適切に実行できるように TensorFlow モデルを最適化します。より小さいモデル (つまり、12MB 対 25MB、または 100MB) は精度が低くなりますが、通常、精度の低下は小さく、モデルの速度とエネルギー効率によって相殺されます。

TensorFlow を使用する理由

TensorFlow が機械学習開発に提供する最大のメリットは抽象化です。開発者は、アルゴリズムの実装の詳細を扱ったり、ある関数の出力を別の関数の入力に接続する正しい方法を見つけたりするのではなく、アプリケーション ロジック全体に集中できます。 TensorFlow は舞台裏で詳細を処理します。

TensorFlow は、TensorFlow アプリケーションをデバッグして理解する必要がある開発者に大きな利便性を提供します。各グラフ操作は、グラフ全体を単一の不透明なオブジェクトとして構築して一度に評価するのではなく、個別かつ透過的に評価および変更できます。このいわゆる「即時実行モード」は、TensorFlow の古いバージョンではオプションとして利用可能でしたが、現在は標準になっています。

TensorBoard Visualization Suite を使用すると、インタラクティブな Web ベースのダッシュボードを通じてグラフがどのように実行されているかを検査および分析できます。 Tensorboard.dev サービス (Google がホスト) を使用すると、TensorFlow で記述された機械学習実験をホストして共有できます。無料で使用して、最大 100M のスカラー、1GB のテンソル データ、および 1GB のバイナリ オブジェクト データを保存できます。 (Tensorboard.dev でホストされているデータはすべて公開されているため、機密性の高いプロジェクトには使用しないでください。)

TensorFlow は、Google の一流の商業組織のサポートからも多くの利点を得ています。 Google はプロジェクトの急速な成長を推進し、TensorFlow のデプロイと使用を容易にする多くの重要な製品を作成しました。 Google Cloud のパフォーマンスを高速化するための上記の TPU チップは、ほんの一例にすぎません。

決定論的モデル トレーニングに TensorFlow を使用する

TensorFlow 実装の詳細により、一部のトレーニング ジョブで完全に決定論的モデル トレーニング結果を取得することが困難になります。場合によっては、まったく同じデータが提供されている場合でも、あるシステムでトレーニングされたモデルが別のシステムでトレーニングされたモデルとわずかに異なることがあります。この違いの理由は複雑です。1 つの理由は、乱数がどのように、どこにシードされるかということです。もう 1 つは、GPU 使用時の非決定的な動作に関係しています。 TensorFlow の 2.0 ブランチには、数行のコードでワークフロー全体にわたって決定論を有効にするオプションがあります。ただし、この機能にはパフォーマンスが犠牲になるため、ワークフローをデバッグする場合にのみ使用してください。

TensorFlow は PyTorch、CNTK、MXNet と競合します

TensorFlow は他の多くの機械学習フレームワークと競合します。 PyTorch、CNTK、MXNet は、同じニーズの多くに応える 3 つの主要なフレームワークです。 TensorFlow と比較して、どこが際立っているのか、どこが劣っているのかを簡単に見てみましょう:

  • PyTorch は Python で構築されており、TensorFlow と他の多くの類似点があります: 内部のハードウェア アクセラレーション コンポーネント、高度にインタラクティブな開発このモデルでは、すぐに使える設計作業が可能で、すでに多くの有用なコンポーネントが含まれています。多くの場合、短期間で稼働させる必要があるプロジェクトの迅速な開発には PyTorch が適していますが、大規模なプロジェクトやより複雑なワークフローには TensorFlow の方が適しています。
  • CNTK は Microsoft Cognitive Toolkit であり、グラフ構造を使用してデータ フローを記述する点では TensorFlow に似ていますが、主に深層学習ニューラル ネットワークの作成に焦点を当てています。 CNTK は、多くのニューラル ネットワーク ジョブをより高速に処理でき、より幅広い API (Python、C、C#、Java) を備えています。しかし現時点では、TensorFlow ほど学習やデプロイは簡単ではありません。また、TensorFlow は GNU GPL 3.0 ライセンスの下でのみ利用可能ですが、TensorFlow はより自由な Apache ライセンスの下で利用可能です。そして、CNTKにはそれほど前向きな展開はありません。最後のメジャー バージョンは 2019 年でした。
  • Amazon が AWS の主要な深層学習フレームワークとして採用した Apache MXNet は、複数の GPU および複数のマシンにわたってほぼ直線的に拡張します。 MXNet は、Python、C、Scala、R、JavaScript、Julia、Perl、Go などの幅広い言語 API もサポートしていますが、そのネイティブ API は TensorFlow ほど使いやすくはありません。また、ユーザーと開発者のコ​​ミュニティははるかに小規模です。


元のタイトル: TensorFlow とは?機械学習ライブラリの説明

以上がTensorFlow で機械学習開発ができるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。