Arabic Handwritten Characters Dataset
Arabic Handwritten Characters Dataset
Dataset available at https://www.kaggle.com/datasets/mloey1/ahcd1
Dataset available at https://www.kaggle.com/datasets/mloey1/ahcd1
In[]:=
NotebookDirectory[]SetDirectory[NotebookDirectory[]]
Out[]=
/home/mk/Desktop/Arabic-Handwritten-Characters-Dataset/
Out[]=
/home/mk/Desktop/Arabic-Handwritten-Characters-Dataset
In[]:=
rawTrainLabels = Import["csvTrainLabel 13440x1.csv"];rawTestLabels = Import["csvTestLabel 3360x1.csv"];rawTrainImages = Import["csvTrainImages 13440x1024.csv"];rawTestImages = Import["csvTestImages 3360x1024.csv"];
In[]:=
toImage[vec_]:= Image[Transpose@ArrayReshape[vec, {Sqrt[Length@vec],Sqrt[Length@vec]}]]
In[]:=
trainImages = Map[toImage,rawTrainImages];testImages = Map[toImage,rawTestImages];trainLabels = Flatten@rawTrainLabels;testLabels = Flatten@rawTestLabels;
In[]:=
RandomSample[trainImages,70]
Out[]=
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
In[]:=
myLeNet = NetInitialize@NetChain[{ConvolutionLayer[20,5],Ramp,PoolingLayer[2,2],ConvolutionLayer[50,5],Ramp,PoolingLayer[2,2],FlattenLayer[],LinearLayer[500],Ramp,LinearLayer[28],SoftmaxLayer[]},"Input"-> NetEncoder[{"Image",{32,32},ColorSpace->"Grayscale"}],"Output"-> NetDecoder[{"Class",Alphabet["Arabic"] }]]
Out[]=
NetChain
In[]:=
trainedNet = NetTrain[myLeNet,trainImages->trainLabels,MaxTrainingRounds10,BatchSize64]
Out[]=
NetChain
In[]:=
trainedNet
,
,
,
,
,
,
,
,
,
Out[]=
ت,ح,د,ج,و,ت,ض,خ,ر,ق
In[]:=
NetMeasurements[trainedNet,testImages->testLabels,"ConfusionMatrixPlot"]
Out[]=
actual class | |
| predicted class |
In[]:=
NetMeasurements[trainedNet,testImages->testLabels,"Accuracy"]
Out[]=
0.742262
