Rumah > Peranti teknologi > AI > Klasifikasi Imej dengan Jax, Flax, dan Optax

Klasifikasi Imej dengan Jax, Flax, dan Optax

Jennifer Aniston
Lepaskan: 2025-03-18 11:50:23
asal
1011 orang telah melayarinya

Tutorial ini menunjukkan bangunan, latihan, dan menilai rangkaian saraf konvolusi (CNN) untuk klasifikasi digit MNIST menggunakan Jax, Flax, dan Optax. Kami akan merangkumi segala -galanya dari persediaan persekitaran dan pra -proses data untuk model seni bina, pelaksanaan gelung latihan, visualisasi metrik, dan akhirnya, ramalan pada imej tersuai. Pendekatan ini menyoroti kekuatan sinergistik perpustakaan ini untuk pembelajaran mendalam yang cekap dan berskala.

Objektif Pembelajaran:

  • Menguasai integrasi Jax, Flax, dan Optax untuk pembangunan rangkaian saraf yang diselaraskan.
  • Belajar untuk preprocess dan memuatkan dataset menggunakan dataset TensorFlow (TFD).
  • Melaksanakan CNN untuk klasifikasi imej yang berkesan.
  • Visualisasikan kemajuan latihan menggunakan metrik utama (kehilangan dan ketepatan).
  • Menilai prestasi model pada imej tersuai.

Artikel ini adalah sebahagian daripada Blogathon Sains Data.

Jadual Kandungan:

  • Objektif pembelajaran
  • Jax, Flax, dan Optax Powerhouse
  • Persediaan Jax: Pemasangan dan Import
  • Data MNIST: Memuat dan Pra -proses
  • Membina CNN
  • Penilaian Model: Metrik dan Penjejakan
  • Gelung latihan
  • Pelaksanaan Latihan dan Penilaian
  • Menggambarkan prestasi
  • Meramalkan dengan gambar tersuai
  • Kesimpulan
  • Soalan yang sering ditanya

Jax, Flax, dan Optax Powerhouse:

Pembelajaran mendalam yang cekap dan berskala menuntut alat yang berkuasa untuk pengiraan, reka bentuk model, dan pengoptimuman. Jax, Flax, dan Optax secara kolektif menangani keperluan ini:

Jax: Kecemerlangan Pengkomputeran Numerik:

Jax menyediakan pengiraan berangka berprestasi tinggi dengan antara muka seperti numpy. Ciri -ciri utamanya termasuk:

  • Pembezaan Automatik (AUTOGRAD): Pengiraan kecerunan tanpa usaha untuk fungsi kompleks.
  • Kompilasi Just-in-Time (JIT): Pelaksanaan dipercepatkan pada CPU, GPU, dan TPU.
  • Vektorisasi: Pemprosesan batch mudah melalui vmap .
  • Percepatan perkakasan: Sokongan asli untuk GPU dan TPU.

Flax: Rangkaian Neural Fleksibel:

Flax, perpustakaan berasaskan JAX, menawarkan pendekatan mesra pengguna dan sangat disesuaikan untuk pembinaan rangkaian saraf:

  • Modul Negara: Parameter yang dipermudahkan dan pengurusan negeri.
  • Ringkas API: Definisi model intuitif menggunakan @nn.compact penghias.
  • Kesesuaian: Sesuai untuk pelbagai seni bina, dari mudah ke kompleks.
  • Integrasi Jax yang lancar: Menggalakkan keupayaan Jax dengan mudah.

Optax: Pengoptimuman Komprehensif:

Optax menyelaraskan pengendalian dan pengoptimuman kecerunan, menyediakan:

  • Pelbagai pengoptimum: Pelbagai pengoptimuman, termasuk SGD, Adam, dan RMSPROP.
  • Manipulasi kecerunan: alat untuk keratan, skala, dan normalisasi.
  • Reka bentuk modular: Gabungan mudah transformasi kecerunan dan pengoptimuman.

Rangka kerja gabungan ini menawarkan ekosistem yang kuat dan modular untuk pembangunan model pembelajaran mendalam yang cekap.

Klasifikasi Imej dengan Jax, Flax, dan Optax

Persediaan Jax: Pemasangan dan Import:

Pasang perpustakaan yang diperlukan:

 ! Pip pemasangan --upgrade -q pip jax jaxlib flax optax tensorflow -datasets
Salin selepas log masuk

Import perpustakaan penting:

 Import Jax
import jax.numpy sebagai jnp
dari linen import rami sebagai nn
dari flax.Raining Import Train_state
Import Optax
import numpy sebagai np
import tensorflow_datasets sebagai TFD
import matplotlib.pyplot sebagai PLT
Salin selepas log masuk

Data MNIST: Memuatkan dan memproses pra:

Kami memuatkan dan memproses dataset MNIST menggunakan TFD:

 def get_datasets ():
  ds_builder = tfds.builder ('mnist')
  ds_builder.download_and_prepare ()
  train_ds = tfds.as_numpy (ds_builder.as_dataset (split = 'kereta api', 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
  kembali kereta api, test_ds

train_ds, test_ds = get_datasets ()
Salin selepas log masuk

Imej dinormalisasi ke julat [0, 1].

Klasifikasi Imej dengan Jax, Flax, dan Optax

Membina CNN:

Senibina CNN kami:

 Kelas CNN (NN.Module):
  @nn.compact
  def __call __ (diri, x):
    x = nn.conv (ciri = 32, kernel_size = (3, 3)) (x)
    x = nn.relu (x)
    x = nn.avg_pool (x, window_shape = (2, 2), langkah = (2, 2))
    x = nn.conv (ciri = 64, kernel_size = (3, 3)) (x)
    x = nn.relu (x)
    x = nn.avg_pool (x, window_shape = (2, 2), langkah = (2, 2))
    x = x.Reshape ((x.shape [0], -1))
    x = nn.dense (ciri = 256) (x)
    x = nn.relu (x)
    x = nn.dense (ciri = 10) (x)
    kembali x
Salin selepas log masuk

Ini termasuk lapisan konvolusi, lapisan penyatuan, lapisan rata, dan lapisan padat.

Penilaian Model: Metrik dan Penjejakan:

Kami menentukan fungsi untuk mengira kerugian dan ketepatan:

 def compute_metrics (logit, label):
  kerugian = jnp.mean (optax.softMax_cross_entropy (logit, jax.nn.one_hot (label, num_class = 10)))
  ketepatan = jnp.mean (jnp.argmax (logit, -1) == label)
  metrik = {'kehilangan': kehilangan, 'ketepatan': ketepatan}
  Metrik kembali

# ... (Fungsi Train_Step dan Eval_Step tetap sama) ...
Salin selepas log masuk

(Fungsi Train_Step dan Eval_Step akan dimasukkan di sini, sama dengan kod asal.)

Gelung latihan:

Gelung latihan berulang -ulang mengemas kini model:

 # ... (Fungsi Train_Epoch dan Eval_Model tetap sama) ...
Salin selepas log masuk

(Fungsi Train_epoch dan Eval_Model akan dimasukkan di sini, sama dengan kod asal.)

Pelaksanaan Latihan dan Penilaian:

Kami melaksanakan proses latihan dan penilaian:

 # ... (kod pelaksanaan latihan dan penilaian tetap sama) ...
Salin selepas log masuk

(Kod pelaksanaan latihan dan penilaian, termasuk inisialisasi parameter, persediaan pengoptimuman, dan gelung latihan, akan dimasukkan di sini, serupa dengan kod asal.)

Menggambarkan prestasi:

Kami memvisualisasikan metrik latihan dan ujian menggunakan matplotlib:

 # ... (kod merancang Matplotlib tetap sama) ...
Salin selepas log masuk

(Kod merancang Matplotlib untuk menggambarkan kerugian dan ketepatan akan dimasukkan di sini, sama dengan kod asal.)

Meramalkan dengan gambar tersuai:

Bahagian ini menunjukkan ramalan pada imej tersuai (kod tetap sama seperti yang asal).

 # ... (kod untuk memuat naik, memproses, dan meramalkan pada imej tersuai tetap sama) ...
Salin selepas log masuk

Kesimpulan:

Tutorial ini mempamerkan kecekapan dan fleksibiliti Jax, Flax, dan Optax untuk membina dan melatih CNN. Penggunaan pengendalian data yang dipermudahkan TFD, dan visualisasi metrik memberikan pandangan yang berharga. Keupayaan untuk menguji model pada imej tersuai menyoroti kebolehgunaan praktikalnya.

Soalan Lazim:

(Soalan Lazim kekal sama dengan yang asal.)

Pautan Colab yang disediakan akan disertakan di sini. Ingatlah untuk menggantikan /uploads/....webp dengan laluan sebenar ke imej anda.

Atas ialah kandungan terperinci Klasifikasi Imej dengan Jax, Flax, dan Optax. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan