Can someone help me? i train my Machine Learning models with CIFAR10 datasets from tensorflow datasets, but i can’t increase my model accuracy above 80%….
can someone give me a suggestion?
import tensorflow as tf
import time
import tensorflow_datasets as tfds
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.utils import to_categorical
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
(train_images, train_labels), (test_images, test_labels) = cifar10.load_data()
def normalize(train_images, test_images):
normalized_train_dataset = tf.cast(train_images, tf.float32) / 255.0
normalized_test_dataset = tf.cast(test_images, tf.float32) / 255.0
return normalized_train_dataset, normalized_test_dataset
# Normalisasi Dataset
train_dataset, test_dataset = normalize(train_images, test_images)
def visualization(image, image_sample=2):
for i in range (image_sample):
print(f"bentuk gambar : {np.shape(image)}")
print(f"bentuk data : {image[i].dtype}")
print(f"Nilai Makzsimum : {np.max(image[i])}")
print(f"Nilai Minimum : {np.min(image[i])}")
plt.figure(figsize=(6,6))
plt.imshow(image[i])
plt.axis('off')
plt.colorbar()
plt.title("Gambar CIFAR-10")
plt.grid(False)
plt.show()
visualization(train_dataset)
train_labels = np.squeeze(train_labels)
test_labels = np.squeeze(test_labels)
print(f"Shape Of Train Label : {train_labels.shape}")
print(f"Shape Of Test_Label : {test_labels.shape}")
train_labels= to_categorical(train_labels, num_classes=10)
test_labels = to_categorical(test_labels, num_classes=10)
from tensorflow.keras.preprocessing.image import ImageDataGenerator
datagen = ImageDataGenerator(
rotation_range=20,
width_shift_range=0.2,
height_shift_range=0.2,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
fill_mode='nearest'
)
model = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(32, (3,3), padding='same', activation=tf.nn.relu, input_shape=(32, 32, 3)),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.MaxPool2D((2,2), strides=2),
tf.keras.layers.Conv2D(64, (3,3), padding='same', activation=tf.nn.relu),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.MaxPool2D((2,2), strides=2),
tf.keras.layers.Conv2D(128, (3,3), padding='same', activation=tf.nn.relu),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.MaxPool2D((2,2), strides=2),
tf.keras.layers.Conv2D(128, (3,3), padding='same', activation=tf.nn.relu),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.MaxPool2D((2,2), strides=2),
tf.keras.layers.Conv2D(512, (3,3), padding='same', activation=tf.nn.relu, kernel_regularizer=tf.keras.regularizers.l2(0.01)),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.MaxPool2D((2,2), strides=2),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(512, activation=tf.nn.relu),
tf.keras.layers.Dropout(0.3),
tf.keras.layers.Dense(128, activation=tf.nn.relu),
tf.keras.layers.Dropout(0.5),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.summary()
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),
loss='categorical_crossentropy',
metrics=['accuracy'])
early_stopping = tf.keras.callbacks.EarlyStopping(
monitor='val_loss',
patience=5,
restore_best_weights=True
)
reducer_lr = tf.keras.callbacks.ReduceLROnPlateau(
monitor='val_loss',
factor=0.2,
patience=3,
verbose=1,
min_lr=0.00001
)
callbacks = [early_stopping, reducer_lr]
start_time = time.time()
history = model.fit(datagen.flow(
train_dataset,
train_labels,
batch_size=64),
epochs=30,
validation_data=(test_dataset, test_labels),
callbacks=callbacks,
verbose=1
)
end_time = time.time()
training_time = end_time - start_time
print(f"Training time: {training_time/60:.2f} minutes")
model.save('hand_gesture_detect.keras')
# evaluasi model
loss_val, accuracy_val = model.evaluate(test_dataset, test_labels)
print(f"Loss : {loss_val}")
print(f"Accuracy Val : {accuracy_val}")
from tensorflow.keras.applications import ResNet50
base_model = ResNet50(weights='ImageNet', include_top=False, input_tensor=(32, 32, 3))
i have complexsify my model, but still the accuracy its just 77-80%, i have no idea how to increase my model accuracy
New contributor
Fatih Al Mumtaz is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.