{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-08-04T08:31:00.695291Z","iopub.execute_input":"2021-08-04T08:31:00.696188Z","iopub.status.idle":"2021-08-04T08:31:00.716627Z","shell.execute_reply.started":"2021-08-04T08:31:00.696028Z","shell.execute_reply":"2021-08-04T08:31:00.715060Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Import necessary libraries\n\nimport tensorflow as tf\nimport cv2 as cv\nimport matplotlib.pyplot as plt\nfrom tensorflow.keras import models, layers","metadata":{"execution":{"iopub.status.busy":"2021-08-04T08:31:00.718509Z","iopub.execute_input":"2021-08-04T08:31:00.718907Z","iopub.status.idle":"2021-08-04T08:31:08.202539Z","shell.execute_reply.started":"2021-08-04T08:31:00.718869Z","shell.execute_reply":"2021-08-04T08:31:08.201445Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Import train and test data from Data\n\ntrain_data = pd.read_csv('../input/digit-recognizer/train.csv')\ntest_data = pd.read_csv('../input/digit-recognizer/test.csv')","metadata":{"execution":{"iopub.status.busy":"2021-08-04T08:31:08.204461Z","iopub.execute_input":"2021-08-04T08:31:08.205233Z","iopub.status.idle":"2021-08-04T08:31:14.282119Z","shell.execute_reply.started":"2021-08-04T08:31:08.205174Z","shell.execute_reply":"2021-08-04T08:31:14.280860Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(\"Train data shape :\", train_data.shape, type(train_data))\ntrain_data.head()","metadata":{"execution":{"iopub.status.busy":"2021-08-04T08:31:14.284097Z","iopub.execute_input":"2021-08-04T08:31:14.284511Z","iopub.status.idle":"2021-08-04T08:31:14.324426Z","shell.execute_reply.started":"2021-08-04T08:31:14.284466Z","shell.execute_reply":"2021-08-04T08:31:14.323611Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(\"Test data shape :\", test_data.shape, type(test_data))\ntest_data.head()","metadata":{"execution":{"iopub.status.busy":"2021-08-04T08:31:14.325520Z","iopub.execute_input":"2021-08-04T08:31:14.326007Z","iopub.status.idle":"2021-08-04T08:31:14.349133Z","shell.execute_reply.started":"2021-08-04T08:31:14.325968Z","shell.execute_reply":"2021-08-04T08:31:14.347997Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_label = train_data.label.to_numpy()\ntrain_image = train_data.to_numpy()[:, 1:].reshape(42000, 28, 28, 1)\ntest_image = test_data.to_numpy().reshape(28000, 28, 28, 1)\n\ntrain_image = tf.keras.utils.normalize(train_image, axis=1)\ntest_image = tf.keras.utils.normalize(test_image, axis=1)\n\n\n\nprint(\"Train label shape :\", train_label.shape, type(train_label))\nprint(\"Train image shape :\", train_image.shape, type(train_image))\nprint(\"Test image shape :\", test_image.shape, type(test_image))\n\ndata_shape = train_image[0].shape\nprint(data_shape)","metadata":{"execution":{"iopub.status.busy":"2021-08-04T08:31:14.350617Z","iopub.execute_input":"2021-08-04T08:31:14.351122Z","iopub.status.idle":"2021-08-04T08:31:14.996266Z","shell.execute_reply.started":"2021-08-04T08:31:14.351075Z","shell.execute_reply":"2021-08-04T08:31:14.995231Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Draw plot for random sample of data\n\ndef plot_sample(image, label):    \n    plt.figure(figsize=(10,10))\n    rand_indicies = np.random.randint(len(image), size=25)\n    for i in range(25):\n        plt.subplot(5,5,i+1)\n        plt.xticks([])\n        plt.yticks([])\n        plt.grid(False)\n        idx = rand_indicies[i]\n        plt.imshow(np.squeeze(image[idx]), cmap=plt.cm.binary)\n        plt.xlabel(label[idx])\n    plt.show()","metadata":{"execution":{"iopub.status.busy":"2021-08-04T08:31:14.998341Z","iopub.execute_input":"2021-08-04T08:31:14.998647Z","iopub.status.idle":"2021-08-04T08:31:15.007017Z","shell.execute_reply.started":"2021-08-04T08:31:14.998615Z","shell.execute_reply":"2021-08-04T08:31:15.005667Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plot_sample(train_image, train_label)","metadata":{"execution":{"iopub.status.busy":"2021-08-04T08:31:15.009810Z","iopub.execute_input":"2021-08-04T08:31:15.010347Z","iopub.status.idle":"2021-08-04T08:31:16.404733Z","shell.execute_reply.started":"2021-08-04T08:31:15.010218Z","shell.execute_reply":"2021-08-04T08:31:16.403773Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Setup the model\n\nmodel = models.Sequential()\n\nmodel.add(layers.Conv2D(filters=32, kernel_size=(4, 4), strides=(1,1), padding = 'same', activation='relu', input_shape = data_shape))\nmodel.add(layers.BatchNormalization())\nmodel.add(layers.LeakyReLU(0.2))\n\nmodel.add(layers.Conv2D(filters=32, kernel_size=(4, 4), strides=(1,1), padding = 'same', activation='relu'))\nmodel.add(layers.BatchNormalization())\nmodel.add(layers.LeakyReLU(0.2))\n\nmodel.add(layers.MaxPooling2D((2, 2)))\nmodel.add(layers.Dropout(0.35))\n\nmodel.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'same', activation='relu'))\nmodel.add(layers.BatchNormalization())\nmodel.add(layers.LeakyReLU(0.2))\n\nmodel.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'same', activation='relu'))\nmodel.add(layers.BatchNormalization())\nmodel.add(layers.LeakyReLU(0.2))\n\nmodel.add(layers.MaxPooling2D((2, 2)))\nmodel.add(layers.Dropout(0.35))\n\nmodel.add(layers.Conv2D(filters=64, kernel_size=(2, 2), strides=(1,1), padding = 'same', activation='relu'))\nmodel.add(layers.BatchNormalization())\nmodel.add(layers.LeakyReLU(0.2))\n\nmodel.add(layers.Conv2D(filters=64, kernel_size=(2, 2), strides=(1,1), padding = 'same', activation='relu'))\nmodel.add(layers.BatchNormalization())\nmodel.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.MaxPooling2D((2, 2)))\nmodel.add(layers.Dropout(0.35))\n\nmodel.add(layers.Flatten())\n\nmodel.add(layers.Dense(units=256, activation='relu'))\nmodel.add(layers.BatchNormalization())\nmodel.add(layers.Dropout(0.35))\n\nmodel.add(layers.Dense(units=256, activation='relu'))\nmodel.add(layers.BatchNormalization())\nmodel.add(layers.Dropout(0.35))\n\nmodel.add(layers.Dense(units=10, activation='softmax'))\n\nmodel.summary()","metadata":{"execution":{"iopub.status.busy":"2021-08-04T08:31:16.406021Z","iopub.execute_input":"2021-08-04T08:31:16.406299Z","iopub.status.idle":"2021-08-04T08:31:16.796272Z","shell.execute_reply.started":"2021-08-04T08:31:16.406272Z","shell.execute_reply":"2021-08-04T08:31:16.792344Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Epoch 1/25\n# 263/263 [==============================] - 121s 453ms/step - loss: 1.2502 - accuracy: 0.6272 - val_loss: 12.2614 - val_accuracy: 0.1131\n# Epoch 2/25\n# 263/263 [==============================] - 118s 450ms/step - loss: 0.2068 - accuracy: 0.9366 - val_loss: 4.2091 - val_accuracy: 0.3155\n# Epoch 3/25\n# 263/263 [==============================] - 118s 450ms/step - loss: 0.1280 - accuracy: 0.9609 - val_loss: 0.0949 - val_accuracy: 0.9699\n# Epoch 4/25\n# 263/263 [==============================] - 118s 450ms/step - loss: 0.0995 - accuracy: 0.9688 - val_loss: 0.0542 - val_accuracy: 0.9831\n# Epoch 5/25\n# 263/263 [==============================] - 117s 446ms/step - loss: 0.0844 - accuracy: 0.9730 - val_loss: 0.0471 - val_accuracy: 0.9857\n# Epoch 6/25\n# 263/263 [==============================] - 117s 447ms/step - loss: 0.0644 - accuracy: 0.9806 - val_loss: 0.0461 - val_accuracy: 0.9856\n# Epoch 7/25\n# 263/263 [==============================] - 118s 449ms/step - loss: 0.0598 - accuracy: 0.9812 - val_loss: 0.0329 - val_accuracy: 0.9890\n# Epoch 8/25\n# 263/263 [==============================] - 118s 448ms/step - loss: 0.0579 - accuracy: 0.9823 - val_loss: 0.0327 - val_accuracy: 0.9896\n# Epoch 9/25\n# 263/263 [==============================] - 117s 443ms/step - loss: 0.0514 - accuracy: 0.9840 - val_loss: 0.0406 - val_accuracy: 0.9877\n# Epoch 10/25\n# 263/263 [==============================] - 117s 443ms/step - loss: 0.0470 - accuracy: 0.9856 - val_loss: 0.0364 - val_accuracy: 0.9886\n# Epoch 11/25\n# 263/263 [==============================] - 117s 444ms/step - loss: 0.0460 - accuracy: 0.9849 - val_loss: 0.0287 - val_accuracy: 0.9911\n# Epoch 12/25\n# 263/263 [==============================] - 116s 441ms/step - loss: 0.0379 - accuracy: 0.9875 - val_loss: 0.0301 - val_accuracy: 0.9911\n# Epoch 13/25\n# 263/263 [==============================] - 116s 440ms/step - loss: 0.0395 - accuracy: 0.9876 - val_loss: 0.0301 - val_accuracy: 0.9915\n# Epoch 14/25\n# 263/263 [==============================] - 116s 440ms/step - loss: 0.0415 - accuracy: 0.9868 - val_loss: 0.0301 - val_accuracy: 0.9912\n# Epoch 15/25\n# 263/263 [==============================] - 116s 441ms/step - loss: 0.0367 - accuracy: 0.9878 - val_loss: 0.0272 - val_accuracy: 0.9926\n# Epoch 16/25\n# 263/263 [==============================] - 116s 440ms/step - loss: 0.0349 - accuracy: 0.9899 - val_loss: 0.0313 - val_accuracy: 0.9914\n# Epoch 17/25\n# 263/263 [==============================] - 116s 440ms/step - loss: 0.0309 - accuracy: 0.9901 - val_loss: 0.0242 - val_accuracy: 0.9927\n# Epoch 18/25\n# 263/263 [==============================] - 116s 439ms/step - loss: 0.0321 - accuracy: 0.9903 - val_loss: 0.0268 - val_accuracy: 0.9926\n# Epoch 19/25\n# 263/263 [==============================] - 115s 439ms/step - loss: 0.0290 - accuracy: 0.9908 - val_loss: 0.0295 - val_accuracy: 0.9924\n# Epoch 20/25\n# 263/263 [==============================] - 115s 439ms/step - loss: 0.0281 - accuracy: 0.9909 - val_loss: 0.0310 - val_accuracy: 0.9926\n# Epoch 21/25\n# 263/263 [==============================] - 116s 440ms/step - loss: 0.0286 - accuracy: 0.9906 - val_loss: 0.0285 - val_accuracy: 0.9926\n# Epoch 22/25\n# 263/263 [==============================] - 116s 440ms/step - loss: 0.0314 - accuracy: 0.9896 - val_loss: 0.0313 - val_accuracy: 0.9915\n# Epoch 23/25\n# 263/263 [==============================] - 115s 437ms/step - loss: 0.0292 - accuracy: 0.9909 - val_loss: 0.0250 - val_accuracy: 0.9925\n# Epoch 24/25\n# 263/263 [==============================] - 115s 437ms/step - loss: 0.0282 - accuracy: 0.9905 - val_loss: 0.0295 - val_accuracy: 0.9911\n# Epoch 25/25\n# 263/263 [==============================] - 115s 439ms/step - loss: 0.0251 - accuracy: 0.9917 - val_loss: 0.0248 - val_accuracy: 0.9936\n\n# # Setup the model\n\n# model = models.Sequential()\n\n# model.add(layers.Conv2D(filters=32, kernel_size=(4, 4), strides=(1,1), padding = 'same', activation='relu', input_shape = data_shape))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.Conv2D(filters=32, kernel_size=(4, 4), strides=(1,1), padding = 'same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.MaxPooling2D((2, 2)))\n# model.add(layers.Dropout(0.4))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.MaxPooling2D((2, 2)))\n# model.add(layers.Dropout(0.4))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(2, 2), strides=(1,1), padding = 'same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(2, 2), strides=(1,1), padding = 'same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# # model.add(layers.MaxPooling2D((2, 2)))\n# model.add(layers.Dropout(0.4))\n\n# model.add(layers.Flatten())\n\n# model.add(layers.Dense(units=256, activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.Dropout(0.4))\n\n# model.add(layers.Dense(units=256, activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.Dropout(0.4))\n\n# model.add(layers.Dense(units=10, activation='softmax'))\n\n# model.summary()","metadata":{"execution":{"iopub.status.busy":"2021-08-04T08:31:16.797740Z","iopub.execute_input":"2021-08-04T08:31:16.798062Z","iopub.status.idle":"2021-08-04T08:31:16.804124Z","shell.execute_reply.started":"2021-08-04T08:31:16.798030Z","shell.execute_reply":"2021-08-04T08:31:16.803076Z"},"jupyter":{"source_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Epoch 1/25\n# 263/263 [==============================] - 135s 506ms/step - loss: 1.1122 - accuracy: 0.6738 - val_loss: 8.6003 - val_accuracy: 0.1131\n# Epoch 2/25\n# 263/263 [==============================] - 134s 509ms/step - loss: 0.1565 - accuracy: 0.9523 - val_loss: 1.7988 - val_accuracy: 0.4637\n# Epoch 3/25\n# 263/263 [==============================] - 133s 506ms/step - loss: 0.0964 - accuracy: 0.9705 - val_loss: 0.0463 - val_accuracy: 0.9854\n# Epoch 4/25\n# 263/263 [==============================] - 132s 504ms/step - loss: 0.0675 - accuracy: 0.9785 - val_loss: 0.0447 - val_accuracy: 0.9870\n# Epoch 5/25\n# 263/263 [==============================] - 131s 498ms/step - loss: 0.0586 - accuracy: 0.9825 - val_loss: 0.0380 - val_accuracy: 0.9888\n# Epoch 6/25\n# 263/263 [==============================] - 124s 470ms/step - loss: 0.0546 - accuracy: 0.9839 - val_loss: 0.0363 - val_accuracy: 0.9892\n# Epoch 7/25\n# 263/263 [==============================] - 123s 470ms/step - loss: 0.0470 - accuracy: 0.9865 - val_loss: 0.0519 - val_accuracy: 0.9851\n# Epoch 8/25\n# 263/263 [==============================] - 133s 504ms/step - loss: 0.0408 - accuracy: 0.9882 - val_loss: 0.0342 - val_accuracy: 0.9892\n# Epoch 9/25\n# 263/263 [==============================] - 132s 502ms/step - loss: 0.0382 - accuracy: 0.9893 - val_loss: 0.0283 - val_accuracy: 0.9919\n# Epoch 10/25\n# 263/263 [==============================] - 132s 502ms/step - loss: 0.0337 - accuracy: 0.9892 - val_loss: 0.0368 - val_accuracy: 0.9892\n# Epoch 11/25\n# 263/263 [==============================] - 133s 506ms/step - loss: 0.0318 - accuracy: 0.9904 - val_loss: 0.0425 - val_accuracy: 0.9870\n# Epoch 12/25\n# 263/263 [==============================] - 132s 501ms/step - loss: 0.0279 - accuracy: 0.9908 - val_loss: 0.0304 - val_accuracy: 0.9920\n# Epoch 13/25\n# 263/263 [==============================] - 133s 507ms/step - loss: 0.0257 - accuracy: 0.9919 - val_loss: 0.0352 - val_accuracy: 0.9911\n# Epoch 14/25\n# 263/263 [==============================] - 133s 504ms/step - loss: 0.0266 - accuracy: 0.9920 - val_loss: 0.0317 - val_accuracy: 0.9914\n# Epoch 15/25\n# 263/263 [==============================] - 133s 504ms/step - loss: 0.0230 - accuracy: 0.9927 - val_loss: 0.0330 - val_accuracy: 0.9924\n# Epoch 16/25\n# 263/263 [==============================] - 133s 504ms/step - loss: 0.0210 - accuracy: 0.9931 - val_loss: 0.0276 - val_accuracy: 0.9927\n# Epoch 17/25\n# 263/263 [==============================] - 133s 507ms/step - loss: 0.0208 - accuracy: 0.9935 - val_loss: 0.0309 - val_accuracy: 0.9926\n# Epoch 18/25\n# 263/263 [==============================] - 134s 510ms/step - loss: 0.0234 - accuracy: 0.9930 - val_loss: 0.0272 - val_accuracy: 0.9921\n# Epoch 19/25\n# 263/263 [==============================] - 134s 510ms/step - loss: 0.0209 - accuracy: 0.9939 - val_loss: 0.0350 - val_accuracy: 0.9911\n# Epoch 20/25\n# 263/263 [==============================] - 134s 510ms/step - loss: 0.0201 - accuracy: 0.9937 - val_loss: 0.0322 - val_accuracy: 0.9911\n# Epoch 21/25\n# 263/263 [==============================] - 134s 511ms/step - loss: 0.0207 - accuracy: 0.9935 - val_loss: 0.0283 - val_accuracy: 0.9930\n# Epoch 22/25\n# 263/263 [==============================] - 133s 504ms/step - loss: 0.0173 - accuracy: 0.9940 - val_loss: 0.0266 - val_accuracy: 0.9914\n# Epoch 23/25\n# 263/263 [==============================] - 132s 502ms/step - loss: 0.0149 - accuracy: 0.9951 - val_loss: 0.0333 - val_accuracy: 0.9925\n# Epoch 24/25\n# 263/263 [==============================] - 132s 502ms/step - loss: 0.0136 - accuracy: 0.9954 - val_loss: 0.0318 - val_accuracy: 0.9914\n# Epoch 25/25\n# 263/263 [==============================] - 131s 500ms/step - loss: 0.0160 - accuracy: 0.9950 - val_loss: 0.0338 - val_accuracy: 0.9923\n                \n# # Setup the model\n\n# model = models.Sequential()\n\n# model.add(layers.Conv2D(filters=32, kernel_size=(4, 4), strides=(1,1), padding = 'same', activation='relu', input_shape = data_shape))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.Conv2D(filters=32, kernel_size=(4, 4), strides=(1,1), padding = 'same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.MaxPooling2D((2, 2)))\n# model.add(layers.Dropout(0.2))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.MaxPooling2D((2, 2)))\n# model.add(layers.Dropout(0.2))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(2, 2), strides=(1,1), padding = 'same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(2, 2), strides=(1,1), padding = 'same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# # model.add(layers.MaxPooling2D((2, 2)))\n# model.add(layers.Dropout(0.2))\n\n# model.add(layers.Flatten())\n\n# model.add(layers.Dense(units=256, activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.Dropout(0.5))\n\n# model.add(layers.Dense(units=256, activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.Dropout(0.5))\n\n# model.add(layers.Dense(units=10, activation='softmax'))\n\n# model.summary()","metadata":{"execution":{"iopub.status.busy":"2021-08-04T08:31:16.805590Z","iopub.execute_input":"2021-08-04T08:31:16.805950Z","iopub.status.idle":"2021-08-04T08:31:16.823920Z","shell.execute_reply.started":"2021-08-04T08:31:16.805918Z","shell.execute_reply":"2021-08-04T08:31:16.822856Z"},"jupyter":{"source_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Epoch 1/25\n# 263/263 [==============================] - 115s 431ms/step - loss: 1.0437 - accuracy: 0.6779 - val_loss: 5.8771 - val_accuracy: 0.1131\n# Epoch 2/25\n# 263/263 [==============================] - 113s 428ms/step - loss: 0.1480 - accuracy: 0.9533 - val_loss: 1.5217 - val_accuracy: 0.4963\n# Epoch 3/25\n# 263/263 [==============================] - 113s 429ms/step - loss: 0.1031 - accuracy: 0.9683 - val_loss: 0.0577 - val_accuracy: 0.9818\n# Epoch 4/25\n# 263/263 [==============================] - 113s 431ms/step - loss: 0.0743 - accuracy: 0.9781 - val_loss: 0.0488 - val_accuracy: 0.9852\n# Epoch 5/25\n# 263/263 [==============================] - 114s 433ms/step - loss: 0.0618 - accuracy: 0.9802 - val_loss: 0.0374 - val_accuracy: 0.9882\n# Epoch 6/25\n# 263/263 [==============================] - 115s 438ms/step - loss: 0.0564 - accuracy: 0.9825 - val_loss: 0.0447 - val_accuracy: 0.9851\n# Epoch 7/25\n# 263/263 [==============================] - 114s 434ms/step - loss: 0.0469 - accuracy: 0.9849 - val_loss: 0.0319 - val_accuracy: 0.9893\n# Epoch 8/25\n# 263/263 [==============================] - 114s 435ms/step - loss: 0.0428 - accuracy: 0.9866 - val_loss: 0.0360 - val_accuracy: 0.9894\n# Epoch 9/25\n# 263/263 [==============================] - 115s 436ms/step - loss: 0.0404 - accuracy: 0.9874 - val_loss: 0.0434 - val_accuracy: 0.9871\n# Epoch 10/25\n# 263/263 [==============================] - 113s 428ms/step - loss: 0.0358 - accuracy: 0.9888 - val_loss: 0.0285 - val_accuracy: 0.9905\n# Epoch 11/25\n# 263/263 [==============================] - 113s 429ms/step - loss: 0.0313 - accuracy: 0.9888 - val_loss: 0.0280 - val_accuracy: 0.9915\n# Epoch 12/25\n# 263/263 [==============================] - 113s 430ms/step - loss: 0.0306 - accuracy: 0.9902 - val_loss: 0.0290 - val_accuracy: 0.9923\n# Epoch 13/25\n# 263/263 [==============================] - 113s 430ms/step - loss: 0.0284 - accuracy: 0.9911 - val_loss: 0.0272 - val_accuracy: 0.9915\n# Epoch 14/25\n# 263/263 [==============================] - 112s 427ms/step - loss: 0.0270 - accuracy: 0.9910 - val_loss: 0.0313 - val_accuracy: 0.9901\n# Epoch 15/25\n# 263/263 [==============================] - 112s 424ms/step - loss: 0.0265 - accuracy: 0.9909 - val_loss: 0.0318 - val_accuracy: 0.9917\n# Epoch 16/25\n# 263/263 [==============================] - 113s 428ms/step - loss: 0.0243 - accuracy: 0.9920 - val_loss: 0.0334 - val_accuracy: 0.9908\n# Epoch 17/25\n# 263/263 [==============================] - 113s 430ms/step - loss: 0.0258 - accuracy: 0.9914 - val_loss: 0.0366 - val_accuracy: 0.9896\n# Epoch 18/25\n# 263/263 [==============================] - 113s 431ms/step - loss: 0.0216 - accuracy: 0.9932 - val_loss: 0.0283 - val_accuracy: 0.9912\n# Epoch 19/25\n# 263/263 [==============================] - 114s 435ms/step - loss: 0.0235 - accuracy: 0.9929 - val_loss: 0.0316 - val_accuracy: 0.9908\n# Epoch 20/25\n# 263/263 [==============================] - 113s 431ms/step - loss: 0.0231 - accuracy: 0.9927 - val_loss: 0.0292 - val_accuracy: 0.9921\n# Epoch 21/25\n# 263/263 [==============================] - 114s 434ms/step - loss: 0.0207 - accuracy: 0.9934 - val_loss: 0.0280 - val_accuracy: 0.9918\n# Epoch 22/25\n# 263/263 [==============================] - 113s 429ms/step - loss: 0.0190 - accuracy: 0.9940 - val_loss: 0.0291 - val_accuracy: 0.9921\n# Epoch 23/25\n# 263/263 [==============================] - 114s 432ms/step - loss: 0.0183 - accuracy: 0.9944 - val_loss: 0.0320 - val_accuracy: 0.9900\n# Epoch 24/25\n# 263/263 [==============================] - 115s 436ms/step - loss: 0.0214 - accuracy: 0.9942 - val_loss: 0.0339 - val_accuracy: 0.9915\n# Epoch 25/25\n# 263/263 [==============================] - 115s 436ms/step - loss: 0.0201 - accuracy: 0.9938 - val_loss: 0.0247 - val_accuracy: 0.9942\n                \n\n                \n# # Setup the model\n\n# model = models.Sequential()\n\n# model.add(layers.Conv2D(filters=32, kernel_size=(4, 4), strides=(1,1), padding = 'same', activation='relu', input_shape = data_shape))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.Conv2D(filters=32, kernel_size=(4, 4), strides=(1,1), padding = 'same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.MaxPooling2D((2, 2)))\n# model.add(layers.Dropout(0.35))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.MaxPooling2D((2, 2)))\n# model.add(layers.Dropout(0.35))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(2, 2), strides=(1,1), padding = 'same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(2, 2), strides=(1,1), padding = 'same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# # model.add(layers.MaxPooling2D((2, 2)))\n# model.add(layers.Dropout(0.35))\n\n# model.add(layers.Flatten())\n\n# model.add(layers.Dense(units=256, activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Dense(units=256, activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Dense(units=10, activation='softmax'))\n\n# model.summary()","metadata":{"execution":{"iopub.status.busy":"2021-08-04T08:31:16.825391Z","iopub.execute_input":"2021-08-04T08:31:16.825736Z","iopub.status.idle":"2021-08-04T08:31:16.840905Z","shell.execute_reply.started":"2021-08-04T08:31:16.825667Z","shell.execute_reply":"2021-08-04T08:31:16.839787Z"},"jupyter":{"source_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Epoch 1/25\n# 263/263 [==============================] - 170s 640ms/step - loss: 1.0779 - accuracy: 0.6665 - val_loss: 6.3716 - val_accuracy: 0.1131\n# Epoch 2/25\n# 263/263 [==============================] - 167s 636ms/step - loss: 0.1326 - accuracy: 0.9563 - val_loss: 2.2029 - val_accuracy: 0.3413\n# Epoch 3/25\n# 263/263 [==============================] - 165s 627ms/step - loss: 0.0822 - accuracy: 0.9756 - val_loss: 0.0703 - val_accuracy: 0.9763\n# Epoch 4/25\n# 263/263 [==============================] - 165s 627ms/step - loss: 0.0645 - accuracy: 0.9797 - val_loss: 0.0499 - val_accuracy: 0.9842\n# Epoch 5/25\n# 263/263 [==============================] - 166s 632ms/step - loss: 0.0495 - accuracy: 0.9842 - val_loss: 0.0553 - val_accuracy: 0.9845\n# Epoch 6/25\n# 263/263 [==============================] - 165s 628ms/step - loss: 0.0460 - accuracy: 0.9859 - val_loss: 0.0385 - val_accuracy: 0.9887\n# Epoch 7/25\n# 263/263 [==============================] - 165s 628ms/step - loss: 0.0421 - accuracy: 0.9858 - val_loss: 0.0781 - val_accuracy: 0.9740\n# Epoch 8/25\n# 263/263 [==============================] - 165s 627ms/step - loss: 0.0405 - accuracy: 0.9869 - val_loss: 0.0255 - val_accuracy: 0.9918\n# Epoch 9/25\n# 263/263 [==============================] - 165s 627ms/step - loss: 0.0337 - accuracy: 0.9902 - val_loss: 0.0314 - val_accuracy: 0.9908\n# Epoch 10/25\n# 263/263 [==============================] - 165s 625ms/step - loss: 0.0324 - accuracy: 0.9902 - val_loss: 0.0388 - val_accuracy: 0.9899\n# Epoch 11/25\n# 263/263 [==============================] - 166s 631ms/step - loss: 0.0275 - accuracy: 0.9911 - val_loss: 0.0349 - val_accuracy: 0.9899\n# Epoch 12/25\n# 263/263 [==============================] - 167s 636ms/step - loss: 0.0256 - accuracy: 0.9917 - val_loss: 0.0283 - val_accuracy: 0.9924\n# Epoch 13/25\n# 263/263 [==============================] - 167s 636ms/step - loss: 0.0235 - accuracy: 0.9927 - val_loss: 0.0292 - val_accuracy: 0.9926\n# Epoch 14/25\n# 263/263 [==============================] - 166s 633ms/step - loss: 0.0296 - accuracy: 0.9901 - val_loss: 0.0309 - val_accuracy: 0.9908\n# Epoch 15/25\n# 263/263 [==============================] - 165s 629ms/step - loss: 0.0239 - accuracy: 0.9922 - val_loss: 0.0607 - val_accuracy: 0.9860\n# Epoch 16/25\n# 263/263 [==============================] - 165s 627ms/step - loss: 0.0236 - accuracy: 0.9920 - val_loss: 0.0322 - val_accuracy: 0.9907\n# Epoch 17/25\n# 263/263 [==============================] - 167s 634ms/step - loss: 0.0217 - accuracy: 0.9938 - val_loss: 0.0346 - val_accuracy: 0.9910\n# Epoch 18/25\n# 263/263 [==============================] - 165s 627ms/step - loss: 0.0197 - accuracy: 0.9930 - val_loss: 0.0396 - val_accuracy: 0.9896\n# Epoch 19/25\n# 263/263 [==============================] - 165s 627ms/step - loss: 0.0174 - accuracy: 0.9945 - val_loss: 0.0353 - val_accuracy: 0.9910\n# Epoch 20/25\n# 263/263 [==============================] - 165s 627ms/step - loss: 0.0193 - accuracy: 0.9937 - val_loss: 0.0326 - val_accuracy: 0.9921\n# Epoch 21/25\n# 263/263 [==============================] - 165s 628ms/step - loss: 0.0156 - accuracy: 0.9954 - val_loss: 0.0291 - val_accuracy: 0.9927\n# Epoch 22/25\n# 263/263 [==============================] - 166s 633ms/step - loss: 0.0171 - accuracy: 0.9945 - val_loss: 0.0362 - val_accuracy: 0.9913\n# Epoch 23/25\n# 263/263 [==============================] - 166s 630ms/step - loss: 0.0137 - accuracy: 0.9955 - val_loss: 0.0254 - val_accuracy: 0.9933\n# Epoch 24/25\n# 263/263 [==============================] - 167s 633ms/step - loss: 0.0156 - accuracy: 0.9954 - val_loss: 0.0305 - val_accuracy: 0.9924\n# Epoch 25/25\n# 263/263 [==============================] - 165s 627ms/step - loss: 0.0123 - accuracy: 0.9960 - val_loss: 0.0294 - val_accuracy: 0.9915\n\n# Model: \"sequential_2\"\n# _________________________________________________________________\n# Layer (type)                 Output Shape              Param #   \n# =================================================================\n# conv2d_11 (Conv2D)           (None, 28, 28, 32)        832       \n# _________________________________________________________________\n# batch_normalization_14 (Batc (None, 28, 28, 32)        128       \n# _________________________________________________________________\n# leaky_re_lu_6 (LeakyReLU)    (None, 28, 28, 32)        0         \n# _________________________________________________________________\n# conv2d_12 (Conv2D)           (None, 28, 28, 32)        25632     \n# _________________________________________________________________\n# batch_normalization_15 (Batc (None, 28, 28, 32)        128       \n# _________________________________________________________________\n# leaky_re_lu_7 (LeakyReLU)    (None, 28, 28, 32)        0         \n# _________________________________________________________________\n# max_pooling2d_6 (MaxPooling2 (None, 14, 14, 32)        0         \n# _________________________________________________________________\n# dropout_9 (Dropout)          (None, 14, 14, 32)        0         \n# _________________________________________________________________\n# conv2d_13 (Conv2D)           (None, 14, 14, 64)        18496     \n# _________________________________________________________________\n# batch_normalization_16 (Batc (None, 14, 14, 64)        256       \n# _________________________________________________________________\n# leaky_re_lu_8 (LeakyReLU)    (None, 14, 14, 64)        0         \n# _________________________________________________________________\n# conv2d_14 (Conv2D)           (None, 14, 14, 64)        36928     \n# _________________________________________________________________\n# batch_normalization_17 (Batc (None, 14, 14, 64)        256       \n# _________________________________________________________________\n# leaky_re_lu_9 (LeakyReLU)    (None, 14, 14, 64)        0         \n# _________________________________________________________________\n# max_pooling2d_7 (MaxPooling2 (None, 7, 7, 64)          0         \n# _________________________________________________________________\n# dropout_10 (Dropout)         (None, 7, 7, 64)          0         \n# _________________________________________________________________\n# conv2d_15 (Conv2D)           (None, 7, 7, 64)          36928     \n# _________________________________________________________________\n# batch_normalization_18 (Batc (None, 7, 7, 64)          256       \n# _________________________________________________________________\n# leaky_re_lu_10 (LeakyReLU)   (None, 7, 7, 64)          0         \n# _________________________________________________________________\n# conv2d_16 (Conv2D)           (None, 7, 7, 64)          36928     \n# _________________________________________________________________\n# batch_normalization_19 (Batc (None, 7, 7, 64)          256       \n# _________________________________________________________________\n# leaky_re_lu_11 (LeakyReLU)   (None, 7, 7, 64)          0         \n# _________________________________________________________________\n# max_pooling2d_8 (MaxPooling2 (None, 3, 3, 64)          0         \n# _________________________________________________________________\n# dropout_11 (Dropout)         (None, 3, 3, 64)          0         \n# _________________________________________________________________\n# flatten_2 (Flatten)          (None, 576)               0         \n# _________________________________________________________________\n# dense_5 (Dense)              (None, 256)               147712    \n# _________________________________________________________________\n# batch_normalization_20 (Batc (None, 256)               1024      \n# _________________________________________________________________\n# dropout_12 (Dropout)         (None, 256)               0         \n# _________________________________________________________________\n# dense_6 (Dense)              (None, 128)               32896     \n# _________________________________________________________________\n# batch_normalization_21 (Batc (None, 128)               512       \n# _________________________________________________________________\n# dropout_13 (Dropout)         (None, 128)               0         \n# _________________________________________________________________\n# dense_7 (Dense)              (None, 10)                1290      \n# =================================================================\n# Total params: 340,458\n# Trainable params: 339,050\n# Non-trainable params: 1,408\n# _________________________________________________________________\n\n# # Setup the model\n\n# model = models.Sequential()\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(5, 5), strides=(1,1), padding = 'same', activation='relu', input_shape = data_shape))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(5, 5), strides=(1,1), padding = 'same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.MaxPooling2D((2, 2)))\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.MaxPooling2D((2, 2)))\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.MaxPooling2D((2, 2)))\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Flatten())\n\n# model.add(layers.Dense(units=256, activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Dense(units=128, activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Dense(units=10, activation='softmax'))\n\n# model.summary()","metadata":{"execution":{"iopub.status.busy":"2021-08-04T08:31:16.842592Z","iopub.execute_input":"2021-08-04T08:31:16.842967Z","iopub.status.idle":"2021-08-04T08:31:16.858260Z","shell.execute_reply.started":"2021-08-04T08:31:16.842924Z","shell.execute_reply":"2021-08-04T08:31:16.857029Z"},"jupyter":{"source_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Model: \"sequential_134\"\n# _________________________________________________________________\n# Layer (type)                 Output Shape              Param #   \n# =================================================================\n# conv2d_635 (Conv2D)          (None, 28, 28, 32)        320       \n# _________________________________________________________________\n# batch_normalization_520 (Bat (None, 28, 28, 32)        128       \n# _________________________________________________________________\n# leaky_re_lu_64 (LeakyReLU)   (None, 28, 28, 32)        0         \n# _________________________________________________________________\n# conv2d_636 (Conv2D)          (None, 28, 28, 32)        9248      \n# _________________________________________________________________\n# batch_normalization_521 (Bat (None, 28, 28, 32)        128       \n# _________________________________________________________________\n# leaky_re_lu_65 (LeakyReLU)   (None, 28, 28, 32)        0         \n# _________________________________________________________________\n# max_pooling2d_283 (MaxPoolin (None, 14, 14, 32)        0         \n# _________________________________________________________________\n# dropout_454 (Dropout)        (None, 14, 14, 32)        0         \n# _________________________________________________________________\n# conv2d_637 (Conv2D)          (None, 14, 14, 64)        18496     \n# _________________________________________________________________\n# batch_normalization_522 (Bat (None, 14, 14, 64)        256       \n# _________________________________________________________________\n# leaky_re_lu_66 (LeakyReLU)   (None, 14, 14, 64)        0         \n# _________________________________________________________________\n# conv2d_638 (Conv2D)          (None, 14, 14, 64)        36928     \n# _________________________________________________________________\n# batch_normalization_523 (Bat (None, 14, 14, 64)        256       \n# _________________________________________________________________\n# leaky_re_lu_67 (LeakyReLU)   (None, 14, 14, 64)        0         \n# _________________________________________________________________\n# max_pooling2d_284 (MaxPoolin (None, 7, 7, 64)          0         \n# _________________________________________________________________\n# dropout_455 (Dropout)        (None, 7, 7, 64)          0         \n# _________________________________________________________________\n# conv2d_639 (Conv2D)          (None, 7, 7, 64)          36928     \n# _________________________________________________________________\n# batch_normalization_524 (Bat (None, 7, 7, 64)          256       \n# _________________________________________________________________\n# leaky_re_lu_68 (LeakyReLU)   (None, 7, 7, 64)          0         \n# _________________________________________________________________\n# conv2d_640 (Conv2D)          (None, 7, 7, 64)          36928     \n# _________________________________________________________________\n# batch_normalization_525 (Bat (None, 7, 7, 64)          256       \n# _________________________________________________________________\n# leaky_re_lu_69 (LeakyReLU)   (None, 7, 7, 64)          0         \n# _________________________________________________________________\n# max_pooling2d_285 (MaxPoolin (None, 3, 3, 64)          0         \n# _________________________________________________________________\n# dropout_456 (Dropout)        (None, 3, 3, 64)          0         \n# _________________________________________________________________\n# flatten_133 (Flatten)        (None, 576)               0         \n# _________________________________________________________________\n# dense_272 (Dense)            (None, 256)               147712    \n# _________________________________________________________________\n# dropout_457 (Dropout)        (None, 256)               0         \n# _________________________________________________________________\n# dense_273 (Dense)            (None, 128)               32896     \n# _________________________________________________________________\n# dropout_458 (Dropout)        (None, 128)               0         \n# _________________________________________________________________\n# dense_274 (Dense)            (None, 10)                1290      \n# =================================================================\n# Total params: 322,026\n# Trainable params: 321,386\n# Non-trainable params: 640\n# _________________________________________________________________\n                   \n\n# # Setup the model\n\n# model = models.Sequential()\n\n# model.add(layers.Conv2D(filters=32, kernel_size=(3, 3), strides=(1,1), padding = 'Same', activation='relu', input_shape = data_shape))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.Conv2D(filters=32, kernel_size=(3, 3), strides=(1,1), padding = 'Same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.MaxPooling2D((2, 2)))\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'Same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'Same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.MaxPooling2D((2, 2)))\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'Same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'Same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.MaxPooling2D((2, 2)))\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Flatten())\n\n# model.add(layers.Dense(units=256, activation='relu'))\n# # model.add(layers.BatchNormalization())\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Dense(units=128, activation='relu'))\n# # model.add(layers.BatchNormalization())\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Dense(units=10, activation='softmax'))\n\n# model.summary()","metadata":{"execution":{"iopub.status.busy":"2021-08-04T08:31:16.859924Z","iopub.execute_input":"2021-08-04T08:31:16.860277Z","iopub.status.idle":"2021-08-04T08:31:16.875270Z","shell.execute_reply.started":"2021-08-04T08:31:16.860245Z","shell.execute_reply":"2021-08-04T08:31:16.874109Z"},"jupyter":{"source_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Model: \"sequential_131\"\n# _________________________________________________________________\n# Layer (type)                 Output Shape              Param #   \n# =================================================================\n# conv2d_617 (Conv2D)          (None, 28, 28, 32)        320       \n# _________________________________________________________________\n# conv2d_618 (Conv2D)          (None, 28, 28, 32)        9248      \n# _________________________________________________________________\n# max_pooling2d_274 (MaxPoolin (None, 14, 14, 32)        0         \n# _________________________________________________________________\n# conv2d_619 (Conv2D)          (None, 14, 14, 64)        18496     \n# _________________________________________________________________\n# conv2d_620 (Conv2D)          (None, 14, 14, 64)        36928     \n# _________________________________________________________________\n# max_pooling2d_275 (MaxPoolin (None, 7, 7, 64)          0         \n# _________________________________________________________________\n# conv2d_621 (Conv2D)          (None, 7, 7, 64)          36928     \n# _________________________________________________________________\n# conv2d_622 (Conv2D)          (None, 7, 7, 64)          36928     \n# _________________________________________________________________\n# max_pooling2d_276 (MaxPoolin (None, 3, 3, 64)          0         \n# _________________________________________________________________\n# flatten_130 (Flatten)        (None, 576)               0         \n# _________________________________________________________________\n# dense_263 (Dense)            (None, 256)               147712    \n# _________________________________________________________________\n# dropout_442 (Dropout)        (None, 256)               0         \n# _________________________________________________________________\n# dense_264 (Dense)            (None, 256)               65792     \n# _________________________________________________________________\n# dropout_443 (Dropout)        (None, 256)               0         \n# _________________________________________________________________\n# dense_265 (Dense)            (None, 10)                2570      \n# =================================================================\n# Total params: 354,922\n# Trainable params: 354,922\n# Non-trainable params: 0\n# _________________________________________________________________\n\n# Epoch 1/25\n# 263/263 [==============================] - 78s 293ms/step - loss: 0.8381 - accuracy: 0.7114 - val_loss: 0.0915 - val_accuracy: 0.9701\n# Epoch 2/25\n# 263/263 [==============================] - 77s 292ms/step - loss: 0.0971 - accuracy: 0.9705 - val_loss: 0.0550 - val_accuracy: 0.9831\n# Epoch 3/25\n# 263/263 [==============================] - 76s 290ms/step - loss: 0.0615 - accuracy: 0.9805 - val_loss: 0.0527 - val_accuracy: 0.9843\n# Epoch 4/25\n# 263/263 [==============================] - 77s 292ms/step - loss: 0.0411 - accuracy: 0.9871 - val_loss: 0.0473 - val_accuracy: 0.9871\n# Epoch 5/25\n# 263/263 [==============================] - 76s 289ms/step - loss: 0.0356 - accuracy: 0.9891 - val_loss: 0.0511 - val_accuracy: 0.9863\n# Epoch 6/25\n# 263/263 [==============================] - 76s 290ms/step - loss: 0.0296 - accuracy: 0.9908 - val_loss: 0.0436 - val_accuracy: 0.9867\n# Epoch 7/25\n# 263/263 [==============================] - 77s 291ms/step - loss: 0.0220 - accuracy: 0.9929 - val_loss: 0.0401 - val_accuracy: 0.9880\n# Epoch 8/25\n# 263/263 [==============================] - 76s 290ms/step - loss: 0.0227 - accuracy: 0.9930 - val_loss: 0.0448 - val_accuracy: 0.9883\n# Epoch 9/25\n# 263/263 [==============================] - 77s 292ms/step - loss: 0.0163 - accuracy: 0.9946 - val_loss: 0.0497 - val_accuracy: 0.9863\n# Epoch 10/25\n# 263/263 [==============================] - 77s 291ms/step - loss: 0.0153 - accuracy: 0.9952 - val_loss: 0.0391 - val_accuracy: 0.9904\n# Epoch 11/25\n# 263/263 [==============================] - 78s 295ms/step - loss: 0.0147 - accuracy: 0.9955 - val_loss: 0.0359 - val_accuracy: 0.9911\n# Epoch 12/25\n# 263/263 [==============================] - 76s 291ms/step - loss: 0.0138 - accuracy: 0.9955 - val_loss: 0.0575 - val_accuracy: 0.9856\n# Epoch 13/25\n# 263/263 [==============================] - 76s 288ms/step - loss: 0.0143 - accuracy: 0.9957 - val_loss: 0.0364 - val_accuracy: 0.9905\n# Epoch 14/25\n# 263/263 [==============================] - 76s 290ms/step - loss: 0.0117 - accuracy: 0.9960 - val_loss: 0.0390 - val_accuracy: 0.9904\n# Epoch 15/25\n# 263/263 [==============================] - 76s 288ms/step - loss: 0.0141 - accuracy: 0.9957 - val_loss: 0.0458 - val_accuracy: 0.9879\n# Epoch 16/25\n# 263/263 [==============================] - 76s 289ms/step - loss: 0.0109 - accuracy: 0.9965 - val_loss: 0.0430 - val_accuracy: 0.9895\n# Epoch 17/25\n# 263/263 [==============================] - 76s 290ms/step - loss: 0.0104 - accuracy: 0.9966 - val_loss: 0.0447 - val_accuracy: 0.9906\n# Epoch 18/25\n# 263/263 [==============================] - 77s 292ms/step - loss: 0.0104 - accuracy: 0.9967 - val_loss: 0.0423 - val_accuracy: 0.9901\n# Epoch 19/25\n# 263/263 [==============================] - 76s 290ms/step - loss: 0.0064 - accuracy: 0.9981 - val_loss: 0.0399 - val_accuracy: 0.9902\n# Epoch 20/25\n# 263/263 [==============================] - 76s 289ms/step - loss: 0.0083 - accuracy: 0.9976 - val_loss: 0.0490 - val_accuracy: 0.9901\n# Epoch 21/25\n# 263/263 [==============================] - 76s 290ms/step - loss: 0.0097 - accuracy: 0.9965 - val_loss: 0.0484 - val_accuracy: 0.9895\n# Epoch 22/25\n# 263/263 [==============================] - 76s 289ms/step - loss: 0.0068 - accuracy: 0.9978 - val_loss: 0.0411 - val_accuracy: 0.9913\n# Epoch 23/25\n# 263/263 [==============================] - 76s 290ms/step - loss: 0.0097 - accuracy: 0.9969 - val_loss: 0.0460 - val_accuracy: 0.9892\n# Epoch 24/25\n# 263/263 [==============================] - 77s 291ms/step - loss: 0.0074 - accuracy: 0.9982 - val_loss: 0.0502 - val_accuracy: 0.9892\n# Epoch 25/25\n# 263/263 [==============================] - 78s 299ms/step - loss: 0.0095 - accuracy: 0.9971 - val_loss: 0.0451 - val_accuracy: 0.9924\n\n# # Setup the model\n\n# model = models.Sequential()\n\n# model.add(layers.Conv2D(filters=32, kernel_size=(3, 3), strides=(1,1), padding = 'Same', activation='relu', input_shape = data_shape))\n# # model.add(layers.BatchNormalization())\n# # model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.Conv2D(filters=32, kernel_size=(3, 3), strides=(1,1), padding = 'Same', activation='relu'))\n# # model.add(layers.BatchNormalization())\n# # model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.MaxPooling2D((2, 2)))\n# # model.add(layers.Dropout(0.25))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'Same', activation='relu'))\n# # model.add(layers.BatchNormalization())\n# # model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'Same', activation='relu'))\n# # model.add(layers.BatchNormalization())\n# # model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.MaxPooling2D((2, 2)))\n# # model.add(layers.Dropout(0.25))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'Same', activation='relu'))\n# # model.add(layers.BatchNormalization())\n# # model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'Same', activation='relu'))\n# # model.add(layers.BatchNormalization())\n# # model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.MaxPooling2D((2, 2)))\n# # model.add(layers.Dropout(0.25))\n\n# model.add(layers.Flatten())\n\n# model.add(layers.Dense(units=256, activation='relu'))\n# # model.add(layers.BatchNormalization())\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Dense(units=128, activation='relu'))\n# # model.add(layers.BatchNormalization())\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Dense(units=10, activation='softmax'))\n\n# model.summary()","metadata":{"execution":{"iopub.status.busy":"2021-08-04T08:31:16.877212Z","iopub.execute_input":"2021-08-04T08:31:16.877901Z","iopub.status.idle":"2021-08-04T08:31:16.895474Z","shell.execute_reply.started":"2021-08-04T08:31:16.877856Z","shell.execute_reply":"2021-08-04T08:31:16.894362Z"},"jupyter":{"source_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Epoch 1/25\n# 263/263 [==============================] - 76s 284ms/step - loss: 0.6234 - accuracy: 0.8074 - val_loss: 4.9772 - val_accuracy: 0.1131\n# Epoch 2/25\n# 263/263 [==============================] - 74s 280ms/step - loss: 0.0969 - accuracy: 0.9691 - val_loss: 0.3134 - val_accuracy: 0.8917\n# Epoch 3/25\n# 263/263 [==============================] - 74s 280ms/step - loss: 0.0655 - accuracy: 0.9782 - val_loss: 0.0393 - val_accuracy: 0.9871\n# Epoch 4/25\n# 263/263 [==============================] - 74s 281ms/step - loss: 0.0485 - accuracy: 0.9841 - val_loss: 0.0386 - val_accuracy: 0.9887\n# Epoch 5/25\n# 263/263 [==============================] - 73s 279ms/step - loss: 0.0420 - accuracy: 0.9856 - val_loss: 0.0339 - val_accuracy: 0.9899\n# Epoch 6/25\n# 263/263 [==============================] - 73s 279ms/step - loss: 0.0377 - accuracy: 0.9873 - val_loss: 0.0388 - val_accuracy: 0.9874\n# Epoch 7/25\n# 263/263 [==============================] - 74s 281ms/step - loss: 0.0328 - accuracy: 0.9885 - val_loss: 0.0364 - val_accuracy: 0.9896\n# Epoch 8/25\n# 263/263 [==============================] - 73s 279ms/step - loss: 0.0297 - accuracy: 0.9903 - val_loss: 0.0335 - val_accuracy: 0.9893\n# Epoch 9/25\n# 263/263 [==============================] - 73s 279ms/step - loss: 0.0271 - accuracy: 0.9908 - val_loss: 0.0364 - val_accuracy: 0.9900\n# Epoch 10/25\n# 263/263 [==============================] - 74s 280ms/step - loss: 0.0241 - accuracy: 0.9917 - val_loss: 0.0315 - val_accuracy: 0.9908\n# Epoch 11/25\n# 263/263 [==============================] - 74s 280ms/step - loss: 0.0232 - accuracy: 0.9922 - val_loss: 0.0326 - val_accuracy: 0.9911\n# Epoch 12/25\n# 263/263 [==============================] - 74s 280ms/step - loss: 0.0221 - accuracy: 0.9930 - val_loss: 0.0369 - val_accuracy: 0.9887\n# Epoch 13/25\n# 263/263 [==============================] - 74s 282ms/step - loss: 0.0214 - accuracy: 0.9930 - val_loss: 0.0342 - val_accuracy: 0.9900\n# Epoch 14/25\n# 263/263 [==============================] - 74s 283ms/step - loss: 0.0194 - accuracy: 0.9941 - val_loss: 0.0316 - val_accuracy: 0.9918\n# Epoch 15/25\n# 263/263 [==============================] - 76s 289ms/step - loss: 0.0158 - accuracy: 0.9950 - val_loss: 0.0338 - val_accuracy: 0.9918\n# Epoch 16/25\n# 263/263 [==============================] - 76s 290ms/step - loss: 0.0161 - accuracy: 0.9948 - val_loss: 0.0319 - val_accuracy: 0.9920\n# Epoch 17/25\n# 263/263 [==============================] - 75s 286ms/step - loss: 0.0156 - accuracy: 0.9950 - val_loss: 0.0296 - val_accuracy: 0.9926\n# Epoch 18/25\n# 263/263 [==============================] - 73s 279ms/step - loss: 0.0176 - accuracy: 0.9943 - val_loss: 0.0308 - val_accuracy: 0.9920\n# Epoch 19/25\n# 263/263 [==============================] - 74s 281ms/step - loss: 0.0141 - accuracy: 0.9955 - val_loss: 0.0270 - val_accuracy: 0.9926\n# Epoch 20/25\n# 263/263 [==============================] - 74s 282ms/step - loss: 0.0168 - accuracy: 0.9946 - val_loss: 0.0275 - val_accuracy: 0.9931\n# Epoch 21/25\n# 263/263 [==============================] - 74s 280ms/step - loss: 0.0131 - accuracy: 0.9955 - val_loss: 0.0277 - val_accuracy: 0.9921\n# Epoch 22/25\n# 263/263 [==============================] - 74s 280ms/step - loss: 0.0109 - accuracy: 0.9962 - val_loss: 0.0288 - val_accuracy: 0.9926\n# Epoch 23/25\n# 263/263 [==============================] - 74s 280ms/step - loss: 0.0128 - accuracy: 0.9960 - val_loss: 0.0268 - val_accuracy: 0.9932\n# Epoch 24/25\n# 263/263 [==============================] - 74s 282ms/step - loss: 0.0111 - accuracy: 0.9962 - val_loss: 0.0349 - val_accuracy: 0.9915\n# Epoch 25/25\n# 263/263 [==============================] - 74s 280ms/step - loss: 0.0122 - accuracy: 0.9961 - val_loss: 0.0275 - val_accuracy: 0.9932\n\n# # Setup the model\n\n# model = models.Sequential()\n\n# model.add(layers.Conv2D(filters=16, kernel_size=(4, 4), strides=(1,1), padding = 'Same', activation='relu', input_shape = data_shape))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.Conv2D(filters=16, kernel_size=(4, 4), strides=(1,1), padding = 'Same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.MaxPooling2D((2, 2)))\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'Same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'Same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n\n# model.add(layers.MaxPooling2D((2, 2)))\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(2, 2), strides=(1,1), padding = 'Same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Flatten())\n\n# model.add(layers.Dense(units=256, activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Dense(units=10, activation='softmax'))\n\n# model.summary()","metadata":{"execution":{"iopub.status.busy":"2021-08-04T08:31:16.897216Z","iopub.execute_input":"2021-08-04T08:31:16.897909Z","iopub.status.idle":"2021-08-04T08:31:16.915475Z","shell.execute_reply.started":"2021-08-04T08:31:16.897863Z","shell.execute_reply":"2021-08-04T08:31:16.914131Z"},"jupyter":{"source_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# # Setup the model\n\n# model = models.Sequential()\n\n# model.add(layers.Conv2D(filters=32, kernel_size=(4, 4), strides=(1,1), padding = 'Same', activation='relu', input_shape = data_shape))\n# model.add(layers.BatchNormalization())\n\n# model.add(layers.Conv2D(filters=32, kernel_size=(4, 4), strides=(1,1), padding = 'Same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.MaxPooling2D((2, 2)))\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'Same', activation='relu'))\n# model.add(layers.BatchNormalization())\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'Same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.MaxPooling2D((2, 2)))\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Conv2D(filters=64, kernel_size=(2, 2), strides=(1,1), padding = 'Same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Flatten())\n\n# model.add(layers.Dense(units=256, activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Dense(units=10, activation='softmax'))\n\n# model.summary()","metadata":{"execution":{"iopub.status.busy":"2021-08-04T08:31:16.917171Z","iopub.execute_input":"2021-08-04T08:31:16.917645Z","iopub.status.idle":"2021-08-04T08:31:16.935140Z","shell.execute_reply.started":"2021-08-04T08:31:16.917601Z","shell.execute_reply":"2021-08-04T08:31:16.933867Z"},"jupyter":{"source_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# # Setup the model\n\n# model = models.Sequential()\n\n# #Input layer\n# model.add(layers.Conv2D(filters=32, kernel_size=(4, 4), strides=(1,1), padding = 'Same', activation='relu', input_shape = data_shape))\n\n# #1st layer CNN\n# model.add(layers.Conv2D(filters=32, kernel_size=(4, 4), strides=(1,1), padding = 'Same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n# model.add(layers.Dropout(0.25))\n# model.add(layers.MaxPooling2D((2, 2)))\n\n# #2nd layer CNN\n# model.add(layers.Conv2D(filters=32, kernel_size=(4, 4), strides=(1,1), padding = 'Same', activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.MaxPooling2D((2, 2)))\n\n\n# # #3rd layer CNN\n# # model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), strides=(1,1), padding = 'Same', activation='relu'))\n# # model.add(layers.BatchNormalization())\n# model.add(layers.LeakyReLU(0.2))\n# # model.add(layers.Dropout(0.25))\n\n# # #4th layer CNN\n# # model.add(layers.Conv2D(filters=64, kernel_size=(2, 2), strides=(1,1), padding = 'Same', activation='relu'))\n# # model.add(layers.BatchNormalization())\n# # model.add(layers.LeakyReLU(0.2))\n# # model.add(layers.Dropout(0.25))\n\n\n# model.add(layers.Flatten())\n\n\n# #DNN layer\n# model.add(layers.Dense(units=256, activation='relu'))\n# model.add(layers.BatchNormalization())\n# model.add(layers.Dropout(0.25))\n\n# model.add(layers.Dense(units=10, activation='softmax'))\n\n# model.summary()","metadata":{"execution":{"iopub.status.busy":"2021-08-04T08:31:16.936397Z","iopub.execute_input":"2021-08-04T08:31:16.937002Z","iopub.status.idle":"2021-08-04T08:31:16.956636Z","shell.execute_reply.started":"2021-08-04T08:31:16.936965Z","shell.execute_reply":"2021-08-04T08:31:16.955654Z"},"jupyter":{"source_hidden":true},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# print out model look\ntf.keras.utils.plot_model(\n    model, to_file='model.png', show_shapes=True, show_dtype=False,\n    show_layer_names=True, rankdir='TB', expand_nested=False, dpi=96\n)","metadata":{"execution":{"iopub.status.busy":"2021-08-04T08:31:16.960670Z","iopub.execute_input":"2021-08-04T08:31:16.961196Z","iopub.status.idle":"2021-08-04T08:31:17.732553Z","shell.execute_reply.started":"2021-08-04T08:31:16.961150Z","shell.execute_reply":"2021-08-04T08:31:17.731384Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Running the model\n\nepochs_num = 40\nbatch_size = 128\nvalidation_split_part = 0.2\n\nmodel.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])\nhistory = model.fit(train_image, train_label, epochs=epochs_num, batch_size=batch_size, validation_split=validation_split_part, shuffle=True)","metadata":{"execution":{"iopub.status.busy":"2021-08-04T08:31:17.734610Z","iopub.execute_input":"2021-08-04T08:31:17.734947Z","iopub.status.idle":"2021-08-04T09:24:17.446621Z","shell.execute_reply.started":"2021-08-04T08:31:17.734911Z","shell.execute_reply":"2021-08-04T09:24:17.445622Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Draw plot for CNN training\n\nplt.plot(history.history['accuracy'], label='accuracy')\nplt.plot(history.history['val_accuracy'], label='val_accuracy')\nplt.xlabel('Epoch')\nplt.ylabel('Accuracy')\nplt.ylim([0.5, 1])\nplt.legend(loc='lower right')\nplt.title(\"Accuracy Plot\")\nplt.show()\n\n# Draw plot for CNN training\nplt.plot(history.history['loss'], label='loss')\nplt.plot(history.history['val_loss'], label='val_loss')\nplt.xlabel('Epoch')\nplt.ylabel('Loss')\nplt.ylim([0, 0.5])\nplt.legend(loc='upper right')\nplt.title(\"Loss Plot\")\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-08-04T09:24:17.448217Z","iopub.execute_input":"2021-08-04T09:24:17.448517Z","iopub.status.idle":"2021-08-04T09:24:17.765490Z","shell.execute_reply.started":"2021-08-04T09:24:17.448486Z","shell.execute_reply":"2021-08-04T09:24:17.764734Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.save('Digit_Recognition_CNN.model')","metadata":{"execution":{"iopub.status.busy":"2021-08-04T09:24:17.766679Z","iopub.execute_input":"2021-08-04T09:24:17.767171Z","iopub.status.idle":"2021-08-04T09:24:23.500448Z","shell.execute_reply.started":"2021-08-04T09:24:17.767125Z","shell.execute_reply":"2021-08-04T09:24:23.499253Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"predictions = model.predict(test_image)","metadata":{"execution":{"iopub.status.busy":"2021-08-04T09:24:23.513136Z","iopub.execute_input":"2021-08-04T09:24:23.513516Z","iopub.status.idle":"2021-08-04T09:24:49.522333Z","shell.execute_reply.started":"2021-08-04T09:24:23.513483Z","shell.execute_reply":"2021-08-04T09:24:49.521223Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"predictions = np.argmax(predictions, axis = 1)","metadata":{"execution":{"iopub.status.busy":"2021-08-04T09:24:49.526370Z","iopub.execute_input":"2021-08-04T09:24:49.526706Z","iopub.status.idle":"2021-08-04T09:24:49.532087Z","shell.execute_reply.started":"2021-08-04T09:24:49.526672Z","shell.execute_reply":"2021-08-04T09:24:49.531134Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(type(predictions), predictions.shape)","metadata":{"execution":{"iopub.status.busy":"2021-08-04T09:24:49.533488Z","iopub.execute_input":"2021-08-04T09:24:49.534299Z","iopub.status.idle":"2021-08-04T09:24:49.546232Z","shell.execute_reply.started":"2021-08-04T09:24:49.534244Z","shell.execute_reply":"2021-08-04T09:24:49.545392Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plot_sample(test_image, predictions)","metadata":{"execution":{"iopub.status.busy":"2021-08-04T09:24:49.547209Z","iopub.execute_input":"2021-08-04T09:24:49.547554Z","iopub.status.idle":"2021-08-04T09:24:50.756159Z","shell.execute_reply.started":"2021-08-04T09:24:49.547524Z","shell.execute_reply":"2021-08-04T09:24:50.755118Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission = pd.DataFrame({'ImageId' : range(1,28001), 'Label' : predictions})","metadata":{"execution":{"iopub.status.busy":"2021-08-04T09:24:50.757471Z","iopub.execute_input":"2021-08-04T09:24:50.757800Z","iopub.status.idle":"2021-08-04T09:24:50.763600Z","shell.execute_reply.started":"2021-08-04T09:24:50.757768Z","shell.execute_reply":"2021-08-04T09:24:50.762855Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission.head()","metadata":{"execution":{"iopub.status.busy":"2021-08-04T09:24:50.764919Z","iopub.execute_input":"2021-08-04T09:24:50.765446Z","iopub.status.idle":"2021-08-04T09:24:50.782766Z","shell.execute_reply.started":"2021-08-04T09:24:50.765405Z","shell.execute_reply":"2021-08-04T09:24:50.781642Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission.to_csv(\"submission.csv\",index=False)","metadata":{"execution":{"iopub.status.busy":"2021-08-04T09:24:50.784154Z","iopub.execute_input":"2021-08-04T09:24:50.784703Z","iopub.status.idle":"2021-08-04T09:24:50.850474Z","shell.execute_reply.started":"2021-08-04T09:24:50.784661Z","shell.execute_reply":"2021-08-04T09:24:50.849507Z"},"trusted":true},"execution_count":null,"outputs":[]}]}