{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.11.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":3004,"databundleVersionId":861823,"sourceType":"competition"}],"dockerImageVersionId":31089,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"from tensorflow.keras.datasets import mnist","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2025-08-31T18:19:25.283225Z","iopub.execute_input":"2025-08-31T18:19:25.283940Z","iopub.status.idle":"2025-08-31T18:19:46.182730Z","shell.execute_reply.started":"2025-08-31T18:19:25.283900Z","shell.execute_reply":"2025-08-31T18:19:46.181749Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"(x_train, y_train), (x_valid, y_valid) = mnist.load_data()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T18:19:47.708102Z","iopub.execute_input":"2025-08-31T18:19:47.708473Z","iopub.status.idle":"2025-08-31T18:19:48.228486Z","shell.execute_reply.started":"2025-08-31T18:19:47.708445Z","shell.execute_reply":"2025-08-31T18:19:48.227288Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import tensorflow.keras as keras\nimport pandas as pd\n\n\n\nnum_classes = 10\ny_train = keras.utils.to_categorical(y_train, num_classes)\ny_valid = keras.utils.to_categorical(y_valid, num_classes)\n\nx_train = x_train / 255\nx_valid = x_valid / 255","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T18:24:45.335060Z","iopub.execute_input":"2025-08-31T18:24:45.335510Z","iopub.status.idle":"2025-08-31T18:24:45.610682Z","shell.execute_reply.started":"2025-08-31T18:24:45.335471Z","shell.execute_reply":"2025-08-31T18:24:45.609251Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"x_train.shape, x_valid.shape","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T18:25:00.080408Z","iopub.execute_input":"2025-08-31T18:25:00.080781Z","iopub.status.idle":"2025-08-31T18:25:00.087872Z","shell.execute_reply.started":"2025-08-31T18:25:00.080757Z","shell.execute_reply":"2025-08-31T18:25:00.086947Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"x_train = x_train.reshape(-1,28,28,1)\nx_valid = x_valid.reshape(-1,28,28,1)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T18:25:23.025482Z","iopub.execute_input":"2025-08-31T18:25:23.025801Z","iopub.status.idle":"2025-08-31T18:25:23.030966Z","shell.execute_reply.started":"2025-08-31T18:25:23.025777Z","shell.execute_reply":"2025-08-31T18:25:23.029886Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import (\n    Dense,\n    Conv2D,\n    MaxPool2D,\n    Flatten,\n    Dropout,\n    BatchNormalization,\n)\n\nmodel = Sequential()\nmodel.add(Conv2D(75, (3, 3), strides=1, padding=\"same\", activation=\"relu\", \n                 input_shape=(28, 28, 1)))\nmodel.add(BatchNormalization())\nmodel.add(MaxPool2D((2, 2), strides=2, padding=\"same\"))\nmodel.add(Conv2D(50, (3, 3), strides=1, padding=\"same\", activation=\"relu\"))\nmodel.add(Dropout(0.2))\nmodel.add(BatchNormalization())\nmodel.add(MaxPool2D((2, 2), strides=2, padding=\"same\"))\nmodel.add(Conv2D(25, (3, 3), strides=1, padding=\"same\", activation=\"relu\"))\nmodel.add(BatchNormalization())\nmodel.add(MaxPool2D((2, 2), strides=2, padding=\"same\"))\nmodel.add(Flatten())\nmodel.add(Dense(units=512, activation=\"relu\"))\nmodel.add(Dropout(0.3))\nmodel.add(Dense(units=num_classes, activation=\"softmax\"))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T18:25:46.297641Z","iopub.execute_input":"2025-08-31T18:25:46.297994Z","iopub.status.idle":"2025-08-31T18:25:46.593590Z","shell.execute_reply.started":"2025-08-31T18:25:46.297966Z","shell.execute_reply":"2025-08-31T18:25:46.592448Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"model.summary()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T18:26:01.787869Z","iopub.execute_input":"2025-08-31T18:26:01.788357Z","iopub.status.idle":"2025-08-31T18:26:01.814762Z","shell.execute_reply.started":"2025-08-31T18:26:01.788328Z","shell.execute_reply":"2025-08-31T18:26:01.813944Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"model.compile(loss=\"categorical_crossentropy\", metrics=[\"accuracy\"])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T18:26:27.585911Z","iopub.execute_input":"2025-08-31T18:26:27.586723Z","iopub.status.idle":"2025-08-31T18:26:27.600492Z","shell.execute_reply.started":"2025-08-31T18:26:27.586688Z","shell.execute_reply":"2025-08-31T18:26:27.599304Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"model.fit(x_train, y_train, epochs=20, verbose=1, validation_data=(x_valid, y_valid))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-08-31T18:26:31.650806Z","iopub.execute_input":"2025-08-31T18:26:31.651117Z","iopub.status.idle":"2025-08-31T18:26:32.569333Z","shell.execute_reply.started":"2025-08-31T18:26:31.651095Z","shell.execute_reply":"2025-08-31T18:26:32.568061Z"}},"outputs":[],"execution_count":null}]}