๐Ÿš“Praktikum 2

Klasifikasi Multi-label dengan Data CIFAT

Desclaimer: Praktikum ini merupakan tutorial CNN dari Tensorflow yang dapat diakses pada laman https://www.tensorflow.org/tutorials/images/cnn

Deskripsi

Pada praktikum ini kita akan membuat model CNN untuk mengklasifikasikan 10 objek dari dataset CIFAR. Dataset terdiri dari 60.000 citra dan setiap label terdiri dari 6.000 citra. Dataset telah dibagi menjadi 50.000 data training dan 10.000 data testing.

Langkah 1 - Load Library

import tensorflow as tf

from tensorflow.keras import datasets, layers, models
import matplotlib.pyplot as plt

Langkah 2 - Unduh Dataset CIFAR

(train_images, train_labels), (test_images, test_labels) = datasets.cifar10.load_data()

# Normalize pixel values to be between 0 and 1
train_images, test_images = train_images / 255.0, test_images / 255.0

Langkah 3 - Verifikasi Data

class_names = ['airplane', 'automobile', 'bird', 'cat', 'deer',
ย  ย  ย  ย  ย  ย  ย  ย 'dog', 'frog', 'horse', 'ship', 'truck']

plt.figure(figsize=(10,10))
for i in range(25):
ย  ย  plt.subplot(5,5,i+1)
ย  ย  plt.xticks([])
ย  ย  plt.yticks([])
ย  ย  plt.grid(False)
ย  ย  plt.imshow(train_images[i])
ย  ย  # The CIFAR labels happen to be arrays, 
ย  ย  # which is why you need the extra index
ย  ย  plt.xlabel(class_names[train_labels[i][0]])
plt.show()

Langkah 4 - Buat Model CNN

Langkah 4.1. - Buat Layer Konvolusi

model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))

Langkah 4.2. - Cek Arsitektur Konvolusi

model.summary()

Langkah 4.3. - Tambahkan Layer Fully Connected

model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10))

Langkah 4.4. - Cek Arsitektur Model CNN

model.summary()

Langkah 4.5. - Compile Model CNN

model.compile(optimizer='adam',
ย  ย  ย  ย  ย  ย  ย  loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
ย  ย  ย  ย  ย  ย  ย  metrics=['accuracy'])

Langkah 5 - Fit Model

history = model.fit(train_images, train_labels, epochs=10, 
ย  ย  ย  ย  ย  ย  ย  ย  ย  ย  validation_data=(test_images, test_labels))

Langkah 6 - Evaluasi Model

plt.plot(history.history['accuracy'], label='accuracy')
plt.plot(history.history['val_accuracy'], label = 'val_accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.ylim([0.5, 1])
plt.legend(loc='lower right')

test_loss, test_acc = model.evaluate(test_images, ย test_labels, verbose=2)

Hasil proses training,

Langkah 7 - Cetak Hasil Akurasi

print(test_acc)

Berapa akurasi yang Anda dapatkan?

Last updated