TF: TensorFlow untuk dataset CIFAR-100
Berikut adalah contoh kode Python yang memuat dataset CIFAR-100, membangun model Convolutional Neural Network (CNN) menggunakan Keras, melatih model tersebut, melakukan prediksi, dan memvisualisasikan hasilnya:
import tensorflow as tf from tensorflow.keras import datasets, layers, models import matplotlib.pyplot as plt import numpy as np # Memuat dataset CIFAR-100 (train_images, train_labels), (test_images, test_labels) = datasets.cifar100.load_data() # Normalisasi data ke rentang 0-1 train_images, test_images = train_images / 255.0, test_images / 255.0 # Mendefinisikan arsitektur model CNN model = models.Sequential([ layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)), layers.MaxPooling2D((2, 2)), layers.Conv2D(64, (3, 3), activation='relu'), layers.MaxPooling2D((2, 2)), layers.Conv2D(64, (3, 3), activation='relu'), layers.Flatten(), layers.Dense(64, activation='relu'), layers.Dense(100) ]) # Kompilasi model model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy']) # Melatih model history = model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels)) # Membuat prediksi pada data uji predictions = model.predict(test_images) predicted_labels = np.argmax(predictions, axis=1) # Fungsi untuk menampilkan gambar beserta label prediksi dan aslinya def plot_image(i, predictions_array, true_label, img): true_label, img = true_label[i][0], img[i] plt.grid(False) plt.xticks([]) plt.yticks([]) plt.imshow(img, cmap=plt.cm.binary) predicted_label = np.argmax(predictions_array) if predicted_label == true_label: color = 'blue' else: color = 'red' plt.xlabel(f"Prediksi: {predicted_label} (Asli: {true_label})", color=color) # Menampilkan beberapa gambar dengan prediksi dan label aslinya num_rows, num_cols = 5, 5 num_images = num_rows * num_cols plt.figure(figsize=(2*num_cols, 2*num_rows)) for i in range(num_images): plt.subplot(num_rows, num_cols, i+1) plot_image(i, predictions[i], test_labels, test_images) plt.tight_layout() plt.show()
Penjelasan kode:
1. Memuat dan Menormalisasi Data: Dataset CIFAR-100 dimuat menggunakan `datasets.cifar100.load_data()`, kemudian nilai piksel dinormalisasi ke rentang 0-1 dengan membagi 255.0.
2. Membangun Model CNN: Model Sequential dibangun dengan menambahkan lapisan-lapisan:
- Tiga lapisan konvolusi dengan fungsi aktivasi ReLU dan ukuran kernel 3x3.
- Dua lapisan pooling maksimal dengan ukuran 2x2 untuk downsampling.
- Lapisan Flatten untuk meratakan output sebelum masuk ke lapisan Dense.
- Dua lapisan Dense, satu dengan 64 neuron dan ReLU, serta lapisan output dengan 100 neuron sesuai jumlah kelas.
3. Kompilasi dan Pelatihan Model: Model dikompilasi dengan optimizer Adam dan fungsi loss SparseCategoricalCrossentropy. Model kemudian dilatih selama 10 epoch dengan data pelatihan dan divalidasi dengan data uji.
4. Prediksi dan Visualisasi: Setelah pelatihan, model digunakan untuk memprediksi data uji. Fungsi `plot_image` menampilkan gambar beserta label prediksi dan aslinya. Sebanyak 25 gambar ditampilkan dalam grid 5x5.
Catatan:
- Pastikan Anda memiliki TensorFlow dan Matplotlib terinstal. Jika belum, instal dengan `pip install tensorflow matplotlib`.
- Pelatihan model dapat memakan waktu tergantung pada spesifikasi perangkat keras Anda.
- Untuk meningkatkan akurasi, pertimbangkan untuk menambah jumlah epoch atau mengubah arsitektur model.
Kode ini memberikan dasar untuk membangun, melatih, dan mengevaluasi model CNN pada dataset CIFAR-100. Anda dapat mengembangkan lebih lanjut dengan teknik augmentasi data, regularisasi, atau menggunakan arsitektur model yang lebih kompleks.