diff --git a/handwritten_digit_recognition.ipynb b/handwritten_digit_recognition.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..c8abf9fc27f57fe5cb3354ab6a964c56385c8d27 --- /dev/null +++ b/handwritten_digit_recognition.ipynb @@ -0,0 +1 @@ +{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyOfLae2mJ+wGBBMhtvrqFoi"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"},"widgets":{"application/vnd.jupyter.widget-state+json":{"c75d8e844ff4433381ac4d67de2cc7e8":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_48c91576439b40508f8a2c02ca53c1d2","IPY_MODEL_743c72c11eac4f8d9ada23b5deddcc74","IPY_MODEL_5be8455fc011498ea7488f29fd7b3dac"],"layout":"IPY_MODEL_276e1c441e9142b1b1b134c88577399f"}},"48c91576439b40508f8a2c02ca53c1d2":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_310b3e2e6d5f4e8fae839eb1f111ccee","placeholder":"​","style":"IPY_MODEL_2f35fa47682944f7a50cf641524cec78","value":"100%"}},"743c72c11eac4f8d9ada23b5deddcc74":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_c5826b26f28849c684f2a8ae46dff071","max":5,"min":0,"orientation":"horizontal","style":"IPY_MODEL_68f3007b136d445bbf6162e083c95e81","value":5}},"5be8455fc011498ea7488f29fd7b3dac":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_79eedc6530fd4da79e1fcd95b22a309e","placeholder":"​","style":"IPY_MODEL_1d11b7494fd1494198a15d9ede6b1030","value":" 5/5 [05:13<00:00, 61.29s/it]"}},"276e1c441e9142b1b1b134c88577399f":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"310b3e2e6d5f4e8fae839eb1f111ccee":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"2f35fa47682944f7a50cf641524cec78":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"c5826b26f28849c684f2a8ae46dff071":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"68f3007b136d445bbf6162e083c95e81":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"79eedc6530fd4da79e1fcd95b22a309e":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"1d11b7494fd1494198a15d9ede6b1030":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"77492f4e4d4c482b814998baf362355a":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_4ad4f24d40da40a8b14a0a189a3d6502","IPY_MODEL_6f8a3dbabac643189f0e24b72d5a4976","IPY_MODEL_ae2c828fa789467ca09f50b56043d22a"],"layout":"IPY_MODEL_68a1a01eb9c7477186f8d7f8be7fbc71"}},"4ad4f24d40da40a8b14a0a189a3d6502":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_a32d241a669f4e39b31ca83d1c7c71d1","placeholder":"​","style":"IPY_MODEL_25831c4f00c948c2a9eec5918022aaab","value":""}},"6f8a3dbabac643189f0e24b72d5a4976":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_7522f04303ce4da493408e64b43798e9","max":1,"min":0,"orientation":"horizontal","style":"IPY_MODEL_f6cd1e46f62446a5bd49490ddd5a352e","value":1}},"ae2c828fa789467ca09f50b56043d22a":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_0478d88c5f3a4baaa849b15c44469fe4","placeholder":"​","style":"IPY_MODEL_132e358f86a94f60ae1c429c0e8bae12","value":" 313/? [00:04<00:00, 51.24it/s]"}},"68a1a01eb9c7477186f8d7f8be7fbc71":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a32d241a669f4e39b31ca83d1c7c71d1":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"25831c4f00c948c2a9eec5918022aaab":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"7522f04303ce4da493408e64b43798e9":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":"20px"}},"f6cd1e46f62446a5bd49490ddd5a352e":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"0478d88c5f3a4baaa849b15c44469fe4":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"132e358f86a94f60ae1c429c0e8bae12":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}}}}},"cells":[{"cell_type":"markdown","source":["## Handwritten digit recognition with MNIST from `torchvision.datasets`"],"metadata":{"id":"Af1xzuVuN14Y"}},{"cell_type":"markdown","source":["## 1. Getting a dataset"],"metadata":{"id":"Fx7p9TVT1Ckj"}},{"cell_type":"code","execution_count":1,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"6H_XRgurzzPK","executionInfo":{"status":"ok","timestamp":1704393104310,"user_tz":-60,"elapsed":20097,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}},"outputId":"b4e0421c-468a-4b31-fbf4-19f032000ce6"},"outputs":[{"output_type":"stream","name":"stdout","text":["Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz\n","Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz to MNIST/MNIST/raw/train-images-idx3-ubyte.gz\n"]},{"output_type":"stream","name":"stderr","text":["100%|██████████| 9912422/9912422 [00:00<00:00, 79749469.61it/s]\n"]},{"output_type":"stream","name":"stdout","text":["Extracting MNIST/MNIST/raw/train-images-idx3-ubyte.gz to MNIST/MNIST/raw\n","\n","Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz\n","Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz to MNIST/MNIST/raw/train-labels-idx1-ubyte.gz\n"]},{"output_type":"stream","name":"stderr","text":["100%|██████████| 28881/28881 [00:00<00:00, 33518454.30it/s]"]},{"output_type":"stream","name":"stdout","text":["Extracting MNIST/MNIST/raw/train-labels-idx1-ubyte.gz to MNIST/MNIST/raw\n","\n","Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz\n","Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz to MNIST/MNIST/raw/t10k-images-idx3-ubyte.gz\n"]},{"output_type":"stream","name":"stderr","text":["\n","100%|██████████| 1648877/1648877 [00:00<00:00, 42108447.37it/s]\n"]},{"output_type":"stream","name":"stdout","text":["Extracting MNIST/MNIST/raw/t10k-images-idx3-ubyte.gz to MNIST/MNIST/raw\n","\n","Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz\n","Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz to MNIST/MNIST/raw/t10k-labels-idx1-ubyte.gz\n"]},{"output_type":"stream","name":"stderr","text":["100%|██████████| 4542/4542 [00:00<00:00, 13165534.74it/s]"]},{"output_type":"stream","name":"stdout","text":["Extracting MNIST/MNIST/raw/t10k-labels-idx1-ubyte.gz to MNIST/MNIST/raw\n","\n"]},{"output_type":"stream","name":"stderr","text":["\n"]},{"output_type":"execute_result","data":{"text/plain":["(Dataset MNIST\n"," Number of datapoints: 60000\n"," Root location: MNIST\n"," Split: Train\n"," StandardTransform\n"," Transform: ToTensor(),\n"," Dataset MNIST\n"," Number of datapoints: 10000\n"," Root location: MNIST\n"," Split: Test\n"," StandardTransform\n"," Transform: ToTensor())"]},"metadata":{},"execution_count":1}],"source":["# Import PyTorch\n","import torch\n","device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n","\n","import torchvision\n","from torchvision import datasets\n","from torchvision import transforms\n","\n","# Setup training data - MNIST\n","train_data = datasets.MNIST(\n"," root=\"MNIST\",\n"," train=True,\n"," download=True,\n"," transform=transforms.ToTensor()\n",")\n","\n","test_data = datasets.MNIST(\n"," root=\"MNIST\",\n"," train=False,\n"," download=True,\n"," transform=transforms.ToTensor()\n",")\n","\n","train_data, test_data"]},{"cell_type":"markdown","source":["### 1.1 Input and output shapes of a computer vision model"],"metadata":{"id":"rAxKMoPEPwUo"}},{"cell_type":"code","source":["# See the first training sample\n","image, label = train_data[0][0], train_data[0][1]\n","print(f\"Shape of the sample image: {image.shape} -> [color_channels, height, width]\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"tezM_NWV3Yo-","executionInfo":{"status":"ok","timestamp":1704393104311,"user_tz":-60,"elapsed":10,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}},"outputId":"cb2edbde-0136-46f8-cde1-82c62a602869"},"execution_count":2,"outputs":[{"output_type":"stream","name":"stdout","text":["Shape of the sample image: torch.Size([1, 28, 28]) -> [color_channels, height, width]\n"]}]},{"cell_type":"code","source":["# check the lengths of the train and test data\n","len(train_data.data), len(train_data.targets), len(test_data.data), len(test_data.targets)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"v9tS8nslPSGs","executionInfo":{"status":"ok","timestamp":1704393104311,"user_tz":-60,"elapsed":5,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}},"outputId":"2bda72a7-b7d8-4499-e523-1c5e486fe3a6"},"execution_count":3,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(60000, 60000, 10000, 10000)"]},"metadata":{},"execution_count":3}]},{"cell_type":"code","source":["# See the class names and labels\n","class_names = train_data.classes\n","class_names_idx = train_data.class_to_idx\n","print(f\"Class names: {class_names}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"uiIOlJ1iAQTV","executionInfo":{"status":"ok","timestamp":1704393104760,"user_tz":-60,"elapsed":12,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}},"outputId":"823e8ccf-cdd1-46bb-e10d-d92ff5afbaf6"},"execution_count":4,"outputs":[{"output_type":"stream","name":"stdout","text":["Class names: ['0 - zero', '1 - one', '2 - two', '3 - three', '4 - four', '5 - five', '6 - six', '7 - seven', '8 - eight', '9 - nine']\n"]}]},{"cell_type":"markdown","source":["### 1.2 Visualizing the data"],"metadata":{"id":"DSPjQ6Q3QZj4"}},{"cell_type":"code","source":["import matplotlib.pyplot as plt\n","image, label = train_data[0]\n","print(f\"Image shape: {image.shape}\")\n","plt.imshow(image.squeeze(), cmap=\"gray\")\n","plt.title(class_names[label])\n","plt.axis(False);"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":445},"id":"Wtb0AQ-aQgG9","executionInfo":{"status":"ok","timestamp":1704393105136,"user_tz":-60,"elapsed":385,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}},"outputId":"aae9bb0e-e7c4-4246-ea27-fb64c8ac4899"},"execution_count":5,"outputs":[{"output_type":"stream","name":"stdout","text":["Image shape: torch.Size([1, 28, 28])\n"]},{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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3jQ3NxdvRo0aVbyJiOjTp0/xZtKkSTWddaz55ptvijeLFi0q3kycOLF4s2fPnuJNRMT27duLN++9915NZ/0buVMAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAECqVKvVapteWKl09LXwf4YPH17Tbv369cWb3r1713QWR1Zra2vxZubMmcWbvXv3Fm9qsXPnzpp2P//8c/Hm888/r+msY01bvty7UwAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQBIFAJKnpNapvn371rTbvHlz8aapqamms441tfzZ7dq1q3gzevTo4k1ExIEDB4o3noDL//OUVACKiAIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASKIAQOra2RfAn/vpp59q2t13333Fm2uvvbZ48/HHHxdvFi1aVLyp1SeffFK8GTt2bPFm3759xZtzzz23eBMRMWvWrJp2UMKdAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAUqVarVbb9MJKpaOvhU7Sq1ev4s2ePXuKN0uWLCneRETceuutxZubbrqpePPSSy8Vb+Bo0pYv9+4UAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQunb2BdD5du/efUTO+eWXX47IORERt912W/Fm5cqVxZvW1tbiDdQzdwoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAECqVKvVapteWKl09LVwjOvZs2dNu9dff714c9lllxVvrr766uLNO++8U7yBztKWL/fuFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkDwQj7o3aNCg4s22bduKN7t27SrebNiwoXizdevW4k1ExNNPP128aeNfb/4lPBAPgCKiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQPBCPY9LEiROLN8uWLSvenHjiicWbWj300EPFm+XLlxdvdu7cWbzh6OCBeAAUEQUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgOSBePBf5513XvFmwYIFxZsxY8YUb2q1ZMmS4s2cOXOKN99++23xhiPPA/EAKCIKACRRACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgDJA/HgH+jTp0/xZty4cTWdtWzZsuJNLX9v169fX7wZO3Zs8YYjzwPxACgiCgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASJ6SCkeJlpaW4k3Xrl2LNwcPHizeXHXVVcWbjRs3Fm/4ZzwlFYAiogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkMqflgXHqPPPP794M3ny5OLNiBEjijcRtT3crhY7duwo3rz//vsdcCV0BncKACRRACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIHohH3RsyZEjx5u677y7eXH/99cWb0047rXhzJB06dKh4s3PnzuJNa2tr8Yb65E4BgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgDJA/GoSS0PgrvxxhtrOquWh9sNHDiwprPq2datW4s3c+bMKd689tprxRuOHe4UAEiiAEASBQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQPBDvGHPqqacWb84555zizVNPPVW8GTp0aPGm3m3evLl48+STT9Z01tq1a4s3ra2tNZ3Fv5c7BQCSKACQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIHlK6hHQt2/f4s2SJUtqOmv48OHFm6ampprOqmcffvhh8Wb+/PnFm3Xr1hVv9u/fX7yBI8WdAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUA0r/6gXgXXXRR8ea+++4r3owcObJ4c8YZZxRv6t2vv/5a027RokXFm8cff7x4s2/fvuINHGvcKQCQRAGAJAoAJFEAIIkCAEkUAEiiAEASBQCSKACQRAGAJAoAJFEAIP2rH4g3ceLEI7I5knbs2FG8eeONN4o3Bw8eLN7Mnz+/eBMRsWvXrpp2QDl3CgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgAkUQAgiQIASRQASJVqtVpt0wsrlY6+FgA6UFu+3LtTACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgCQKACRRACCJAgBJFABIogBAEgUAkigAkEQBgNS1rS+sVqsdeR0A1AF3CgAkUQAgiQIASRQASKIAQBIFAJIoAJBEAYAkCgCk/wC69UjAsc8powAAAABJRU5ErkJggg==\n"},"metadata":{}}]},{"cell_type":"code","source":["# visualize more digit images\n","import matplotlib.pyplot as plt\n","import random\n","#random.seed(34)\n","fig = plt.figure(figsize=(9, 9))\n","rows, cols = 4, 4\n","for i in range(1, rows*cols+1):\n"," random_idx = random.randint(0, len(train_data))\n"," image, label = train_data[random_idx]\n"," fig.add_subplot(rows, cols, i)\n"," plt.imshow(image.squeeze(), cmap=\"gray\")\n"," plt.title(class_names[label])\n"," plt.axis(\"off\")\n","plt.show()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":752},"id":"NzXxc5ky_Ij_","executionInfo":{"status":"ok","timestamp":1704393110508,"user_tz":-60,"elapsed":5024,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}},"outputId":"38f7751c-ce65-4dfe-da15-ffce97e388b4"},"execution_count":6,"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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vn21doGBgfLEE0/IsmXL5M6dOw6fW7Zsmdy+fVs6deokIiIpKSkSFxcnEydOlNjYWJkyZYq0adNGJk2aJB07dvTo+AFnuF57icqCKleurEJCQlRISIh67rnn1JIlS9Rzzz2nRER16tTJY+e5dOmSEhE1YcIEy3aNGjVSjRo1csjWrl2rRES99tpr6ujRoyosLEy1adPGY2ODb/n222+ViKhZs2Z55fht2rRR2bJlU0eOHLFnv/32m8qRI4dq2LChPZs1a5YSEdWsWTOVkpJiz59//nnl7++vLl++rJRS6tq1aypnzpzq6aefdjjP6dOnVUREhJYj69i6datq166d+vDDD9Xy5cvVG2+8ofLkyaOCg4PV7t27PXquB/P122+/dci7d++uIiMj7R8/uB6vXLnSoV3Lli1VqVKl7B/PnTtX+fn5qc2bNzu0e//995WIqK1bt3p0/MicuF5nTlnyDvP169flxo0bkpCQIJMnT5a2bdvK5MmTpW/fvrJgwQI5dOiQR86TPXt2yZYtm2zatEkuXbqUqr6PPfaY9O3bV1599VVp27atBAcHy4wZMzwyLiA17t+/L+vWrZM2bdpIqVKl7HmhQoWkS5cusmXLFrl69apDnz59+ojNZrN/3KBBA7l//74cP35cRETWr18vly9fls6dO8v58+ft//n7+0utWrUkMTExbV4cMpy6devK4sWLpVevXhIXFycvvfSS7NixQ2w2mwwfPjxdxtSkSRPJmzevLFy40J5dunRJ1q9f73Dn+LPPPpPy5ctLuXLlHOZ1kyZNRESY1/A6rtfekyUX/WXPnl1ERDp37uyQd+nSRWbMmCHbt2+X6OhoY9/r16/L9evX7R/7+/tLvnz5jG2DgoJk/PjxMmTIEClQoIDUrl1bWrduLQkJCS69l2nixImyfPly+f7772XevHmSP39+V18iYOnmzZty5coVh8zZnDx37pzcuHFDypYtq32ufPnykpKSIidPnpSKFSva8+LFizu0y5Url4iI/R+OD/5R+qCQ+Kvw8HAXXwmygtKlS8vjjz8un3/+udy/f1/8/f2N7VJzfU6NgIAAadeuncybN09u374tQUFB8vnnn8vdu3cdCuZDhw7Jzz//7PScDxYZAqnB9TpjyJIFc+HChWXfvn1SoEABh/xBQWp1N3jixIkyZswY+8eRkZGW798ZNGiQxMbGyrJly2Tt2rUycuRIeeONN2Tjxo1StWpVy3Hu2bPHfoH98ccftQIf+KcWLlyoLWJSSnns+M4KmgfneLDIdu7cucYLf0BAlrw0wUKxYsXkzp07kpyc7PQXdGqvz6nRqVMnmTFjhqxevVratGkjixYtknLlysnDDz9sb5OSkiIPPfSQvPPOO05fA5BaXK8zhqzxKv+ievXqsn79evuivwcePH3C6o5EQkKC1K9f3/7xg7vVVqKiomTIkCEyZMgQOXTokFSpUkXefvtt+eSTT5z2SU5Olp49e0qFChWkbt268tZbb8kTTzzBo2jgETExMbJ+/XqX2ubLl09CQkLkl19+0T534MAB8fPzS3UhEBUVJSJ//CP1z8+/BZw5evSoBAcHS1hYmNM2/+T67KqGDRtKoUKFZOHChVK/fn3ZuHGjjBgxwqFNVFSU7N27V5o2berwJ27AHVyvM4YsWTDHx8fLm2++KR9++KHDnxg++OADCQgIsNymulSpUg7vC7Jy48YN8fPzk+DgYHsWFRUlOXLk+NtHDL344oty4sQJ2bFjh5QtW1a++uor6d69u+zZs0eCgoJcOj/gTKFChaRQoUIutfX395fHHntMli9fLklJSfbHbZ05c0bmzZsn9evXT/Wf5GJiYiQ8PFxef/11eeSRR7Tn3p47d84jf0pH5mP63u/du1dWrFghLVq0sHxufmquz6nl5+cn7du3l48++khq1qwp9+7d0558ER8fL19++aXMnDnT/gSOB27evCkpKSnsJIhU43qdMWTJgrlq1arSq1cv+eijj+TevXvSqFEj2bRpk3z22WcyfPhwjz227eDBg9K0aVOJj4+XChUqSEBAgCxdulTOnDljfwyRycaNG2XatGkyatQoqVatmoiIzJo1Sxo3biwjR46Ut956yyPjQ+Y3depUuXz5sv2vIytXrrTvVvncc89JRESER87z2muvyfr166V+/frSr18/CQgIkBkzZsjt27f/0XwMDw+X6dOnS7du3aRatWrSqVMnyZcvn5w4cUJWrVol9erVk6lTp3pk7MhcOnbsKNmzZ5e6detK/vz5Zf/+/fJ///d/EhISIm+++Wa6j23KlCkyatQoeeihh6R8+fIOn+/WrZssWrRInnnmGUlMTJR69erJ/fv35cCBA7Jo0SJZu3at/Otf/0qn0SO9cb3O5NL3IR3p586dO2r0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d29vDwde9Oijj2rZnTt3jG2TkpK8PBrvKleunMttV6xY4cWRwNvGjBmjZd7aQtp03K+//trltqaxOtuG28T0RBGrPCPhDjMAAABggYIZAAAAsEDBDAAAAFigYAYAAAAs2JSL+yRm5u0MPSVv3rxadvbsWZf7Dxw4UMumTp3q1ph8QWq26vQ0d+f1K6+8Ysz/85//aFlAQOZeY3v48GFjniNHDi27d++esa1pe++WLVtqmbMtx0NDQ62G+Lf8/NLuHkFmntdIf862fG/RooWWtWvXTsuWLl3q8TGJMK9N3P2amLag9taiP2/wxJxI7++tK6+BO8wAAACABQpmAAAAwAIFMwAAAGCBghkAAACwkLlXIaUx00KmK1euaFlERISxf1RUlMfHhPT16quvGnPT4rInn3xSy4KCgoz9CxQooGU3b940tjXNy0uXLhnbumrmzJlaNm/ePGPb3Llza9ndu3eNbffv369lY8eO1bIdO3YY+9esWdOYm8yZM8fltkB6KliwoJaVKVPG2Hbjxo1atm7dOo+PCTpP7EZnWsyXmRb4mZh2/xNxfwfAjLb7H3eYAQAAAAsUzAAAAIAFCmYAAADAAgUzAAAAYIGCGQAAALDAUzJS4fLly1q2efNmLWvdunUajAYZmasrfk1PwxARadKkiZadOnXK2Pb69etatnv3busBetDJkyfd6l+3bl0tK1mypMv9nW1pumfPnn88JiAtvfjii1rm7Gfg6aef1rLk5GSPjwlIS6YnavCUDAAAACAToWAGAAAALFAwAwAAABYomAEAAAALLPoD0tGZM2eM+fz589N4JGnDtLX1F198oWU5c+Z0+ZiffvqpMX/33XddPgaQFmJiYox57969teyTTz4xts3s2yhnZo0aNUrvIWQpGW27bO4wAwAAABYomAEAAAALFMwAAACABQpmAAAAwAKL/tJQnjx50nsIQLqqVq2alqVmgd+BAwe0rGfPnu4MCfCKxo0ba9l7771nbBsSEqJls2bN8vSQ4Kavv/7amJu+16k9BjI+7jADAAAAFiiYAQAAAAsUzAAAAIAFCmYAAADAAgUzAAAAYIGnZKShuLi49B4CkKkppbTs/v376TASPFC8eHEts9lsLvc/efKkMU9JSfnHY0prBQoU0LIPP/xQy0qWLGnsP27cOC3jaQoZz6hRo9J7CFlKem6DbcIdZgAA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\n"},"metadata":{}}]},{"cell_type":"markdown","source":["## 2. Prepare DataLoader"],"metadata":{"id":"_OjMk9vPQ9m1"}},{"cell_type":"code","source":["from torch.utils.data import DataLoader\n","BATCH_SIZE = 32 # batch size hyperparameters\n","\n","# turn datasets into iterable (batches)\n","train_dataloader = DataLoader(train_data,\n"," batch_size=BATCH_SIZE,\n"," shuffle=True)\n","test_dataloader = DataLoader(test_data,\n"," batch_size=BATCH_SIZE,\n"," shuffle=False)"],"metadata":{"id":"d52mtWv2_Wvf","executionInfo":{"status":"ok","timestamp":1704393110509,"user_tz":-60,"elapsed":17,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}}},"execution_count":7,"outputs":[]},{"cell_type":"code","source":["train_features_batch, train_labels_batch = next(iter(train_dataloader))\n","train_features_batch.shape, train_labels_batch.shape"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"aSndKuit_7gR","executionInfo":{"status":"ok","timestamp":1704393110509,"user_tz":-60,"elapsed":15,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}},"outputId":"72f56382-4c54-4438-c6a5-c9d3a0a80322"},"execution_count":8,"outputs":[{"output_type":"execute_result","data":{"text/plain":["(torch.Size([32, 1, 28, 28]), torch.Size([32]))"]},"metadata":{},"execution_count":8}]},{"cell_type":"code","source":["# PLot a random sample\n","random_idx = random.randint(0, len(train_features_batch))\n","image, label = train_features_batch[random_idx], train_labels_batch[random_idx]\n","plt.imshow(image.squeeze(), cmap=\"gray\")\n","plt.title(class_names[label])\n","plt.axis(False);\n","print(f\"Image size: {image.shape}\\nLabel: {label}, label size:{label.shape}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":463},"id":"7sx1iPLeRKgK","executionInfo":{"status":"ok","timestamp":1704393110918,"user_tz":-60,"elapsed":422,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}},"outputId":"da204073-d3bf-4f92-9991-a31ed0df15dc"},"execution_count":9,"outputs":[{"output_type":"stream","name":"stdout","text":["Image size: torch.Size([1, 28, 28])\n","Label: 5, label size:torch.Size([])\n"]},{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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\n"},"metadata":{}}]},{"cell_type":"markdown","source":["## 3. Build a CNN model"],"metadata":{"id":"kDzZ8qT9R7kB"}},{"cell_type":"code","source":["from torch import nn\n","class ModelCNN_MNIST(nn.Module):\n"," def __init__(self,\n"," input_shape: int,\n"," hidden_units: int,\n"," output_shape: int):\n"," super().__init__()\n"," self.block_1 = nn.Sequential(\n"," nn.Conv2d(in_channels=input_shape,\n"," out_channels=hidden_units,\n"," kernel_size=3,\n"," stride=1,\n"," padding=1),\n"," nn.ReLU(),\n"," nn.Conv2d(in_channels=hidden_units,\n"," out_channels=hidden_units,\n"," kernel_size=3,\n"," stride=1,\n"," padding=1),\n"," nn.ReLU(),\n"," nn.MaxPool2d(kernel_size=2,\n"," stride=2)\n"," )\n"," self.block_2 = nn.Sequential(\n"," nn.Conv2d(in_channels=hidden_units,\n"," out_channels=hidden_units,\n"," kernel_size=3,\n"," stride=1,\n"," padding=1),\n"," nn.ReLU(),\n"," nn.Conv2d(in_channels=hidden_units,\n"," out_channels=hidden_units,\n"," kernel_size=3,\n"," stride=1,\n"," padding=1),\n"," nn.ReLU(),\n"," nn.MaxPool2d(kernel_size=2,\n"," stride=2)\n"," )\n"," self.classifier = nn.Sequential(\n"," nn.Flatten(),\n"," nn.Linear(in_features=hidden_units*7*7,\n"," out_features=output_shape)\n"," )\n","\n"," def forward(self, x: torch.Tensor):\n"," x = self.block_1(x)\n"," # print(x.shape)\n"," x = self.block_2(x)\n"," # print(x.shape)\n"," x = self.classifier(x)\n"," # print(x.shape)\n"," return x\n","\n","torch.manual_seed(34)\n","model = ModelCNN_MNIST(\n"," input_shape=1,\n"," hidden_units=10,\n"," output_shape=len(class_names)\n"," ).to(device)\n","\n","model"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"MmnZEH13ACae","executionInfo":{"status":"ok","timestamp":1704393110919,"user_tz":-60,"elapsed":21,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}},"outputId":"e8ebc5ac-84a6-45a9-daa3-fb91916c39fd"},"execution_count":10,"outputs":[{"output_type":"execute_result","data":{"text/plain":["ModelCNN_MNIST(\n"," (block_1): Sequential(\n"," (0): Conv2d(1, 10, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n"," (1): ReLU()\n"," (2): Conv2d(10, 10, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n"," (3): ReLU()\n"," (4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n"," )\n"," (block_2): Sequential(\n"," (0): Conv2d(10, 10, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n"," (1): ReLU()\n"," (2): Conv2d(10, 10, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n"," (3): ReLU()\n"," (4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n"," )\n"," (classifier): Sequential(\n"," (0): Flatten(start_dim=1, end_dim=-1)\n"," (1): Linear(in_features=490, out_features=10, bias=True)\n"," )\n",")"]},"metadata":{},"execution_count":10}]},{"cell_type":"markdown","source":["### 3.1 Try a forward pass on a single image"],"metadata":{"id":"gFpZ_5GVSd_u"}},{"cell_type":"code","source":["# 1. Get a batch of images and labels\n","image_batch, label_batch = train_features_batch[0], train_labels_batch[0]\n","print(f\"Single image size: {image_batch.shape}\")\n","\n","# 2 . Perform a forward pass on a single image\n","model.eval()\n","with torch.inference_mode():\n"," pred = model(image_batch.unsqueeze(dim=0).to(device))\n","\n","# 4 Print out\n","print(f\"Output logits:\\n{pred}\\n\")\n","print(f\"Output prediction probabilities:\\n{torch.softmax(pred, dim=1)}\\n\")\n","print(f\"Output prediction label:\\n{torch.argmax(torch.softmax(pred, dim=1), dim=1)}\\n\")\n","print(f\"Actual label:\\n{label_batch}\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"NCHjQrysSkBM","executionInfo":{"status":"ok","timestamp":1704393110920,"user_tz":-60,"elapsed":16,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}},"outputId":"e5d7843d-8a5b-40d6-dcd5-57e61131bf7d"},"execution_count":11,"outputs":[{"output_type":"stream","name":"stdout","text":["Single image size: torch.Size([1, 28, 28])\n","Output logits:\n","tensor([[-0.0170, -0.0226, -0.0282, 0.0028, 0.0051, -0.0224, 0.0182, 0.0473,\n"," -0.0252, -0.0027]])\n","\n","Output prediction probabilities:\n","tensor([[0.0987, 0.0982, 0.0976, 0.1007, 0.1009, 0.0982, 0.1023, 0.1053, 0.0979,\n"," 0.1002]])\n","\n","Output prediction label:\n","tensor([7])\n","\n","Actual label:\n","9\n"]}]},{"cell_type":"markdown","source":["### 3.2 Get an idea of shapes going through the model"],"metadata":{"id":"GvIdsv6hT2Vm"}},{"cell_type":"code","source":["# Install torchinfo if it's not available, import it if it is\n","try:\n"," import torchinfo\n","except:\n"," !pip install torchinfo\n"," import torchinfo\n","\n","from torchinfo import summary\n","summary(model, input_size=[1, 1, 28, 28]) # do a test pass through of an example input size"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"HfWCi3j3T8s8","executionInfo":{"status":"ok","timestamp":1704393124106,"user_tz":-60,"elapsed":13197,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}},"outputId":"fbea6f4d-4f15-431f-dcdc-68e9b0ebdf89"},"execution_count":12,"outputs":[{"output_type":"stream","name":"stdout","text":["Collecting torchinfo\n"," Downloading torchinfo-1.8.0-py3-none-any.whl (23 kB)\n","Installing collected packages: torchinfo\n","Successfully installed torchinfo-1.8.0\n"]},{"output_type":"execute_result","data":{"text/plain":["==========================================================================================\n","Layer (type:depth-idx) Output Shape Param #\n","==========================================================================================\n","ModelCNN_MNIST [1, 10] --\n","├─Sequential: 1-1 [1, 10, 14, 14] --\n","│ └─Conv2d: 2-1 [1, 10, 28, 28] 100\n","│ └─ReLU: 2-2 [1, 10, 28, 28] --\n","│ └─Conv2d: 2-3 [1, 10, 28, 28] 910\n","│ └─ReLU: 2-4 [1, 10, 28, 28] --\n","│ └─MaxPool2d: 2-5 [1, 10, 14, 14] --\n","├─Sequential: 1-2 [1, 10, 7, 7] --\n","│ └─Conv2d: 2-6 [1, 10, 14, 14] 910\n","│ └─ReLU: 2-7 [1, 10, 14, 14] --\n","│ └─Conv2d: 2-8 [1, 10, 14, 14] 910\n","│ └─ReLU: 2-9 [1, 10, 14, 14] --\n","│ └─MaxPool2d: 2-10 [1, 10, 7, 7] --\n","├─Sequential: 1-3 [1, 10] --\n","│ └─Flatten: 2-11 [1, 490] --\n","│ └─Linear: 2-12 [1, 10] 4,910\n","==========================================================================================\n","Total params: 7,740\n","Trainable params: 7,740\n","Non-trainable params: 0\n","Total mult-adds (M): 1.15\n","==========================================================================================\n","Input size (MB): 0.00\n","Forward/backward pass size (MB): 0.16\n","Params size (MB): 0.03\n","Estimated Total Size (MB): 0.19\n","=========================================================================================="]},"metadata":{},"execution_count":12}]},{"cell_type":"markdown","source":["### 3.3 Create train and test loop functions"],"metadata":{"id":"1xHq1ZU4UOyG"}},{"cell_type":"code","source":["def train_step(model: torch.nn.Module,\n"," dataloader: torch.utils.data.DataLoader,\n"," loss_fn: torch.nn.Module,\n"," optimizer: torch.optim.Optimizer):\n"," # Put model in train mode\n"," model.train()\n","\n"," # Setup train loss and train accuracy values\n"," train_loss, train_acc = 0, 0\n","\n"," # Loop through data loader data batches\n"," for batch, (X, y) in enumerate(dataloader):\n"," # Send data to target device\n"," X, y = X.to(device), y.to(device)\n"," # print(\"Train - X:\", X.shape, \"y:\", y.shape)\n","\n"," # 1. Forward pass\n"," y_pred = model(X)\n","\n"," # 2. Calculate and accumulate loss\n"," loss = loss_fn(y_pred, y)\n"," train_loss += loss.item()\n","\n"," # 3. Optimizer zero grad\n"," optimizer.zero_grad()\n","\n"," # 4. Loss backward\n"," loss.backward()\n","\n"," # 5. Optimizer step\n"," optimizer.step()\n","\n"," # Calculate and accumulate accuracy metric across all batches\n"," y_pred_class = torch.argmax(torch.softmax(y_pred, dim=1), dim=1)\n"," train_acc += (y_pred_class == y).sum().item()/len(y_pred)\n","\n"," # Adjust metrics to get average loss and accuracy per batch\n"," train_loss = train_loss / len(dataloader)\n"," train_acc = train_acc / len(dataloader)\n"," return train_loss, train_acc"],"metadata":{"id":"eXGJEVq8LEra","executionInfo":{"status":"ok","timestamp":1704393124106,"user_tz":-60,"elapsed":9,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}}},"execution_count":13,"outputs":[]},{"cell_type":"code","source":["def test_step(model: torch.nn.Module,\n"," dataloader: torch.utils.data.DataLoader,\n"," loss_fn: torch.nn.Module):\n"," # Put model in eval mode\n"," model.eval()\n","\n"," # Setup test loss and test accuracy values\n"," test_loss, test_acc = 0, 0\n","\n"," # Turn on inference context manager\n"," with torch.inference_mode():\n"," # Loop through DataLoader batches\n"," for batch, (X, y) in enumerate(dataloader):\n"," # Send data to target device\n"," X, y = X.to(device), y.to(device)\n"," # print(\"Test - X:\", X.shape, \"y:\", y.shape)\n","\n"," # 1. Forward pass\n"," test_pred_logits = model(X)\n","\n"," # 2. Calculate and accumulate loss\n"," loss = loss_fn(test_pred_logits, y)\n"," test_loss += loss.item()\n","\n"," # Calculate and accumulate accuracy\n"," test_pred_labels = test_pred_logits.argmax(dim=1)\n"," test_acc += ((test_pred_labels == y).sum().item()/len(test_pred_labels))\n","\n"," # Adjust metrics to get average loss and accuracy per batch\n"," test_loss = test_loss / len(dataloader)\n"," test_acc = test_acc / len(dataloader)\n"," return test_loss, test_acc"],"metadata":{"id":"hgfKLvRMUu2r","executionInfo":{"status":"ok","timestamp":1704393124107,"user_tz":-60,"elapsed":8,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}}},"execution_count":14,"outputs":[]},{"cell_type":"markdown","source":["### 3.4 Create a `train()` function to combine `train_step()` and `test_step()`"],"metadata":{"id":"2WqhJHRvUz-S"}},{"cell_type":"code","source":["from tqdm.auto import tqdm\n","\n","# 1. Take in various parameters required for training and test steps\n","def train(model: torch.nn.Module,\n"," train_dataloader: torch.utils.data.DataLoader,\n"," test_dataloader: torch.utils.data.DataLoader,\n"," optimizer: torch.optim.Optimizer,\n"," loss_fn: torch.nn.Module = nn.CrossEntropyLoss(),\n"," epochs: int = 5):\n","\n"," # 2. Create empty results dictionary\n"," results = {\"train_loss\": [],\n"," \"train_acc\": [],\n"," \"test_loss\": [],\n"," \"test_acc\": []\n"," }\n","\n"," # 3. Loop through training and testing steps for a number of epochs\n"," for epoch in tqdm(range(epochs)):\n"," train_loss, train_acc = train_step(model=model,\n"," dataloader=train_dataloader,\n"," loss_fn=loss_fn,\n"," optimizer=optimizer)\n"," test_loss, test_acc = test_step(model=model,\n"," dataloader=test_dataloader,\n"," loss_fn=loss_fn)\n","\n"," # 4. Print out what's happening\n"," print(\n"," f\"Epoch: {epoch+1} | \"\n"," f\"train_loss: {train_loss:.4f} | \"\n"," f\"train_acc: {train_acc:.4f} | \"\n"," f\"test_loss: {test_loss:.4f} | \"\n"," f\"test_acc: {test_acc:.4f}\"\n"," )\n","\n"," # 5. Update results dictionary\n"," results[\"train_loss\"].append(train_loss)\n"," results[\"train_acc\"].append(train_acc)\n"," results[\"test_loss\"].append(test_loss)\n"," results[\"test_acc\"].append(test_acc)\n","\n"," # 6. Return the filled results at the end of the epochs\n"," return results"],"metadata":{"id":"VWl47GOjM0Nt","executionInfo":{"status":"ok","timestamp":1704393124107,"user_tz":-60,"elapsed":8,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}}},"execution_count":15,"outputs":[]},{"cell_type":"code","source":["# Set random seeds\n","torch.manual_seed(42)\n","torch.cuda.manual_seed(42)\n","\n","# Set number of epochs\n","NUM_EPOCHS = 5\n","\n","# Recreate an instance of TinyVGG\n","# model = ModelCNN_MNIST(input_shape=1, # number of color channels\n","# hidden_units=10,\n","# output_shape=len(train_data.classes)).to(device)\n","\n","# Setup loss function and optimizer\n","loss_fn = nn.CrossEntropyLoss()\n","optimizer = torch.optim.Adam(params=model.parameters(), lr=0.001)\n","\n","# Start the timer\n","from timeit import default_timer as timer\n","start_time = timer()\n","# Train model\n","model_0_results = train(model=model,\n"," train_dataloader=train_dataloader,\n"," test_dataloader=test_dataloader,\n"," optimizer=optimizer,\n"," loss_fn=loss_fn,\n"," epochs=NUM_EPOCHS)\n","\n","# End the timer and print out how long it took\n","end_time = timer()\n","print(f\"Total training time: {end_time-start_time:.3f} seconds\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":153,"referenced_widgets":["c75d8e844ff4433381ac4d67de2cc7e8","48c91576439b40508f8a2c02ca53c1d2","743c72c11eac4f8d9ada23b5deddcc74","5be8455fc011498ea7488f29fd7b3dac","276e1c441e9142b1b1b134c88577399f","310b3e2e6d5f4e8fae839eb1f111ccee","2f35fa47682944f7a50cf641524cec78","c5826b26f28849c684f2a8ae46dff071","68f3007b136d445bbf6162e083c95e81","79eedc6530fd4da79e1fcd95b22a309e","1d11b7494fd1494198a15d9ede6b1030"]},"id":"O9kN_ot_VFsO","executionInfo":{"status":"ok","timestamp":1704393438391,"user_tz":-60,"elapsed":313782,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}},"outputId":"ac75f687-2d47-43c1-9fcb-a129d628451a"},"execution_count":16,"outputs":[{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/5 [00:00 prediction probability)\n"," pred_prob = torch.softmax(pred_logit.squeeze(), dim=0) # note: perform softmax on the \"logits\" dimension, not \"batch\" dimension (in this case we have a batch size of 1, so can perform on dim=0)\n","\n"," # Get pred_prob off GPU for further calculations\n"," pred_probs.append(pred_prob.cpu())\n","\n"," # Stack the pred_probs to turn list into a tensor\n"," return torch.stack(pred_probs)"],"metadata":{"id":"DDVCIyBSOra7","executionInfo":{"status":"ok","timestamp":1704393438391,"user_tz":-60,"elapsed":15,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}}},"execution_count":17,"outputs":[]},{"cell_type":"code","source":["import random\n","test_samples = []\n","test_labels = []\n","for sample, label in random.sample(list(test_data), k=9):\n"," test_samples.append(sample)\n"," test_labels.append(label)\n","\n","# view the first sample shape\n","test_samples[0].shape"],"metadata":{"id":"2TB1APAkOrVj","executionInfo":{"status":"ok","timestamp":1704393439952,"user_tz":-60,"elapsed":1572,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}},"colab":{"base_uri":"https://localhost:8080/"},"outputId":"447246cf-0d42-45ab-ec8c-e03d433d594d"},"execution_count":18,"outputs":[{"output_type":"execute_result","data":{"text/plain":["torch.Size([1, 28, 28])"]},"metadata":{},"execution_count":18}]},{"cell_type":"code","source":["plt.imshow(test_samples[0].squeeze(), cmap=\"gray\")\n","plt.title(class_names[test_labels[0]])\n","plt.axis(False);"],"metadata":{"id":"9-FeN0uxPQfF","executionInfo":{"status":"ok","timestamp":1704393439952,"user_tz":-60,"elapsed":12,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}},"colab":{"base_uri":"https://localhost:8080/","height":428},"outputId":"213bb1a4-f443-4c10-c40e-ece9af827f93"},"execution_count":19,"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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\n"},"metadata":{}}]},{"cell_type":"code","source":["# make predictions\n","pred_probs = make_predictions(model=model,\n"," data=test_samples)\n","\n","# convert prediction probabilities to labels\n","pred_classes = pred_probs.argmax(dim=1)\n","print(f\"Predictions:\\n{pred_classes}\\nTruth:\\n{test_labels}\")"],"metadata":{"id":"WaeVSP9IPVzI","executionInfo":{"status":"ok","timestamp":1704393440255,"user_tz":-60,"elapsed":310,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}},"colab":{"base_uri":"https://localhost:8080/"},"outputId":"bc45d547-2581-4ac4-b5ce-67969ba9f8c4"},"execution_count":20,"outputs":[{"output_type":"stream","name":"stdout","text":["Predictions:\n","tensor([4, 8, 6, 0, 1, 0, 4, 3, 2])\n","Truth:\n","[4, 8, 6, 0, 1, 0, 4, 3, 2]\n"]}]},{"cell_type":"code","source":["import random\n","test_samples = []\n","test_labels = []\n","for sample, label in random.sample(list(test_data), k=9):\n"," test_samples.append(sample)\n"," test_labels.append(label)\n","\n","# make predictions\n","pred_probs = make_predictions(model=model,\n"," data=test_samples)\n","\n","# convert prediction probabilities to labels\n","pred_classes = pred_probs.argmax(dim=1)\n","print(f\"Predictions:\\n{pred_classes}\\nTruth:\\n{test_labels}\")\n","\n","# plot predictions\n","plt.figure(figsize=(6, 6))\n","nrows, ncols = 3, 3\n","for i, sample in enumerate(test_samples):\n"," # create subplot\n"," plt.subplot(nrows, ncols, i+1)\n"," # plot\n"," plt.imshow(sample.squeeze(), cmap=\"gray\")\n"," pred_label = class_names[pred_classes[i]]\n"," # get the truth label\n"," truth_label = class_names[test_labels[i]]\n"," # create a title\n"," title_text = f\"Pred: {pred_label} | Truth: {truth_label}\"\n","\n"," if pred_label == truth_label:\n"," plt.title(title_text, fontsize=6, c=\"g\")\n"," else:\n"," plt.title(title_text, fontsize=6, c=\"r\")\n"," plt.axis(False);"],"metadata":{"id":"SM7xOaAmPeG7","executionInfo":{"status":"ok","timestamp":1704393442403,"user_tz":-60,"elapsed":2152,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}},"colab":{"base_uri":"https://localhost:8080/","height":583},"outputId":"c42b1026-4e90-494f-ea45-5986246e97a5"},"execution_count":21,"outputs":[{"output_type":"stream","name":"stdout","text":["Predictions:\n","tensor([0, 5, 7, 3, 2, 6, 3, 1, 6])\n","Truth:\n","[0, 5, 7, 3, 2, 6, 3, 1, 6]\n"]},{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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vGZU2xptMff4XHRe0xlVSlQxTQisU7YOem3shc9byh9WADR/Q34S8wSd13ZGMftiKFyoMFZ01fd7XWr61OuDqvOqmiYvvVHhDdQqUwseRg/Y2tiiXY12+NLty0ztI7dkxVhLFskICA3AvI7zdO93ydkl2HppKxKTEzGs0bBU+2Fna4emlZoi8H4gqpeuDgDpfkZklWGNh2Gw32AsO7cMjvaOAICGFRri/377P/TZ1Ee66Hgptd+QD9w4AK9XvTI0ia77hu6IS4xDYnIiFr2zCA3KN8DBkIPw9PWEDWwwsOFAvNf0vWz/N2oj0rocI8nL/+RpWONhudoPIuDFzP6MznImyi6hEaGYHjAdxu7G3O5KnpT3/7sWIiKifIBXyERERArgFTIREZECWJCJiIgUwIJMRESkABZkIiIiBbAgExERKUD3jUEs7+RDlFJOT9bneKS0cDySSvSOR14hExERKYAFmYiISAEsyERERApgQSYiIlIACzIREZECWJCJiIgUwIJMRESkABZkIiIiBbAgExERKYAFmYiISAEsyERERApgQSYiIlIACzIREZECWJCJiIgUwIJMRESkABZkIiIiBbAgExERKYAFmYiISAGFcrsDecHgwYOlrG3btlI2aNAgXe3Z2pp/D1q8eLG0zowZM6TswYMHUiaE0LVPIiJSG6+QiYiIFMCCTEREpAAWZCIiIgWwIBMRESnARuicFWRjY5PdfVFClSpVpMzb21vKrl27JmUuLi5StnnzZimznBCmNWlMy8iRI6XMx8dH17bZLacnlxWU8ajFYDBI2XvvvSdllStXljJPT89029++fbuUjRo1SsrCwsLSbSu3cDySSvSOR14hExERKYAFmYiISAEsyERERApgQSYiIlIAJ3VZaNq0qZTVqlVLyvbs2SNlT58+1bWPmjVrmi1PmjRJWmfIkCFSdvHiRSlr166dlGnd0Su7cRJN5lWvXl3Kvv76aynTmphVoUIFKdM6R3rep8TERCnz8PCQspMnT6bbVm7heMw4e3t7s+UNGzZI64wZM0bKPvnkEymLioqSsp9//lnKnj17lpEu5lmc1EVERJSHsCATEREpgAWZiIhIASzIRERECihQk7oKFTJ/2mS5cuWkdbQmLWhNurp3756Uad3haM6cOVIWGhpqtmw5yQsAjh49KmVa/dWa6NWqVSspy+7JE5xE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9NKaxJSVT2PKjfafP38uZR9//LGUqXITEC28QiYiIlIACzIREZECWJCJiIgUwIJMRESkABuh85f2rL5TTH7k7u4uZTt27JAyy3NZt25daZ179+5lXcdyQFZO2NAjK8ej1iSPgQMHZus+9dq2bZuUPXjwQMo6d+4sZS4uLtnRpTRNnDhRyubMmZPj/cjL41GLp6enlG3YsEHKypQpo6s9rf5m5TnL7vYTEhKk7MMPP5QyHx+fLNtnZug9dl4hExERKYAFmYiISAEsyERERApgQSYiIlJAgZrU9cEHH5gtb926VVonLCxMV1tad8nZs2ePlDVv3lzKvv76a7PlqVOn6tqnyvLbJBqtRwtOmzZNykqWLCllWnfIyo8iIyOl7O2335ays2fP5kR3zOS38ailevXqUjZ27Fgp8/DwkDJXV1cpU3VSV1BQkJT1799f13qq4KQuIiKiPIQFmYiISAEsyERERApgQSYiIlJAgZrUZTlhq127dtI6gYGBUlalShUpW79+vZS1bt1aygICAqRsyJAhZst3796V1slrCsIkGi2Wjy4EgP3790uZk5OTlNnb25stq3JMWrQe+ThhwgQpW7BgQU50J10FdTxqKVasmJS98847UmY50atatWrSOr1799a1T72Tum7evCllmzdvNlv+/vvvpXUePnyoqx+q4KQuIiKiPIQFmYiISAEsyERERApgQSYiIlJAgZrUZXlHrJEjR0rraE2wqlOnjpQ5OjpK2cGDB6Xs888/l7Lg4OA0+5kXcRJNxr3//vtmy+XKldO13YgRI6TsyJEjUnb16lWr+hUdHS1lP/30k1Vt5RaOR1IJJ3URERHlISzIRERECmBBJiIiUgALMhERkQIK1KQuy0cm7tixQ1pH625bISEhUvaf//xHyizvMFOQcBINqYTjkVTCSV1ERER5CAsyERGRAliQiYiIFFCgfkOm7MPf7EglHI+kEv6GTERElIewIBMRESmABZmIiEgBLMhEREQKYEEmIiJSAAsyERGRAliQiYiIFMCCTEREpAAWZCIiIgWwIBMRESmABZmIiEgBLMhEREQKYEEmIiJSAAsyERGRAnQ/fpGIiIiyD6+QiYiIFMCCTEREpAAWZCIiIgWwIBMRESmABZmIiEgBLMhEREQKYEEmIiJSAAsyERGRAliQiYiIFMCCTEREpAAWZCIiIgVkuCCH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UMqCgoLMlt3c3KR1HB0dpezvv//OQA8LpoI6HrObs7OzlD148EDKLMc2oP3IWq072K1Zs8bK3qmLk7qIiIjyEBZkIiIiBbAgExERKYAFmYiISAFKT+pycnKSMq0JM1qTYbJyUofWsT9+/FjKFi5cKGXffvutlMXExGRNxxRSUCfRWE7QA4Aff/xRys6fPy9lPXv2NFu+efNm1nWsgCuo45HUxEldREREeQgLMhERkQJYkImIiBTAgkxERKSAQrndgbQ8efJEyt555x0pK168uJRp3eWrc+fOZstad+o6c+aMlH311VdSduLECSnTmuhF+Ufv3r2t3vbLL7+UMk7iIqKUeIVMRESkABZkIiIiBbAgExERKUDpG4NQ3sEbMZBKOB5JJbwxCBERUR7CgkxERKQAFmQiIiIFsCATEREpgAWZiIhIASzIRERECmBBJiIiUgALMhERkQJYkImIiBTAgkxERKQAFmQiIiIFsCATEREpgAWZiIhIASzIRERECtD9+EUiIiLKPrxCJiIiUgALMhERkQJYkImIiBTAgkxERKQAFmQiIiIFsCATEREpgAWZiIhIASzIRERECmBBJiIiUsD/A+exyHQv0tIlAAAAAElFTkSuQmCC\n"},"metadata":{}}]},{"cell_type":"code","source":["# See if torchmetrics exists, if not, install it\n","try:\n"," import torchmetrics, mlxtend\n"," print(f\"mlxtend version: {mlxtend.__version__}\")\n"," assert int(mlxtend.__version__.split(\".\")[1]) >= 19, \"mlxtend verison should be 0.19.0 or higher\"\n","except:\n"," !pip install -q torchmetrics -U mlxtend # <- Note: If you're using Google Colab, this may require restarting the runtime\n"," import torchmetrics, mlxtend\n"," print(f\"mlxtend version: {mlxtend.__version__}\")"],"metadata":{"id":"Udo3Bl8aQwSd","executionInfo":{"status":"ok","timestamp":1704393465071,"user_tz":-60,"elapsed":22682,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}},"colab":{"base_uri":"https://localhost:8080/"},"outputId":"a5b84a10-12b4-41f4-f998-941fd75b8534"},"execution_count":22,"outputs":[{"output_type":"stream","name":"stdout","text":["\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m806.1/806.1 kB\u001b[0m \u001b[31m6.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.4/1.4 MB\u001b[0m \u001b[31m13.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hmlxtend version: 0.23.0\n"]}]},{"cell_type":"code","source":["# Make predictions across all test data\n","from tqdm.auto import tqdm\n","model.eval()\n","y_preds = []\n","with torch.inference_mode():\n"," for batch, (X, y) in tqdm(enumerate(test_dataloader)):\n"," # Make sure data on right device\n"," X, y = X.to(device), y.to(device)\n"," # Forward pass\n"," y_pred_logits = model(X)\n"," # Logits -> Pred probs -> Pred label\n"," y_pred_labels = torch.argmax(torch.softmax(y_pred_logits, dim=1), dim=1)\n"," # Append the labels to the preds list\n"," y_preds.append(y_pred_labels)\n"," y_preds=torch.cat(y_preds).cpu()\n","len(y_preds)"],"metadata":{"id":"8dT34gtuQ5z8","executionInfo":{"status":"ok","timestamp":1704393469503,"user_tz":-60,"elapsed":4450,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}},"colab":{"base_uri":"https://localhost:8080/","height":66,"referenced_widgets":["77492f4e4d4c482b814998baf362355a","4ad4f24d40da40a8b14a0a189a3d6502","6f8a3dbabac643189f0e24b72d5a4976","ae2c828fa789467ca09f50b56043d22a","68a1a01eb9c7477186f8d7f8be7fbc71","a32d241a669f4e39b31ca83d1c7c71d1","25831c4f00c948c2a9eec5918022aaab","7522f04303ce4da493408e64b43798e9","f6cd1e46f62446a5bd49490ddd5a352e","0478d88c5f3a4baaa849b15c44469fe4","132e358f86a94f60ae1c429c0e8bae12"]},"outputId":"eda1caaf-fd6e-49ca-ba34-c1c1214b6b81"},"execution_count":23,"outputs":[{"output_type":"display_data","data":{"text/plain":["0it [00:00, ?it/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"77492f4e4d4c482b814998baf362355a"}},"metadata":{}},{"output_type":"execute_result","data":{"text/plain":["10000"]},"metadata":{},"execution_count":23}]},{"cell_type":"code","source":["from torchmetrics import ConfusionMatrix\n","from mlxtend.plotting import plot_confusion_matrix\n","\n","# Setup confusion matrix\n","confmat = ConfusionMatrix(task=\"multiclass\", num_classes=len(class_names))\n","confmat_tensor = confmat(preds=y_preds,\n"," target=test_data.targets)\n","\n","# Plot the confusion matrix\n","fix, ax = plot_confusion_matrix(\n"," conf_mat=confmat_tensor.numpy(),\n"," class_names=class_names,\n"," figsize=(8, 5)\n",")\n"],"metadata":{"id":"K-rocs40Q5vL","executionInfo":{"status":"ok","timestamp":1704393472920,"user_tz":-60,"elapsed":3424,"user":{"displayName":"Dilshod Durdiev","userId":"07300884341727331244"}},"colab":{"base_uri":"https://localhost:8080/","height":506},"outputId":"a7ff2b2c-0c72-43fd-a5cd-f968ac24e84a"},"execution_count":24,"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"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\n"},"metadata":{}}]}]} \ No newline at end of file