Jax、Flax、およびOptaxによる画像分類
このチュートリアルでは、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セットアップ:インストールとインポート:
必要なライブラリをインストールする:
!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]に正規化されます。
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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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

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

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

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