Generative Adversarial Network (GAN)

Findriyani

Sosial Media


0 orang menyukai ini
Suka

Summary

Description

Generative Adversarial Network (GAN) adalah salah satu jenis algoritma deep learning yang terdiri dari dua jaringan saraf tiruan (neural networks) yang bersaing untuk mencapai tujuan yang berbeda. Jaringan yang pertama disebut sebagai generator, bertugas untuk membuat sampel data yang menyerupai data pelatihan yang diberikan. Sementara jaringan kedua disebut discriminator, bertugas untuk membedakan antara sampel data yang dibuat oleh generator dengan data pelatihan asli.

Cara kerja GAN adalah dengan mengirimkan sampel data yang dihasilkan oleh generator ke dalam discriminator. Kemudian, discriminator akan mencoba membedakan antara data palsu yang dihasilkan oleh generator dan data pelatihan asli. Proses ini akan berulang terus menerus sampai generator dapat membuat data yang sangat mirip dengan data pelatihan sehingga discriminator tidak dapat membedakannya.

Program ini adalah implementasi Generative Adversarial Network (GAN) yang dilatih menggunakan dataset MNIST untuk menghasilkan gambar digit tangan. Berikut adalah alur singkat dari program ini:

  1. Import Library dan Data MNIST:
    • Mengimpor pustaka yang diperlukan seperti TensorFlow, NumPy, dan Matplotlib.
    • Memuat data MNIST, yang terdiri dari gambar digit tangan, dan melakukan normalisasi gambar ke rentang [-1, 1].
  2. Membangun Generator:
    • Membuat model generator yang mengubah vektor acak (noise) berukuran 100 menjadi gambar berukuran 28x28x1.
    • Model ini menggunakan lapisan Dense, BatchNormalization, LeakyReLU, Reshape, dan Conv2DTranspose.
  3. Membangun Discriminator:
    • Membuat model discriminator yang mengklasifikasikan apakah gambar adalah gambar asli (dari dataset) atau gambar palsu (dari generator).
    • Model ini menggunakan lapisan Conv2D, LeakyReLU, Dropout, dan Dense.
  4. Definisi Fungsi Loss dan Optimizer:
    • Mendefinisikan fungsi loss untuk generator dan discriminator menggunakan BinaryCrossentropy.
    • Mendefinisikan optimizer untuk kedua model menggunakan Adam optimizer.
  5. Langkah Pelatihan (Training Step):
    • Mendefinisikan fungsi train_step yang melakukan langkah pelatihan untuk satu batch gambar.
    • Menghasilkan gambar palsu dari noise menggunakan generator.
    • Mendapatkan output dari discriminator untuk gambar asli dan palsu.
    • Menghitung loss untuk generator dan discriminator.
    • Menghitung dan menerapkan gradien untuk memperbarui bobot kedua model.
  6. Fungsi untuk Menghasilkan dan Menyimpan Gambar:
    • Mendefinisikan fungsi generate_and_save_images untuk menghasilkan gambar dari generator dan menyimpannya setiap beberapa epoch.
  7. Loop Pelatihan:
    • Mendefinisikan fungsi train yang menjalankan loop pelatihan untuk sejumlah epoch yang ditentukan.
    • Pada setiap epoch, memproses setiap batch gambar dalam dataset, dan memanggil train_step.
    • Setiap 10 epoch, menghasilkan dan menampilkan gambar untuk memantau kemajuan pelatihan.
  8. Menjalankan Pelatihan:
    • Mendefinisikan ukuran batch dan membuat dataset pelatihan.
    • Memanggil fungsi train dengan dataset pelatihan dan jumlah epoch yang ditentukan untuk memulai pelatihan model GAN.

Secara keseluruhan, program ini melatih model GAN untuk menghasilkan gambar digit tangan yang mirip dengan gambar dalam dataset MNIST. Generator belajar menghasilkan gambar yang semakin realistis, sementara discriminator belajar membedakan antara gambar asli dan gambar palsu.

 

Informasi Course Terkait
  Kategori: Algoritma dan Pemrograman
  Course: Generative Adversarial Networks dengan Pytorch