ホームページ テクノロジー周辺機器 AI Jax、Flax、およびOptaxによる画像分類

Jax、Flax、およびOptaxによる画像分類

Mar 18, 2025 am 11:50 AM

このチュートリアルでは、Jax、Flax、およびOptaxを使用したMNIST Digit分類のための畳み込みニューラルネットワーク(CNN)の構築、トレーニング、評価を示しています。環境のセットアップやデータの前処理から、モデルアーキテクチャ、トレーニングループの実装、メトリックの視覚化、最後にカスタム画像の予測まで、すべてをカバーします。このアプローチは、効率的でスケーラブルな深い学習のために、これらのライブラリの相乗的強さを強調しています。

学習目標:

  • 合理化されたニューラルネットワーク開発のために、Jax、Flax、およびOptaxの統合をマスターします。
  • Tensorflowデータセット(TFD)を使用して、プレアセスおよびロードデータセットを学習します。
  • 効果的な画像分類のためにCNNを実装します。
  • 主要なメトリックを使用してトレーニングの進捗状況を視覚化します(損失と精度)。
  • カスタム画像でモデルのパフォーマンスを評価します。

この記事は、Data Science Blogathonの一部です。

目次:

  • 学習目標
  • Jax、Flax、およびOptax Powerhouse
  • JAXセットアップ:インストールとインポート
  • MNISTデータ:読み込みと前処理
  • CNNの構築
  • モデル評価:メトリックと追跡
  • トレーニングループ
  • トレーニングと評価の実行
  • パフォーマンスの視覚化
  • カスタム画像で予測します
  • 結論
  • よくある質問

Jax、Flax、およびOptax Powerhouse:

効率的でスケーラブルな深い学習には、計算、モデル設計、最適化のための強力なツールが必要です。 Jax、Flax、およびOptaxはこれらのニーズをまとめて対処します。

Jax:数値コンピューティングの卓越性:

JAXは、numpyのようなインターフェイスを使用して高性能の数値計算を提供します。その主な機能には次のようなものがあります。

  • 自動分化(オートグラード):複雑な関数の楽な勾配計算。
  • ジャストインタイム(JIT)コンピレーション: CPU、GPU、およびTPUでのアクセラレーション実行。
  • ベクトル化: vmapを介した簡略化されたバッチ処理。
  • ハードウェアアクセラレーション: GPUおよびTPUのネイティブサポート。

亜麻:柔軟なニューラルネットワーク:

JAXベースのライブラリであるFlaxは、ニューラルネットワーク構造に対するユーザーフレンドリーで高度にカスタマイズ可能なアプローチを提供します。

  • ステートフルモジュール:簡素化されたパラメーターと州管理。
  • 簡潔なAPI: @nn.compactデコレータを使用した直感的なモデル定義。
  • 適応性:シンプルから複雑なものまで、多様なアーキテクチャに適しています。
  • シームレスなJax統合: Jaxの機能を簡単に活用します。

Optax:包括的な最適化:

Optaxは、勾配の取り扱いと最適化を合理化し、次のことを提供します。

  • オプティマイザーの品種: SGD、Adam、RMSPropを含む幅広いオプティマザー。
  • 勾配操作:クリッピング、スケーリング、および正規化のためのツール。
  • モジュラー設計:勾配変換とオプティマイザーの簡単な組み合わせ。

この組み合わせフレームワークは、効率的な深い学習モデル開発のための強力でモジュラーエコシステムを提供します。

Jax、Flax、およびOptaxによる画像分類

JAXセットアップ:インストールとインポート:

必要なライブラリをインストールする:

 !PIPインストール-Upgrade -Q PIP JAX JAXLIB FLAX OPTAX TENSORFLOW -DATASETS
ログイン後にコピー

必須ライブラリをインポートします:

 Jaxをインポートします
JAX.numpyをJNPとしてインポートします
亜麻からnnとしてリネンを輸入します
Flax.Training Import Train_stateから
Optaxをインポートします
npとしてnumpyをインポートします
tensorflow_datasetsをtfdsとしてインポートします
pltとしてmatplotlib.pyplotをインポートします
ログイン後にコピー

MNISTデータ:読み込みと前処理:

TFDを使用してMnistデータセットをロードして前処理します。

 def get_datasets():
  ds_builder = tfds.builder( 'mnist')
  ds_builder.download_and_prepare()
  train_ds = tfds.as_numpy(ds_builder.as_dataset(split = 'train'、batch_size = -1))
  test_ds = tfds.as_numpy(ds_builder.as_dataset(split = 'test'、batch_size = -1))
  train_ds ['image'] = jnp.float32(train_ds ['image']) / 255.0
  test_ds ['image'] = jnp.float32(test_ds ['image']) / 255.0
  train_ds、test_dsを返します

train_ds、test_ds = get_datasets()
ログイン後にコピー

画像は範囲[0、1]に正規化されます。

Jax、Flax、およびOptaxによる画像分類

CNNの構築:

私たちのCNNアーキテクチャ:

クラスCNN(nn.module):
  @nn.compact
  def __call __(self、x):
    x = nn.conv(feature = 32、kernel_size =(3、3))(x)
    x = nn.relu(x)
    x = nn.avg_pool(x、window_shape =(2、2)、strides =(2、2))
    x = nn.conv(feature = 64、kernel_size =(3、3))(x)
    x = nn.relu(x)
    x = nn.avg_pool(x、window_shape =(2、2)、strides =(2、2))
    x = x.reshape((x.shape [0]、-1))
    x = nn.dense(feature = 256)(x)
    x = nn.relu(x)
    x = nn.dense(feature = 10)(x)
    xを返します
ログイン後にコピー

これには、畳み込み層、プーリング層、平坦な層、密な層が含まれます。

モデル評価:メトリックと追跡:

損失と精度を計算するための関数を定義します。

 def compute_metrics(logits、labels):
  loss = jnp.mean(optax.softmax_cross_entropy(logits、jax.nn.one_hot(labels、num_classes = 10))))
  精度= jnp.mean(jnp.argmax(logits、-1)==ラベル)
  Metrics = {'loss':loss、 'quarty':精度}
  メトリックを返します

#...(train_stepとeval_step関数はほぼ同じままです)...
ログイン後にコピー

(TRAIN_STEPおよびEVAL_STEP関数は、元のコードと同様に、ここに含まれます。)

トレーニングループ:

トレーニングループは、モデルを繰り返し更新します。

 #...(train_epochとeval_model関数はほぼ同じままです)...
ログイン後にコピー

(TRAIN_EPOCHおよびEVAL_MODEL関数は、元のコードと同様に、ここに含まれます。)

トレーニングと評価の実行:

トレーニングと評価プロセスを実行します。

 #...(トレーニングと評価の実行コードはほぼ同じままです)...
ログイン後にコピー

(パラメーターの初期化、オプティマイザーのセットアップ、トレーニングループを含むトレーニングと評価の実行コードは、元のコードと同様にここに含まれます。)

パフォーマンスの視覚化:

Matplotlibを使用して、トレーニングとテストメトリックを視覚化します。

 #...(matplotlibプロットコードはほぼ同じままです)...
ログイン後にコピー

(元のコードと同様に、ここには、損失と精度を視覚化するためのMatplotlibプロットコードがここに含まれます。)

カスタム画像での予測:

このセクションでは、カスタム画像の予測を示しています(コードはオリジナルとほぼ同じままです)。

 #...(カスタム画像のアップロード、前処理、予測のコードはほとんど同じままです)...
ログイン後にコピー

結論:

このチュートリアルでは、CNNの構築とトレーニングのためのJax、Flax、およびOptaxの効率と柔軟性を紹介しました。 TFDSの単純化されたデータ処理とメトリックの視覚化の使用は、貴重な洞察を提供しました。カスタム画像でモデルをテストする機能は、その実用的な適用性を強調しています。

よくある質問:

(FAQはオリジナルとほぼ同じままです。)

提供されたコラブリンクはここに含まれます。 /uploads/....webpの画像パスを、画像への実際のパスに置き換えることを忘れないでください。

以上がJax、Flax、およびOptaxによる画像分類の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

AGNOフレームワークを使用してマルチモーダルAIエージェントを構築する方法は? AGNOフレームワークを使用してマルチモーダルAIエージェントを構築する方法は? Apr 23, 2025 am 11:30 AM

エージェントAIに取り組んでいる間、開発者は速度、柔軟性、リソース効率の間のトレードオフをナビゲートすることがよくあります。私はエージェントAIフレームワークを探索していて、Agnoに出会いました(以前はPhi-でした。

SQLに列を追加する方法は? - 分析Vidhya SQLに列を追加する方法は? - 分析Vidhya Apr 17, 2025 am 11:43 AM

SQLの変更テーブルステートメント:データベースに列を動的に追加する データ管理では、SQLの適応性が重要です。 その場でデータベース構造を調整する必要がありますか? Alter Tableステートメントはあなたの解決策です。このガイドの詳細は、コルを追加します

OpenaiはGPT-4.1でフォーカスをシフトし、コーディングとコスト効率を優先します OpenaiはGPT-4.1でフォーカスをシフトし、コーディングとコスト効率を優先します Apr 16, 2025 am 11:37 AM

このリリースには、GPT-4.1、GPT-4.1 MINI、およびGPT-4.1 NANOの3つの異なるモデルが含まれており、大規模な言語モデルのランドスケープ内のタスク固有の最適化への動きを示しています。これらのモデルは、ようなユーザー向けインターフェイスをすぐに置き換えません

Andrew Ngによる埋め込みモデルに関する新しいショートコース Andrew Ngによる埋め込みモデルに関する新しいショートコース Apr 15, 2025 am 11:32 AM

埋め込みモデルのパワーのロックを解除する:Andrew Ngの新しいコースに深く飛び込む マシンがあなたの質問を完全に正確に理解し、応答する未来を想像してください。 これはサイエンスフィクションではありません。 AIの進歩のおかげで、それはRになりつつあります

Rocketpyを使用したロケットの起動シミュレーションと分析-AnalyticsVidhya Rocketpyを使用したロケットの起動シミュレーションと分析-AnalyticsVidhya Apr 19, 2025 am 11:12 AM

Rocketpy:A包括的なガイドでロケット発売をシミュレートします この記事では、強力なPythonライブラリであるRocketpyを使用して、高出力ロケット発売をシミュレートすることをガイドします。 ロケットコンポーネントの定義からシミュラの分析まで、すべてをカバーします

Googleは、次の2025年にクラウドで最も包括的なエージェント戦略を発表します Googleは、次の2025年にクラウドで最も包括的なエージェント戦略を発表します Apr 15, 2025 am 11:14 AM

GoogleのAI戦略の基礎としてのGemini Geminiは、GoogleのAIエージェント戦略の基礎であり、高度なマルチモーダル機能を活用して、テキスト、画像、オーディオ、ビデオ、コード全体で応答を処理および生成します。 DeepMによって開発されました

3D自分で印刷できるオープンソースのヒューマノイドロボット:抱きしめる顔を購入する花粉ロボット工学 3D自分で印刷できるオープンソースのヒューマノイドロボット:抱きしめる顔を購入する花粉ロボット工学 Apr 15, 2025 am 11:25 AM

「オープンソースロボットを世界に持ち込むために花粉ロボットを獲得していることを発表して非常にうれしいです」と、Facing FaceはXで述べました。

DeepCoder-14B:O3-MINIおよびO1へのオープンソース競争 DeepCoder-14B:O3-MINIおよびO1へのオープンソース競争 Apr 26, 2025 am 09:07 AM

AIコミュニティの重要な開発において、Agenticaと一緒にAIは、DeepCoder-14Bという名前のオープンソースAIコーディングモデルをリリースしました。 Openaiのようなクローズドソースの競合他社と同等のコード生成機能を提供する

See all articles