Pertemuan 12: Deep Learning, CNN, dan TensorFlow

Tujuan Pembelajaran

Setelah mengikuti pertemuan ini, mahasiswa diharapkan mampu menerapkan konsep dan keterampilan berikut secara mandiri.

  • Menjelaskan dasar deep learning dan jaringan saraf.
  • Mengenal arsitektur CNN untuk pengenalan gambar.
  • Membangun dan melatih model CNN dengan TensorFlow/Keras.
  • Mengevaluasi akurasi model pada data uji.

Deep learning adalah bagian machine learning yang memakai jaringan saraf tiruan berlapis banyak. Setiap lapisan belajar merepresentasikan data berjenjang, dari ciri sederhana seperti tepi gambar sampai konsep rumit seperti bentuk keseluruhan. TensorFlow dengan API Keras menjadi kerangka kerja paling umum untuk membangun jaringan ini.Menjelaskan bahwa deep learning berbeda dari machine learning tradisional karena mampu mempelajari representasi fitur secara otomatis dari data mentah, tanpa ekstraksi fitur manual.

Arsitektur CNN

Convolutional Neural Network dirancang untuk gambar: lapisan konvolusi mengekstrak pola lokal, lapisan pooling meringkas informasi tanpa mengubah kedalaman, lalu lapisan dense menutup sebagai pengklasifikasi. Kombinasi inilah yang membuat CNN unggul pada tugas visual.Menjelaskan alur dasar melatih jaringan: menentukan arsitektur, menyusun fungsi kerugian dan pengoptimal, lalu mengiterasikan epoch hingga kesalahan menurun. Eksperimen mengubah jumlah lapisan adalah bagian penting dari praktik.

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

model = keras.Sequential([
    layers.Input(shape=(28, 28, 1)),
    layers.Conv2D(32, (3, 3), activation="relu"),
    layers.MaxPooling2D((2, 2)),
    layers.Flatten(),
    layers.Dense(128, activation="relu"),
    layers.Dense(10, activation="softmax")
])

Data dan Pelatihan

Dataset MNIST berisi gambar digit tulisan tangan berukuran 28 kali 28 piksel. Sebelum dilatih, nilai piksel dinormalisasi ke rentang 0 sampai 1 agar pelatihan lebih stabil dan konvergen cepat. Fungsi kerugian sparse_categorical_crossentropy cocok untuk label berupa indeks kelas.

(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
x_train = x_train.astype("float32") / 255.0
x_test = x_test.astype("float32") / 255.0

model.compile(
    optimizer="adam",
    loss="sparse_categorical_crossentropy",
    metrics=["accuracy"]
)

model.fit(x_train, y_train,
          epochs=5,
          validation_data=(x_test, y_test))

Setiap epoch memutar seluruh data latih sekali; semakin banyak epoch umumnya akurasi naik hingga mendatar, tetapi berlebihan bisa berujung overfit. Setelah latihan, akurasi data uji dihitung dan prediksi label untuk contoh gambar ditampilkan.

loss, acc = model.evaluate(x_test, y_test, verbose=0)
print("Akurasi uji:", round(acc, 4))

pred = model.predict(x_test[:1])
print("Prediksi digit:", pred.argmax())

Langkah Praktik

Latihan ini mungkin berjalan lebih lama karena pelatihan jaringan memakai banyak perhitungan; pastikan lingkungan Anda mendukung TensorFlow.

  • Bangun arsitektur CNN dengan lapisan konvolusi dan pooling.
  • Normalisasi gambar lalu compile model dengan optimizer adam.
  • Latih model selama beberapa epoch dan amati penurunan loss.
  • Evaluasi akurasi pada data uji dan tampilkan beberapa prediksi.
  • Eksperimen menambah lapisan dense lalu bandingkan hasilnya.

Perhatikan kurva loss dalam log pelatihan: jika loss validasi mulai naik sementara loss latih turun, model sedang mulai overfit.

Latihan

Latihan deep learning membutuhkan ketekunan karena setiap percobaan memakan waktu; catatlah konfigurasi dan hasil tiap percobaan.

  • Jelaskan peran lapisan konvolusi dan pooling pada CNN.
  • Mengapa gambar dinormalisasi ke rentang 0-1 sebelum dilatih?
  • Latih model CNN pada MNIST dengan epoch lebih banyak lalu laporkan akurasinya.
No Comment! Be the first one.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *