Deep Learning MNIST | Tensorflow | CNN

Leonardo Languju

Sosial Media


0 orang menyukai ini
Suka

Summary

MNIST adalah kumpulan data digit terhadap tulisan tangan yang berisi sebanyak 60.000 digit tulisan tangan gambar untuk melatih model pembelajaran mesin dan 10.000 digit tulisan tangan untuk menguji model. Pada pengujian projek model ini saya akan menggunakan algoritma CNN untuk memprediksi gambar tulisan tangan yang tersedia pada dataset MNIST.

Description

Convolutional Neural Network (CNN) adalah jaringan neural network yang banyak digunakan untuk pengenalan objek, ekstraksi objek dan klasifikasi pada sebuah gambar untuk pembuatan model dalam citra gambar. 
 

Dalam hal ini langkah pertama yang dilakukan adalah mengimport library-library python yang akan digunakan seperti tensorflow, matplotlib, numpy dan keras.

 

Setelah itu melihat ukuran shape pada gambar yang tersedia dan membaca dataset menggunakan keras. Berdasarkan dari hasil yang diberikan dataset ini terdiri atas kumpulan data 60.000 gambar skala abu-abu dengan ukuran 28 x 28 dari 10 digit angka (1-10), bersama dengan test set 10.000 gambar.

 

Kemudian setelah melakukan visualisai untuk melihat gambar dataset, pada hal ini saya membuat sebuah function untuk mendeteksi 5 gambar pertama pada dataset MNIST dan mengubah gambar tersebut menjadi binary image.

 

Sebelum normalisasi harus melihat terlebih dahulu untuk nilai dari setiap pixel pada gambar, hasil output diberikan akan memunculkan angka 0-255, dimana untuk angka 0 adalah warna hitam dan 255 adalah warna putih.

 

Setelah itu perlu dilakukan normalisasi untuk dilatih data tersebut dan dilihat untuk nilai dari hasil normalisasi. Dapat dilhat untuk hasil normalisasi akan bernilau diantara 0-1 dikarenakna semua nilai tersbut dibagikan 255.

                             

 

Kemudian melakukan resizing gambar untuk mencocokkan dengan algoritma model CNN

 

Kemudian tahapan berikutnya yang dilakukan adalah memodelkan data dengan menggunakan menggunakan Keras API dari TensorFlow. Lapisan Conv2D pertama memiliki 64 filter berukuran 3x3 dan mengambil bentuk input yang ditentukan oleh x_trainr.shape. Setelah itu menerapkan fungsi aktivasi ReLU. Kemudian, layer MaxPooling2D dengan ukuran pool 2x2 ditambahkan untuk melakukan down-sampling.

Kemudian menambahkan lagi Dua set lapisan Conv2D, Activation, dan MaxPooling2D, masing-masing dengan 64 filter ukuran 3x3. Lapisan ini membantu mengekstraksi fitur tingkat tinggi dari data input dan melakukan pengambilan sampel lebih lanjut. Layer Flatten digunakan untuk mengubah output dari layer sebelumnya menjadi vektor 1D. Ini diperlukan untuk menghubungkan lapisan konvolusional ke lapisan padat (terhubung penuh).

Dua lapisan Dense Layer dengan masing-masing 64 dan 32 unit ditambahkan. Lapisan Dense terakhir terdiri dari 10 unit, sesuai dengan jumlah kelas dalam masalah klasifikasi. Fungsi aktivasi softmax digunakan untuk mendapatkan probabilitas kelas.

 

Kemudian melakukan compiling dan melatih model CNN dimana pada model tersebut menggunakan loss="sparse_categorical_crossentropy" untuk mengukur perbedaan antara label yang diprediksi dan yang sebenarnya. Dan menggunakan optimizer adam yang popular digunakan untuk efisiensi dan menggunakan metrik accuracy selama pelatihan untuk mengukur persentase sampel yang diklasifikasikan dengan benar. 

Setelah itu menggunakna Fungsi fit untuk melatih model pada data pelatihan dan mebagikan validasi sebesar 30% data pelatihan digunakan untuk validasi.

 

Dapat dilihat pada hasil akurasi yang diberikan bahwa akurasi yang dilakukan memberikan nilai akurasi sebesar 98% dengan loss sebesar 0.7%. Hasil akurasi sudah sangat baik. 

 

Setelah itu melakukan prediksi dengan memasukkan gambar buatan saya sendiri kepada model, pada hal ini saya membuat sebuah gambar dengan nilai digit 3. Setelah itu pada gambar tersebut harus dilakukan normalisasi mengubah ukuran dimensi gambar agar dapat diprediksi oleh model. 

                         

 

Pada hal ini terlihat bahwa dengan model yang sudah terbentuk dapat memprediksi hasil gambar digit yang saya berikan.

                         

Informasi Course Terkait
  Kategori: Artificial Intelligence
  Course: Deep Learning dengan TensorFlow