TF: Penjelasan Model TensorFlow

From OnnoWiki
Jump to navigation Jump to search

Model:

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10)
])

Berikut adalah penjelasan dari setiap lapisan dalam model TensorFlow/Keras yang kamu berikan:

1. Flatten

tf.keras.layers.Flatten(input_shape=(28, 28))
  • Lapisan ini digunakan untuk mengubah (flatten) input dari bentuk matriks 2D menjadi vektor 1D.
  • Dalam kasus ini, inputnya adalah gambar berukuran 28x28 piksel, yang akan diratakan menjadi vektor 1D dengan panjang 784 (28×28).
  • Flatten tidak memiliki parameter yang dipelajari, hanya mengubah bentuk data.

2. Dense

tf.keras.layers.Dense(128, activation='relu')
  • Ini adalah fully connected layer (dense layer) dengan 128 neuron.
  • Setiap neuron menerima input dari semua elemen di lapisan sebelumnya (lapisan Flatten).
  • Menggunakan fungsi aktivasi ReLU (Rectified Linear Unit) untuk memperkenalkan non-linearitas:
ReLU(x) = max(0, x)
  • Fungsi aktivasi ini membantu jaringan belajar representasi yang lebih kompleks.

3. Dropout

tf.keras.layers.Dropout(0.2)
  • Digunakan untuk regularisasi agar model tidak overfitting.
  • Dropout 0.2 berarti 20% dari neuron di lapisan sebelumnya (Dense 128) akan dinonaktifkan secara acak selama training.
  • Ini membantu model untuk tidak terlalu bergantung pada fitur tertentu dan meningkatkan generalisasi pada data baru.

4. Dense (Output Layer)

tf.keras.layers.Dense(10)
  • Lapisan ini memiliki 10 neuron, sesuai dengan jumlah kelas yang ingin diprediksi (misalnya untuk klasifikasi digit 0-9 dalam dataset MNIST).
  • Tidak ada fungsi aktivasi dalam lapisan ini karena biasanya fungsi aktivasi softmax akan diterapkan di luar model (misalnya dalam fungsi loss `SparseCategoricalCrossentropy` yang sudah mengandung softmax secara internal).
  • Jika ingin eksplisit, kita bisa menambahkan `activation='softmax'` agar output berupa probabilitas untuk setiap kelas.

Kesimpulan

Model ini digunakan untuk klasifikasi gambar digit 28x28 piksel, kemungkinan besar dataset MNIST. Alurnya adalah:

  • Flatten → Meratakan gambar dari (28,28) menjadi vektor 784.
  • Dense (128 ReLU) → Lapisan tersembunyi dengan 128 neuron dan aktivasi ReLU.
  • Dropout (0.2) → Mengurangi overfitting dengan menonaktifkan 20% neuron secara acak saat training.
  • Dense (10 output tanpa aktivasi) → Menghasilkan 10 nilai logit untuk klasifikasi ke 10 kelas.

Jika model ini digunakan untuk klasifikasi, umumnya loss function yang digunakan adalah SparseCategoricalCrossentropy atau CategoricalCrossentropy, tergantung pada format label.


Pranala Menarik