TF: TensorFlow untuk dataset CIFAR-10
Revision as of 09:10, 16 March 2025 by Onnowpurbo (talk | contribs) (Created page with "Berikut adalah contoh kode Python yang membangun model Convolutional Neural Network (CNN) menggunakan Keras untuk mengklasifikasikan dataset CIFAR-10, melakukan prediksi, dan...")
Berikut adalah contoh kode Python yang membangun model Convolutional Neural Network (CNN) menggunakan Keras untuk mengklasifikasikan dataset CIFAR-10, 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-10 (x_train, y_train), (x_test, y_test) = datasets.cifar10.load_data() # Normalisasi nilai piksel ke rentang 0 hingga 1 x_train, x_test = x_train / 255.0, x_test / 255.0 # Mendefinisikan nama kelas class_names = ['Pesawat', 'Mobil', 'Burung', 'Kucing', 'Rusa', 'Anjing', 'Katak', 'Kuda', 'Kapal', 'Truk'] # Membangun 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(10) ]) # Kompilasi model model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy']) # Melatih model history = model.fit(x_train, y_train, epochs=10, validation_data=(x_test, y_test)) # Mengevaluasi model test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2) print(f'\nAkurasi pada data uji: {test_acc:.2f}') # Membuat prediksi probability_model = models.Sequential([model, layers.Softmax()]) predictions = probability_model.predict(x_test) # Fungsi untuk memplot gambar dengan prediksi 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"{class_names[predicted_label]} ({class_names[true_label]})", color=color) # Fungsi untuk memplot nilai prediksi def plot_value_array(i, predictions_array, true_label): true_label = true_label[i][0] plt.grid(False) plt.xticks(range(10)) plt.yticks([]) thisplot = plt.bar(range(10), predictions_array, color="#777777") plt.ylim([0, 1]) predicted_label = np.argmax(predictions_array) thisplot[predicted_label].set_color('red') thisplot[true_label].set_color('blue') # Memvisualisasikan beberapa gambar beserta prediksinya num_rows = 5 num_cols = 3 num_images = num_rows * num_cols plt.figure(figsize=(2*2*num_cols, 2*num_rows)) for i in range(num_images): plt.subplot(num_rows, 2*num_cols, 2*i+1) plot_image(i, predictions[i], y_test, x_test) plt.subplot(num_rows, 2*num_cols, 2*i+2) plot_value_array(i, predictions[i], y_test) plt.tight_layout() plt.show()
Penjelasan Kode:
1. Memuat dan Mempersiapkan Data:
- Dataset CIFAR-10 dimuat menggunakan `tensorflow.keras.datasets.cifar10.load_data()`.
- Data gambar dinormalisasi ke rentang 0 hingga 1 untuk mempercepat konvergensi model.
2. Membangun Model CNN:
- Model Sequential Keras digunakan untuk menumpuk lapisan-lapisan jaringan.
- Tiga lapisan konvolusi (`Conv2D`) dengan fungsi aktivasi ReLU dan lapisan pooling (`MaxPooling2D`) ditambahkan untuk ekstraksi fitur.
- Lapisan flatten digunakan untuk meratakan output sebelum memasuki lapisan dense.
- Dua lapisan dense digunakan, yang terakhir memiliki 10 neuron sesuai dengan jumlah kelas.
3. Kompilasi dan Pelatihan Model:
- Model dikompilasi dengan optimizer Adam dan fungsi loss `SparseCategoricalCrossentropy`.
- Model dilatih selama 10 epoch dengan data pelatihan dan divalidasi menggunakan data uji.
4. Evaluasi Model:
- Model dievaluasi pada data uji untuk mendapatkan akurasi.
5. Prediksi dan Visualisasi:
- Prediksi dibuat untuk data uji.
- Fungsi `plot_image` dan `plot_value_array` digunakan untuk menampilkan gambar beserta prediksi dan probabilitasnya.
- Beberapa gambar beserta prediksinya ditampilkan dalam grid.
Catatan:
- Untuk mencapai akurasi yang lebih tinggi, Anda dapat menambahkan teknik augmentasi data atau menggunakan arsitektur model yang lebih kompleks.
- Pastikan Anda memiliki semua pustaka yang diperlukan terinstal, seperti TensorFlow dan Matplotlib.