{ "cells": [ { "cell_type": "code", "execution_count": 17, "id": "operational-tablet", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "from keras.datasets import cifar10\n", "import pandas as pd\n", "import numpy as np\n", "from tensorflow.keras.utils import to_categorical\n", "from tensorflow.keras.models import Model, Sequential\n", "from tensorflow.keras.layers import Conv2D,MaxPooling2D,Flatten,Dense\n", "from tensorflow.keras.optimizers import SGD\n", "from sklearn.model_selection import train_test_split" ] }, { "cell_type": "code", "execution_count": 18, "id": "stunning-sussex", "metadata": {}, "outputs": [], "source": [ "(x_train, y_train), (x_test, y_test)= cifar10.load_data()" ] }, { "cell_type": "code", "execution_count": 19, "id": "drawn-voluntary", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(50000, 32, 32, 3)" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x_train.shape" ] }, { "cell_type": "code", "execution_count": 20, "id": "hundred-healthcare", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(50000, 1)" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_train.shape" ] }, { "cell_type": "code", "execution_count": 21, "id": "built-gazette", "metadata": {}, "outputs": [], "source": [ "xtrain_df=pd.DataFrame(x_train.reshape((len(x_train), np.prod(x_train.shape[1:]))))\n", "ytrain_df=pd.DataFrame(y_train, columns=[\"target\"])" ] }, { "cell_type": "code", "execution_count": 22, "id": "combined-classroom", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...306330643065306630673068306930703071target
059626343464550484368...2161841401511188412392726
115417718712613713610510495102...1431331391431341421431331449
2255255255253253253253253253253...7885837985838086849
328251037341938352042...5447286356377265464
4170180198168178196177185203183...7579827175787377801
\n", "

5 rows × 3073 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 7 8 9 ... 3063 3064 3065 \\\n", "0 59 62 63 43 46 45 50 48 43 68 ... 216 184 140 \n", "1 154 177 187 126 137 136 105 104 95 102 ... 143 133 139 \n", "2 255 255 255 253 253 253 253 253 253 253 ... 78 85 83 \n", "3 28 25 10 37 34 19 38 35 20 42 ... 54 47 28 \n", "4 170 180 198 168 178 196 177 185 203 183 ... 75 79 82 \n", "\n", " 3066 3067 3068 3069 3070 3071 target \n", "0 151 118 84 123 92 72 6 \n", "1 143 134 142 143 133 144 9 \n", "2 79 85 83 80 86 84 9 \n", "3 63 56 37 72 65 46 4 \n", "4 71 75 78 73 77 80 1 \n", "\n", "[5 rows x 3073 columns]" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df=pd.concat([xtrain_df,ytrain_df], axis=1)\n", "df.head()" ] }, { "cell_type": "markdown", "id": "dense-swedish", "metadata": {}, "source": [ "### converting the target into one hot encoded vector" ] }, { "cell_type": "code", "execution_count": 23, "id": "buried-teaching", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(50000, 10)" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_train = to_categorical(y_train)\n", "y_test = to_categorical(y_test)\n", "y_train.shape" ] }, { "cell_type": "code", "execution_count": 24, "id": "prescribed-collar", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...class1class2class3class4class5class6class7class8class9class10
059626343464550484368...0.00.00.00.00.00.01.00.00.00.0
115417718712613713610510495102...0.00.00.00.00.00.00.00.00.01.0
2255255255253253253253253253253...0.00.00.00.00.00.00.00.00.01.0
328251037341938352042...0.00.00.00.01.00.00.00.00.00.0
4170180198168178196177185203183...0.01.00.00.00.00.00.00.00.00.0
\n", "

5 rows × 3082 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 7 8 9 ... class1 class2 \\\n", "0 59 62 63 43 46 45 50 48 43 68 ... 0.0 0.0 \n", "1 154 177 187 126 137 136 105 104 95 102 ... 0.0 0.0 \n", "2 255 255 255 253 253 253 253 253 253 253 ... 0.0 0.0 \n", "3 28 25 10 37 34 19 38 35 20 42 ... 0.0 0.0 \n", "4 170 180 198 168 178 196 177 185 203 183 ... 0.0 1.0 \n", "\n", " class3 class4 class5 class6 class7 class8 class9 class10 \n", "0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 \n", "1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 \n", "2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 \n", "3 0.0 0.0 1.0 0.0 0.0 0.0 0.0 0.0 \n", "4 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "\n", "[5 rows x 3082 columns]" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xtrain_df=pd.DataFrame(x_train.reshape((len(x_train), np.prod(x_train.shape[1:]))))\n", "ytrain_df=pd.DataFrame(y_train, columns=[\"class\"+str(i) for i in range(1,11)])\n", "df=pd.concat([xtrain_df,ytrain_df], axis=1)\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 25, "id": "proprietary-sapphire", "metadata": {}, "outputs": [], "source": [ "x_train= (x_train.astype('float32'))/255.0\n", "x_test= (x_test.astype('float32'))/255.0" ] }, { "cell_type": "code", "execution_count": 26, "id": "disabled-count", "metadata": {}, "outputs": [], "source": [ "x_test, x_validation, y_test, y_validation = train_test_split(x_test, y_test, test_size=0.20, random_state=42)" ] }, { "cell_type": "markdown", "id": "prescription-governor", "metadata": {}, "source": [ "## CNN" ] }, { "cell_type": "code", "execution_count": 27, "id": "disturbed-scene", "metadata": {}, "outputs": [], "source": [ "model = Sequential()\n", "model.add(Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same', input_shape=(32, 32, 3)))\n", "model.add(Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))\n", "model.add(MaxPooling2D((2, 2)))\n", "model.add(Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))\n", "model.add(Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))\n", "model.add(MaxPooling2D((2, 2)))\n", "model.add(Conv2D(128, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))\n", "model.add(Conv2D(128, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))\n", "model.add(MaxPooling2D((2, 2)))\n", "model.add(Conv2D(256, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))\n", "model.add(Conv2D(256, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))\n", "model.add(MaxPooling2D((2, 2)))\n", "model.add(Flatten())\n", "model.add(Dense(256, activation='relu', kernel_initializer='he_uniform'))\n", "model.add(Dense(128, activation='relu', kernel_initializer='he_uniform'))\n", "model.add(Dense(64, activation='relu', kernel_initializer='he_uniform'))\n", "model.add(Dense(32, activation='relu', kernel_initializer='he_uniform'))\n", "model.add(Dense(10, activation='softmax'))" ] }, { "cell_type": "code", "execution_count": 28, "id": "iraqi-roads", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\mohammad\\anaconda3\\envs\\tensorflow_v2_6\\lib\\site-packages\\keras\\optimizer_v2\\optimizer_v2.py:356: UserWarning: The `lr` argument is deprecated, use `learning_rate` instead.\n", " \"The `lr` argument is deprecated, use `learning_rate` instead.\")\n" ] } ], "source": [ "opt = SGD(lr=0.001, momentum=0.9)\n", "model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 29, "id": "destroyed-hampshire", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/50\n", "782/782 [==============================] - 14s 17ms/step - loss: 1.8403 - accuracy: 0.3225 - val_loss: 1.5393 - val_accuracy: 0.4200\n", "Epoch 2/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 1.4695 - accuracy: 0.4669 - val_loss: 1.3437 - val_accuracy: 0.5185\n", "Epoch 3/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 1.2711 - accuracy: 0.5440 - val_loss: 1.1624 - val_accuracy: 0.5780\n", "Epoch 4/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 1.1254 - accuracy: 0.5980 - val_loss: 1.1636 - val_accuracy: 0.5900\n", "Epoch 5/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 1.0157 - accuracy: 0.6403 - val_loss: 1.1447 - val_accuracy: 0.5930\n", "Epoch 6/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.9241 - accuracy: 0.6731 - val_loss: 1.0210 - val_accuracy: 0.6420\n", "Epoch 7/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.8187 - accuracy: 0.7101 - val_loss: 0.9612 - val_accuracy: 0.6685\n", "Epoch 8/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.7441 - accuracy: 0.7392 - val_loss: 0.9394 - val_accuracy: 0.6890\n", "Epoch 9/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.6705 - accuracy: 0.7645 - val_loss: 0.9461 - val_accuracy: 0.6780\n", "Epoch 10/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.5949 - accuracy: 0.7928 - val_loss: 1.0177 - val_accuracy: 0.6700\n", "Epoch 11/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.5272 - accuracy: 0.8145 - val_loss: 0.9847 - val_accuracy: 0.6860\n", "Epoch 12/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.4598 - accuracy: 0.8381 - val_loss: 0.8957 - val_accuracy: 0.7210\n", "Epoch 13/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.3993 - accuracy: 0.8588 - val_loss: 0.9284 - val_accuracy: 0.7210\n", "Epoch 14/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.3520 - accuracy: 0.8757 - val_loss: 1.0051 - val_accuracy: 0.7115\n", "Epoch 15/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.2985 - accuracy: 0.8924 - val_loss: 1.0844 - val_accuracy: 0.7130\n", "Epoch 16/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.2461 - accuracy: 0.9119 - val_loss: 1.1862 - val_accuracy: 0.7070\n", "Epoch 17/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.2092 - accuracy: 0.9241 - val_loss: 1.2069 - val_accuracy: 0.7125\n", "Epoch 18/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.1895 - accuracy: 0.9323 - val_loss: 1.3913 - val_accuracy: 0.7005\n", "Epoch 19/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.1675 - accuracy: 0.9409 - val_loss: 1.2548 - val_accuracy: 0.7170\n", "Epoch 20/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.1352 - accuracy: 0.9522 - val_loss: 1.4228 - val_accuracy: 0.7065\n", "Epoch 21/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.1298 - accuracy: 0.9529 - val_loss: 1.3620 - val_accuracy: 0.7140\n", "Epoch 22/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.1173 - accuracy: 0.9597 - val_loss: 1.4385 - val_accuracy: 0.7045\n", "Epoch 23/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0924 - accuracy: 0.9682 - val_loss: 1.5122 - val_accuracy: 0.7175\n", "Epoch 24/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0930 - accuracy: 0.9668 - val_loss: 1.4073 - val_accuracy: 0.7205\n", "Epoch 25/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0785 - accuracy: 0.9725 - val_loss: 1.4774 - val_accuracy: 0.7170\n", "Epoch 26/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0764 - accuracy: 0.9729 - val_loss: 1.6411 - val_accuracy: 0.7275\n", "Epoch 27/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0698 - accuracy: 0.9759 - val_loss: 1.6091 - val_accuracy: 0.7185\n", "Epoch 28/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0505 - accuracy: 0.9825 - val_loss: 1.6667 - val_accuracy: 0.7300\n", "Epoch 29/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0650 - accuracy: 0.9774 - val_loss: 1.6279 - val_accuracy: 0.7275\n", "Epoch 30/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0525 - accuracy: 0.9815 - val_loss: 1.7200 - val_accuracy: 0.7405\n", "Epoch 31/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0597 - accuracy: 0.9796 - val_loss: 1.7952 - val_accuracy: 0.7185\n", "Epoch 32/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0333 - accuracy: 0.9891 - val_loss: 1.7829 - val_accuracy: 0.7410\n", "Epoch 33/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0411 - accuracy: 0.9860 - val_loss: 1.6989 - val_accuracy: 0.7135\n", "Epoch 34/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0395 - accuracy: 0.9867 - val_loss: 1.8410 - val_accuracy: 0.7270\n", "Epoch 35/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0390 - accuracy: 0.9871 - val_loss: 1.9576 - val_accuracy: 0.7215 - loss: 0.039 - ETA: - ETA: 0s - loss: 0.0388 - ac - ETA: 0s - loss: 0.0390 - accuracy: \n", "Epoch 36/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0432 - accuracy: 0.9856 - val_loss: 1.8259 - val_accuracy: 0.7365\n", "Epoch 37/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0426 - accuracy: 0.9853 - val_loss: 1.9601 - val_accuracy: 0.7135\n", "Epoch 38/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0326 - accuracy: 0.9891 - val_loss: 1.8575 - val_accuracy: 0.7390\n", "Epoch 39/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0367 - accuracy: 0.9878 - val_loss: 1.8817 - val_accuracy: 0.7210\n", "Epoch 40/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0274 - accuracy: 0.9905 - val_loss: 2.1434 - val_accuracy: 0.7260\n", "Epoch 41/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0252 - accuracy: 0.9914 - val_loss: 1.9513 - val_accuracy: 0.7250\n", "Epoch 42/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0280 - accuracy: 0.9904 - val_loss: 2.0442 - val_accuracy: 0.7275\n", "Epoch 43/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0218 - accuracy: 0.9923 - val_loss: 2.1386 - val_accuracy: 0.7375\n", "Epoch 44/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0149 - accuracy: 0.9953 - val_loss: 2.2688 - val_accuracy: 0.7225\n", "Epoch 45/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0264 - accuracy: 0.9910 - val_loss: 2.0442 - val_accuracy: 0.7120\n", "Epoch 46/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0268 - accuracy: 0.9907 - val_loss: 2.0620 - val_accuracy: 0.7085\n", "Epoch 47/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0288 - accuracy: 0.9903 - val_loss: 2.1052 - val_accuracy: 0.7325\n", "Epoch 48/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0219 - accuracy: 0.9933 - val_loss: 2.1192 - val_accuracy: 0.7195\n", "Epoch 49/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0241 - accuracy: 0.9921 - val_loss: 2.1155 - val_accuracy: 0.7185\n", "Epoch 50/50\n", "782/782 [==============================] - 12s 16ms/step - loss: 0.0184 - accuracy: 0.9941 - val_loss: 2.1414 - val_accuracy: 0.7250\n" ] } ], "source": [ "history=model.fit(x_train, y_train, epochs=50, batch_size=64, validation_data=(x_validation, y_validation), verbose=1)" ] }, { "cell_type": "code", "execution_count": 30, "id": "white-lotus", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "250/250 [==============================] - 2s 7ms/step - loss: 2.0713 - accuracy: 0.7135: 0s - loss: 2.0613 - accu\n", "accuracy: 71.350\n" ] } ], "source": [ "_, acc = model.evaluate(x_test, y_test)\n", "print('accuracy: %.3f' % (acc * 100.0))" ] }, { "cell_type": "code", "execution_count": 32, "id": "dynamic-hardwood", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.subplot(211)\n", "plt.title('Cross Entropy Loss')\n", "plt.plot(history.history['loss'], color='blue', label='train')\n", "plt.plot(history.history['val_loss'], color='orange', label='test')\n", "# plot accuracy\n", "plt.subplot(212)\n", "plt.title('Classification Accuracy')\n", "plt.plot(history.history['accuracy'], color='blue', label='train')\n", "plt.plot(history.history['val_accuracy'], color='orange', label='test')" ] }, { "cell_type": "code", "execution_count": null, "id": "corresponding-trail", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.9" } }, "nbformat": 4, "nbformat_minor": 5 }