TF: Penjelasan Model TensorFlow
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.