Coding

Download as pdf or txt
Download as pdf or txt
You are on page 1of 3

Link to the dataset:https://www.kaggle.

com/datasets/mloey1/ahcd1

import numpy as np
import os
import pandas as pd
import seaborn as sns
from PIL import Image
import matplotlib.pyplot as plt

import keras
from keras.models import Sequential
from keras.layers import Conv2D,MaxPool2D,Flatten,Dense,Dropout
from keras.utils import to_categorical
from keras.preprocessing.image import ImageDataGenerator

from google.colab import drive


drive.mount('/content/drive')

Mounted at /content/drive

Data Preprocessing

train_images = pd.read_csv('/content/drive/MyDrive/handwritten_arabic/csvTrainImages 13440x1024.csv')


train_label = pd.read_csv('/content/drive/MyDrive/handwritten_arabic/csvTrainLabel 13440x1.csv')

test_images = pd.read_csv('/content/drive/MyDrive/handwritten_arabic/csvTestImages 3360x1024.csv')


test_label = pd.read_csv('/content/drive/MyDrive/handwritten_arabic/csvTestLabel 3360x1.csv')

train_images = train_images.iloc[:,:].values
train_label = train_label.iloc[:,:].values

test_images = test_images.iloc[:,:].values
test_label = test_label.iloc[:,:].values

train_images[0].shape

train_label[0]

train_images.shape

train_images = train_images.reshape(train_images.shape[0], 32, 32)


test_images = test_images.reshape(test_images.shape[0],32,32)

print("Train images shape: ",train_images.shape)


print("Train labels shape: ",train_label.shape)

print("Test images shape: ",test_images.shape)


print("Test labels shape: ",test_label.shape)

fig, ax = plt.subplots(4,2,figsize=(20,20))

for i in range(4):
for j in range(2):
ax[i,j].imshow(train_images[i])

train_images.max()

train_images.min()

train_label.max()

#Normalize

train_images = train_images/255.0
test_images = test_images/255.0

train_images.max()
len(train_images)

X_train = train_images[1000:]
X_valid = train_images[:1000]

y_train = train_label[1000:]
y_valid = train_label[:1000]

num_classes = len(np.unique(train_label)) + 1
num_classes

X_test = test_images[:]
y_test = test_label[:]

y_train = to_categorical(y_train,num_classes)
y_valid = to_categorical(y_valid,num_classes)
y_test = to_categorical(y_test,num_classes)

y_train

print("X train shape: ",X_train.shape)

print("Training samples: ",X_train.shape[0])


print("Validation samples: ",X_valid.shape[0])
print("Testing samples: ",X_test.shape[0])

X_train = X_train.reshape([-1, 32, 32, 1])


X_test = X_test.reshape([-1, 32, 32, 1])
X_valid = X_valid.reshape([-1, 32, 32, 1])

X_train.shape

model = Sequential()

X_train.shape[1:]

Deep Learning Model

model.add(Conv2D(filters=16, kernel_size=2, padding='same', activation='relu', input_shape=(32,32,1)))


model.add(MaxPool2D(pool_size=2))

model.add(Conv2D(filters=32, kernel_size=2, padding='same', activation='relu'))


model.add(MaxPool2D(pool_size=2))

model.add(Conv2D(filters=64, kernel_size=2, padding='same', activation='relu'))


model.add(MaxPool2D(pool_size=2))

model.summary()

model.add(Flatten())

model.add(Dense(512,activation='relu'))
model.add(Dropout(0.3))

model.add(Dense(256,activation='relu'))
model.add(Dropout(0.3))

model.add(Dense(29,activation='softmax'))

model.summary()

model.compile(loss='categorical_crossentropy', optimizer='rmsprop',
metrics=['accuracy'])

data_gen = ImageDataGenerator(width_shift_range=0.1,
height_shift_range=0.1,
horizontal_flip=True)
data_gen.fit(X_train)

batch_size=128

history = model.fit_generator(data_gen.flow(X_train, y_train, batch_size=batch_size),


steps_per_epoch=X_train.shape[0] // batch_size,
epochs=100, verbose=2,
validation_data=(X_valid, y_valid),
validation_steps=X_valid.shape[0] // batch_size)

plt.style.use('dark_background')
fig, ax = plt.subplots(2, 2, figsize=(10, 10))
sns.lineplot(x=np.arange(1, 101), y=history.history.get('loss'), ax=ax[0, 0])
sns.lineplot(x=np.arange(1, 101), y=history.history.get('accuracy'), ax=ax[0, 1])
sns.lineplot(x=np.arange(1, 101), y=history.history.get('val_loss'), ax=ax[1, 0])
sns.lineplot(x=np.arange(1, 101), y=history.history.get('val_accuracy'), ax=ax[1, 1])
ax[0, 0].set_title('Training Loss vs Epochs')
ax[0, 1].set_title('Training Accuracy vs Epochs')
ax[1, 0].set_title('Validation Loss vs Epochs')
ax[1, 1].set_title('Validation Accuracy vs Epochs')
fig.suptitle('Basic CNN model', size=16)
plt.show()

score = model.evaluate(X_test, y_test, verbose=0)


print('\n', 'Test accuracy:', score[1]*100)
print('\n', 'Total test Loss:', score[0]*100)

error 0s completed at 10:18 PM

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy