Description
GAN (Generative Adversarial Networks) adalah jenis jaringan saraf tiruan (neural network) yang terdiri dari dua bagian utama: generator dan diskriminator.Generator bertanggung jawab untuk menghasilkan data sintetis yang menyerupai data asli, sementara diskriminator bertanggung jawab untuk membedakan antara data asli dan data sintetis yang dihasilkan oleh generator. Kedua bagian ini dilatih secara bersamaan dalam sebuah proses yang disebut dengan "adversarial training", di mana diskriminator akan berusaha membedakan data asli dan data sintetis sebaik mungkin sementara generator berusaha menghasilkan data sintetis yang semakin sulit dibedakan dari data asli. Melalui proses ini, generator belajar untuk menghasilkan data sintetis yang semakin mirip dengan data asli, sementara diskriminator belajar untuk semakin baik dalam membedakan antara data asli dan data sintetis. GAN sering digunakan untuk menghasilkan gambar, video, dan bahkan suara yang terlihat dan terdengar seolah-olah dibuat oleh manusia. GAN juga digunakan dalam aplikasi seperti augmented reality dan synthetic data generation.
Program ini adalah implementasi Generative Adversarial Network (GAN) yang menggunakan dataset karakter China. Berikut adalah penjelasan singkat tentang alur program ini:
- Import Library dan Data:
- Mengimpor pustaka yang diperlukan seperti TensorFlow, Pandas, dan Numpy.
- Memuat data dari file chinese_mnist.csv menggunakan Pandas dan menampilkan informasi tentang struktur data.
- Membangun Generator dan Discriminator:
- Membuat kelas Generator dan Discriminator yang masing-masing merupakan subclass dari tf.keras.models.Model.
- Generator terdiri dari tiga lapisan Dense untuk menghasilkan gambar dari noise.
- Discriminator terdiri dari tiga lapisan Dense untuk mengklasifikasikan gambar sebagai asli atau palsu.
- Inisialisasi Model GAN:
- Menginisialisasi objek generator dan discriminator dari kelas yang telah dibuat.
- Fungsi Optimizer dan Loss:
- Mendefinisikan optimizer menggunakan Adam optimizer dengan learning rate 0.0002.
- Mendefinisikan fungsi loss menggunakan BinaryCrossentropy untuk menghitung kerugian generator dan discriminator.
- Fungsi 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.
- Persiapan Data:
- Memuat data dari file chinese_mnist.csv.
- Mengubah karakter menjadi one-hot encoding.
- Memisahkan data gambar dan label.
- Membuat dataset TensorFlow dari data yang telah diproses, kemudian menyusun dataset menjadi batch dan mengacak urutannya.
- Membangun dan Melatih Model Klasifikasi:
- Mendefinisikan model klasifikasi menggunakan tf.keras.Sequential dengan beberapa lapisan Dense.
- Mendefinisikan optimizer dan fungsi loss untuk model klasifikasi.
- Mendefinisikan langkah pelatihan untuk model klasifikasi.
- Melatih model klasifikasi selama beberapa epoch, menghitung loss pada setiap epoch, dan mencetak hasilnya.





