{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"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":"2023-10-23T20:22:00.957036Z","iopub.execute_input":"2023-10-23T20:22:00.957327Z","iopub.status.idle":"2023-10-23T20:22:01.415591Z","shell.execute_reply.started":"2023-10-23T20:22:00.957301Z","shell.execute_reply":"2023-10-23T20:22:01.414656Z"},"trusted":true},"execution_count":1,"outputs":[{"name":"stdout","text":"/kaggle/input/tpu-getting-started/sample_submission.csv\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/09-224x224-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/14-224x224-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/01-224x224-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/13-224x224-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/00-224x224-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/07-224x224-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/12-224x224-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/11-224x224-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/05-224x224-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/04-224x224-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/15-224x224-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/06-224x224-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/02-224x224-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/03-224x224-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/08-224x224-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/10-224x224-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/04-224x224-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/06-224x224-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/05-224x224-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/08-224x224-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/15-224x224-452.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/09-224x224-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/10-224x224-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/07-224x224-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/00-224x224-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/01-224x224-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/12-224x224-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/14-224x224-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/03-224x224-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/02-224x224-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/11-224x224-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/13-224x224-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/13-224x224-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/11-224x224-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/05-224x224-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/00-224x224-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/02-224x224-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/14-224x224-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/06-224x224-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/10-224x224-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/01-224x224-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/03-224x224-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/08-224x224-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/09-224x224-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/15-224x224-783.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/07-224x224-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/04-224x224-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/12-224x224-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/val/05-331x331-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/val/08-331x331-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/val/01-331x331-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/val/03-331x331-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/val/13-331x331-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/val/10-331x331-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/val/07-331x331-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/val/04-331x331-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/val/14-331x331-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/val/15-331x331-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/val/12-331x331-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/val/11-331x331-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/val/02-331x331-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/val/00-331x331-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/val/06-331x331-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/val/09-331x331-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/test/14-331x331-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/test/13-331x331-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/test/03-331x331-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/test/05-331x331-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/test/09-331x331-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/test/04-331x331-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/test/01-331x331-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/test/11-331x331-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/test/07-331x331-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/test/08-331x331-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/test/00-331x331-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/test/02-331x331-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/test/15-331x331-452.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/test/10-331x331-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/test/12-331x331-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/test/06-331x331-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/train/15-331x331-783.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/train/02-331x331-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/train/14-331x331-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/train/04-331x331-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/train/08-331x331-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/train/12-331x331-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/train/03-331x331-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/train/05-331x331-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/train/00-331x331-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/train/06-331x331-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/train/07-331x331-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/train/09-331x331-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/train/10-331x331-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/train/01-331x331-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/train/13-331x331-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-331x331/train/11-331x331-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/val/05-192x192-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/val/07-192x192-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/val/15-192x192-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/val/08-192x192-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/val/06-192x192-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/val/00-192x192-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/val/11-192x192-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/val/04-192x192-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/val/09-192x192-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/val/02-192x192-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/val/10-192x192-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/val/12-192x192-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/val/14-192x192-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/val/13-192x192-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/val/03-192x192-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/val/01-192x192-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/test/06-192x192-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/test/12-192x192-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/test/08-192x192-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/test/07-192x192-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/test/00-192x192-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/test/03-192x192-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/test/13-192x192-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/test/05-192x192-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/test/01-192x192-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/test/14-192x192-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/test/10-192x192-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/test/04-192x192-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/test/15-192x192-452.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/test/09-192x192-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/test/11-192x192-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/test/02-192x192-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/train/06-192x192-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/train/11-192x192-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/train/12-192x192-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/train/03-192x192-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/train/09-192x192-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/train/08-192x192-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/train/04-192x192-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/train/05-192x192-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/train/14-192x192-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/train/07-192x192-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/train/13-192x192-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/train/15-192x192-783.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/train/02-192x192-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/train/10-192x192-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/train/01-192x192-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-192x192/train/00-192x192-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/val/02-512x512-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/val/12-512x512-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/val/09-512x512-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/val/00-512x512-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/val/13-512x512-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/val/03-512x512-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/val/14-512x512-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/val/04-512x512-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/val/10-512x512-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/val/05-512x512-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/val/08-512x512-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/val/11-512x512-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/val/07-512x512-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/val/15-512x512-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/val/01-512x512-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/val/06-512x512-232.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/test/15-512x512-452.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/test/02-512x512-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/test/03-512x512-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/test/01-512x512-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/test/00-512x512-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/test/13-512x512-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/test/07-512x512-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/test/10-512x512-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/test/04-512x512-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/test/14-512x512-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/test/09-512x512-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/test/08-512x512-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/test/11-512x512-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/test/05-512x512-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/test/06-512x512-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/test/12-512x512-462.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/train/05-512x512-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/train/00-512x512-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/train/11-512x512-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/train/15-512x512-783.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/train/10-512x512-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/train/12-512x512-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/train/01-512x512-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/train/14-512x512-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/train/13-512x512-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/train/07-512x512-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/train/03-512x512-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/train/06-512x512-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/train/08-512x512-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/train/02-512x512-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/train/09-512x512-798.tfrec\n/kaggle/input/tpu-getting-started/tfrecords-jpeg-512x512/train/04-512x512-798.tfrec\n","output_type":"stream"}]},{"cell_type":"code","source":"import tensorflow as tf\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nimport torch.optim as optim\nfrom torch.utils.data import DataLoader\nfrom matplotlib import pyplot as plt\nimport os\nimport numpy as np\nfrom torch.utils.data import Dataset\nfrom PIL import Image\nimport io","metadata":{"execution":{"iopub.status.busy":"2023-10-23T20:22:01.417101Z","iopub.execute_input":"2023-10-23T20:22:01.417469Z","iopub.status.idle":"2023-10-23T20:22:14.046426Z","shell.execute_reply.started":"2023-10-23T20:22:01.417442Z","shell.execute_reply":"2023-10-23T20:22:14.045455Z"},"trusted":true},"execution_count":2,"outputs":[{"name":"stderr","text":"/opt/conda/lib/python3.10/site-packages/scipy/__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.5\n  warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion}\"\n","output_type":"stream"}]},{"cell_type":"code","source":"def load_image_from_bytes(image_bytes):\n        image = Image.open(io.BytesIO(image_bytes))\n        image = image.convert('RGB')\n        image = torch.from_numpy(np.array(image).astype(np.float32)/255)\n        return image","metadata":{"execution":{"iopub.status.busy":"2023-10-23T20:22:14.047672Z","iopub.execute_input":"2023-10-23T20:22:14.048337Z","iopub.status.idle":"2023-10-23T20:22:14.05368Z","shell.execute_reply.started":"2023-10-23T20:22:14.0483Z","shell.execute_reply":"2023-10-23T20:22:14.052752Z"},"trusted":true},"execution_count":3,"outputs":[]},{"cell_type":"code","source":"class TFRecordDataset(Dataset):\n\n    def __init__(self, tfrecord_files):\n        self.record_files = tfrecord_files\n        self.records = []\n        for f in self.record_files:\n            self.records.extend(tf.data.TFRecordDataset(f))\n\n    def __getitem__(self, index):\n        record = self.records[index]\n        \n        feature_desc = {\n          'image': tf.io.FixedLenFeature([], tf.string),\n          'label': tf.io.FixedLenFeature([], tf.int64, default_value=0) \n        }\n        example = tf.io.parse_single_example(record, feature_desc)\n        \n        image = load_image_from_bytes(example['image'].numpy())\n        label = example['label'].numpy()\n        \n        return {'image': image, 'label': label}\n\n    def __len__(self):\n        return len(self.records)","metadata":{"execution":{"iopub.status.busy":"2023-10-23T20:22:14.05641Z","iopub.execute_input":"2023-10-23T20:22:14.05684Z","iopub.status.idle":"2023-10-23T20:22:14.065231Z","shell.execute_reply.started":"2023-10-23T20:22:14.056806Z","shell.execute_reply":"2023-10-23T20:22:14.064256Z"},"trusted":true},"execution_count":4,"outputs":[]},{"cell_type":"code","source":"train_dir = '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train'\nval_dir = '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val'\ntest_dir = '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test'","metadata":{"execution":{"iopub.status.busy":"2023-10-23T20:22:14.066258Z","iopub.execute_input":"2023-10-23T20:22:14.066574Z","iopub.status.idle":"2023-10-23T20:22:14.079658Z","shell.execute_reply.started":"2023-10-23T20:22:14.06654Z","shell.execute_reply":"2023-10-23T20:22:14.078792Z"},"trusted":true},"execution_count":5,"outputs":[]},{"cell_type":"code","source":"train_dataset = []\n\nfor filename in os.listdir(train_dir):\n    if os.path.isfile(os.path.join(train_dir, filename)):\n        train_dataset.append(train_dir+\"/\"+filename)\n\nprint(train_dataset)","metadata":{"execution":{"iopub.status.busy":"2023-10-23T20:22:14.080715Z","iopub.execute_input":"2023-10-23T20:22:14.08106Z","iopub.status.idle":"2023-10-23T20:22:14.100832Z","shell.execute_reply.started":"2023-10-23T20:22:14.081025Z","shell.execute_reply":"2023-10-23T20:22:14.099961Z"},"trusted":true},"execution_count":6,"outputs":[{"name":"stdout","text":"['/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/13-224x224-798.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/11-224x224-798.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/05-224x224-798.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/00-224x224-798.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/02-224x224-798.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/14-224x224-798.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/06-224x224-798.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/10-224x224-798.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/01-224x224-798.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/03-224x224-798.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/08-224x224-798.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/09-224x224-798.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/15-224x224-783.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/07-224x224-798.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/04-224x224-798.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/train/12-224x224-798.tfrec']\n","output_type":"stream"}]},{"cell_type":"code","source":"val_dataset = []\n\nfor filename in os.listdir(val_dir):\n    if os.path.isfile(os.path.join(val_dir, filename)):\n        val_dataset.append(val_dir+\"/\"+filename)\n\nprint(val_dataset)","metadata":{"execution":{"iopub.status.busy":"2023-10-23T20:22:14.101906Z","iopub.execute_input":"2023-10-23T20:22:14.102326Z","iopub.status.idle":"2023-10-23T20:22:14.115053Z","shell.execute_reply.started":"2023-10-23T20:22:14.102288Z","shell.execute_reply":"2023-10-23T20:22:14.114246Z"},"trusted":true},"execution_count":7,"outputs":[{"name":"stdout","text":"['/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/09-224x224-232.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/14-224x224-232.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/01-224x224-232.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/13-224x224-232.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/00-224x224-232.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/07-224x224-232.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/12-224x224-232.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/11-224x224-232.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/05-224x224-232.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/04-224x224-232.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/15-224x224-232.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/06-224x224-232.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/02-224x224-232.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/03-224x224-232.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/08-224x224-232.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/val/10-224x224-232.tfrec']\n","output_type":"stream"}]},{"cell_type":"code","source":"test_dataset = []\n\nfor filename in os.listdir(test_dir):\n    if os.path.isfile(os.path.join(test_dir, filename)):\n        test_dataset.append(test_dir+\"/\"+filename)\n\nprint(test_dataset)","metadata":{"execution":{"iopub.status.busy":"2023-10-23T20:22:14.115946Z","iopub.execute_input":"2023-10-23T20:22:14.116207Z","iopub.status.idle":"2023-10-23T20:22:14.138346Z","shell.execute_reply.started":"2023-10-23T20:22:14.116166Z","shell.execute_reply":"2023-10-23T20:22:14.137513Z"},"trusted":true},"execution_count":8,"outputs":[{"name":"stdout","text":"['/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/04-224x224-462.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/06-224x224-462.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/05-224x224-462.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/08-224x224-462.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/15-224x224-452.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/09-224x224-462.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/10-224x224-462.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/07-224x224-462.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/00-224x224-462.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/01-224x224-462.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/12-224x224-462.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/14-224x224-462.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/03-224x224-462.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/02-224x224-462.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/11-224x224-462.tfrec', '/kaggle/input/tpu-getting-started/tfrecords-jpeg-224x224/test/13-224x224-462.tfrec']\n","output_type":"stream"}]},{"cell_type":"code","source":"# Hyperparameters\nbatch_size = 32\nnum_classes = 104\nlr = 3e-4\nimage_size = 224\nEpochs = 20\ndevice = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\nprint(\"Current Device =\", device)","metadata":{"execution":{"iopub.status.busy":"2023-10-23T20:22:14.139274Z","iopub.execute_input":"2023-10-23T20:22:14.139506Z","iopub.status.idle":"2023-10-23T20:22:14.217908Z","shell.execute_reply.started":"2023-10-23T20:22:14.139484Z","shell.execute_reply":"2023-10-23T20:22:14.216955Z"},"trusted":true},"execution_count":9,"outputs":[{"name":"stdout","text":"Current Device = cuda\n","output_type":"stream"}]},{"cell_type":"code","source":"train = TFRecordDataset(train_dataset)\ntrain_loader = DataLoader(train, batch_size)\n\nval = TFRecordDataset(val_dataset)\nval_loader = DataLoader(val, batch_size) \n\ntest = TFRecordDataset(test_dataset)\ntest_loader = DataLoader(test, batch_size)","metadata":{"execution":{"iopub.status.busy":"2023-10-23T20:22:14.222212Z","iopub.execute_input":"2023-10-23T20:22:14.223108Z","iopub.status.idle":"2023-10-23T20:22:31.183914Z","shell.execute_reply.started":"2023-10-23T20:22:14.223073Z","shell.execute_reply":"2023-10-23T20:22:31.18296Z"},"trusted":true},"execution_count":10,"outputs":[]},{"cell_type":"code","source":"CLASSES = ['pink primrose',    'hard-leaved pocket orchid', 'canterbury bells', 'sweet pea',     'wild geranium',     'tiger lily',           'moon orchid',              'bird of paradise', 'monkshood',        'globe thistle',         # 00 - 09\n           'snapdragon',       \"colt's foot\",               'king protea',      'spear thistle', 'yellow iris',       'globe-flower',         'purple coneflower',        'peruvian lily',    'balloon flower',   'giant white arum lily', # 10 - 19\n           'fire lily',        'pincushion flower',         'fritillary',       'red ginger',    'grape hyacinth',    'corn poppy',           'prince of wales feathers', 'stemless gentian', 'artichoke',        'sweet william',         # 20 - 29\n           'carnation',        'garden phlox',              'love in the mist', 'cosmos',        'alpine sea holly',  'ruby-lipped cattleya', 'cape flower',              'great masterwort', 'siam tulip',       'lenten rose',           # 30 - 39\n           'barberton daisy',  'daffodil',                  'sword lily',       'poinsettia',    'bolero deep blue',  'wallflower',           'marigold',                 'buttercup',        'daisy',            'common dandelion',      # 40 - 49\n           'petunia',          'wild pansy',                'primula',          'sunflower',     'lilac hibiscus',    'bishop of llandaff',   'gaura',                    'geranium',         'orange dahlia',    'pink-yellow dahlia',    # 50 - 59\n           'cautleya spicata', 'japanese anemone',          'black-eyed susan', 'silverbush',    'californian poppy', 'osteospermum',         'spring crocus',            'iris',             'windflower',       'tree poppy',            # 60 - 69\n           'gazania',          'azalea',                    'water lily',       'rose',          'thorn apple',       'morning glory',        'passion flower',           'lotus',            'toad lily',        'anthurium',             # 70 - 79\n           'frangipani',       'clematis',                  'hibiscus',         'columbine',     'desert-rose',       'tree mallow',          'magnolia',                 'cyclamen ',        'watercress',       'canna lily',            # 80 - 89\n           'hippeastrum ',     'bee balm',                  'pink quill',       'foxglove',      'bougainvillea',     'camellia',             'mallow',                   'mexican petunia',  'bromelia',         'blanket flower',        # 90 - 99\n           'trumpet creeper',  'blackberry lily',           'common tulip',     'wild rose'] \nprint(len(CLASSES))","metadata":{"execution":{"iopub.status.busy":"2023-10-23T20:22:31.185485Z","iopub.execute_input":"2023-10-23T20:22:31.185944Z","iopub.status.idle":"2023-10-23T20:22:31.195976Z","shell.execute_reply.started":"2023-10-23T20:22:31.185902Z","shell.execute_reply":"2023-10-23T20:22:31.194987Z"},"trusted":true},"execution_count":11,"outputs":[{"name":"stdout","text":"104\n","output_type":"stream"}]},{"cell_type":"code","source":"class BasicBlock(nn.Module):\n    expansion = 1\n\n    def __init__(self, in_planes, planes, stride=1):\n        super(BasicBlock, self).__init__()\n        self.conv1 = nn.Conv2d(in_planes, planes, kernel_size=3, \n                               stride=stride, padding=1, bias=False)\n        self.bn1 = nn.BatchNorm2d(planes)\n        self.conv2 = nn.Conv2d(planes, planes, kernel_size=3,\n                               stride=1, padding=1, bias=False)\n        self.bn2 = nn.BatchNorm2d(planes)\n\n        self.shortcut = nn.Sequential()\n        if stride != 1 or in_planes != self.expansion*planes:\n            self.shortcut = nn.Sequential(\n                nn.Conv2d(in_planes, self.expansion*planes,\n                          kernel_size=1, stride=stride, bias=False),\n                nn.BatchNorm2d(self.expansion*planes)\n            )\n            \n    def forward(self, x):\n        out = F.relu(self.bn1(self.conv1(x)))\n        out = self.bn2(self.conv2(out))\n        out += self.shortcut(x)\n        out = F.relu(out)\n        return out\n\n\nclass Bottleneck(nn.Module):\n    expansion = 4\n\n    def __init__(self, in_planes, planes, stride=1):\n        super(Bottleneck, self).__init__()\n        self.conv1 = nn.Conv2d(in_planes, planes, kernel_size=1, bias=False)\n        self.bn1 = nn.BatchNorm2d(planes)\n        self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, \n                               stride=stride, padding=1, bias=False)\n        self.bn2 = nn.BatchNorm2d(planes)\n        self.conv3 = nn.Conv2d(planes, self.expansion*planes, \n                               kernel_size=1, bias=False)\n        self.bn3 = nn.BatchNorm2d(self.expansion*planes)\n\n        self.shortcut = nn.Sequential()\n        if stride != 1 or in_planes != self.expansion*planes:\n            self.shortcut = nn.Sequential(\n                nn.Conv2d(in_planes, self.expansion*planes,\n                          kernel_size=1, stride=stride, bias=False),\n                nn.BatchNorm2d(self.expansion*planes)\n            )\n\n    def forward(self, x):\n        out = F.relu(self.bn1(self.conv1(x)))\n        out = F.relu(self.bn2(self.conv2(out)))\n        out = self.bn3(self.conv3(out))\n        out += self.shortcut(x)\n        out = F.relu(out)\n        return out\n\n\nclass ResNet(nn.Module):\n    def __init__(self, block, num_blocks, num_classes=10):\n        super(ResNet, self).__init__()\n        self.in_planes = 64\n\n        self.conv1 = nn.Conv2d(3, 64, kernel_size=3, \n                               stride=1, padding=1, bias=False)\n        self.bn1 = nn.BatchNorm2d(64)\n        self.layer1 = self._make_layer(block, 64, num_blocks[0], stride=1)\n        self.layer2 = self._make_layer(block, 128, num_blocks[1], stride=2)\n        self.layer3 = self._make_layer(block, 256, num_blocks[2], stride=2)\n        self.layer4 = self._make_layer(block, 512, num_blocks[3], stride=2)\n        self.linear = nn.Linear(25088*block.expansion, num_classes)\n\n    def _make_layer(self, block, planes, num_blocks, stride):\n        strides = [stride] + [1]*(num_blocks-1)\n        layers = []\n        for stride in strides:\n            layers.append(block(self.in_planes, planes, stride))\n            self.in_planes = planes * block.expansion\n        return nn.Sequential(*layers)\n\n    def forward(self, x):\n        out = F.relu(self.bn1(self.conv1(x)))\n        out = self.layer1(out)\n        out = self.layer2(out)\n        out = self.layer3(out)\n        out = self.layer4(out)\n        out = F.avg_pool2d(out, 4)\n        out = out.view(out.size(0), -1)\n        out = self.linear(out)\n        return out\n\n\ndef ResNet18(num_classes):\n    return ResNet(BasicBlock, [2,2,2,2], num_classes)\n\ndef ResNet34(num_classes):\n    return ResNet(BasicBlock, [3,4,6,3], num_classes)\n\ndef ResNet50(num_classes):\n    return ResNet(Bottleneck, [3,4,6,3], num_classes)\n\ndef ResNet101(num_classes):\n    return ResNet(Bottleneck, [3,4,23,3], num_classes)\n\ndef ResNet152(num_classes):\n    return ResNet(Bottleneck, [3,8,36,3], num_classes)","metadata":{"execution":{"iopub.status.busy":"2023-10-23T20:22:31.197265Z","iopub.execute_input":"2023-10-23T20:22:31.197592Z","iopub.status.idle":"2023-10-23T20:22:31.224139Z","shell.execute_reply.started":"2023-10-23T20:22:31.197557Z","shell.execute_reply":"2023-10-23T20:22:31.223249Z"},"trusted":true},"execution_count":12,"outputs":[]},{"cell_type":"code","source":"model = ResNet18(num_classes).to(device)","metadata":{"execution":{"iopub.status.busy":"2023-10-23T20:22:31.225407Z","iopub.execute_input":"2023-10-23T20:22:31.225758Z","iopub.status.idle":"2023-10-23T20:22:31.457946Z","shell.execute_reply.started":"2023-10-23T20:22:31.225723Z","shell.execute_reply":"2023-10-23T20:22:31.456952Z"},"trusted":true},"execution_count":13,"outputs":[]},{"cell_type":"code","source":"optimizer = optim.Adam(model.parameters(), lr)\ncriterion = nn.CrossEntropyLoss()","metadata":{"execution":{"iopub.status.busy":"2023-10-23T20:22:31.459289Z","iopub.execute_input":"2023-10-23T20:22:31.45963Z","iopub.status.idle":"2023-10-23T20:22:31.464853Z","shell.execute_reply.started":"2023-10-23T20:22:31.4596Z","shell.execute_reply":"2023-10-23T20:22:31.463781Z"},"trusted":true},"execution_count":14,"outputs":[]},{"cell_type":"code","source":"training_losses = []\nvalidation_losses = []","metadata":{"execution":{"iopub.status.busy":"2023-10-23T20:22:31.465786Z","iopub.execute_input":"2023-10-23T20:22:31.466049Z","iopub.status.idle":"2023-10-23T20:22:31.479867Z","shell.execute_reply.started":"2023-10-23T20:22:31.466026Z","shell.execute_reply":"2023-10-23T20:22:31.478926Z"},"trusted":true},"execution_count":15,"outputs":[]},{"cell_type":"code","source":"def validation_loss(model, loader):\n    \n    model.eval()\n    valoss = 0.0\n    with torch.no_grad():\n        for batch in loader:\n            x = batch['image'].to(device)\n            y = batch['label'].to(device)\n            \n            x = x.reshape((batch_size, 3, image_size, image_size))\n            \n            scores = model(x)\n            loss = criterion(scores, y)\n            valoss += loss.item()\n    \n    return valoss/len(loader)","metadata":{"execution":{"iopub.status.busy":"2023-10-23T20:22:31.480771Z","iopub.execute_input":"2023-10-23T20:22:31.481465Z","iopub.status.idle":"2023-10-23T20:22:31.490564Z","shell.execute_reply.started":"2023-10-23T20:22:31.481432Z","shell.execute_reply":"2023-10-23T20:22:31.489794Z"},"trusted":true},"execution_count":16,"outputs":[]},{"cell_type":"code","source":"def get_accuracy(model, loader):\n    \n    num_correct = 0\n    num_samples = 0\n    model.eval()\n    with torch.no_grad():\n        for batch in train_loader:\n            x = batch['image'].to(device)\n            y = batch['label'].to(device)\n            \n            x = x.reshape((batch_size, 3, image_size, image_size))\n            \n            scores = model(x)\n            _, predictions = scores.max(1)\n            num_correct += (predictions == y).sum()\n            num_samples += predictions.size(0)\n    \n    return round((float(num_correct) / float(num_samples)) * 100, 2)","metadata":{"execution":{"iopub.status.busy":"2023-10-23T20:22:31.491489Z","iopub.execute_input":"2023-10-23T20:22:31.491763Z","iopub.status.idle":"2023-10-23T20:22:31.500932Z","shell.execute_reply.started":"2023-10-23T20:22:31.491734Z","shell.execute_reply":"2023-10-23T20:22:31.500223Z"},"trusted":true},"execution_count":17,"outputs":[]},{"cell_type":"code","source":"for epoch in range(Epochs):\n    model.train()\n    training_loss = 0.0\n    for batch in train_loader:\n        x = batch['image'].to(device)\n        y = batch['label'].to(device)\n        \n        x = x.reshape((batch_size, 3, image_size, image_size))\n        \n        scores = model(x)\n        loss = criterion(scores, y)\n        \n        training_loss += loss.item()\n        \n        optimizer.zero_grad()\n        loss.backward()\n        optimizer.step()\n    \n    train_loss = training_loss/len(train_loader)\n    training_losses.append(train_loss)\n    val_loss = validation_loss(model, val_loader)\n    validation_losses.append(val_loss)\n    \n    print(f\"Epoch {epoch+1} | Training Loss = {round(train_loss, 3)} | Validation Loss = {round(val_loss, 3)}\")","metadata":{"execution":{"iopub.status.busy":"2023-10-23T20:22:31.50188Z","iopub.execute_input":"2023-10-23T20:22:31.502134Z","iopub.status.idle":"2023-10-23T20:22:39.321792Z","shell.execute_reply.started":"2023-10-23T20:22:31.502104Z","shell.execute_reply":"2023-10-23T20:22:39.320398Z"},"trusted":true},"execution_count":18,"outputs":[{"traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mOutOfMemoryError\u001b[0m                          Traceback (most recent call last)","Cell \u001b[0;32mIn[18], line 10\u001b[0m\n\u001b[1;32m      6\u001b[0m y \u001b[38;5;241m=\u001b[39m batch[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlabel\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;241m.\u001b[39mto(device)\n\u001b[1;32m      8\u001b[0m x \u001b[38;5;241m=\u001b[39m x\u001b[38;5;241m.\u001b[39mreshape((batch_size, \u001b[38;5;241m3\u001b[39m, image_size, image_size))\n\u001b[0;32m---> 10\u001b[0m scores \u001b[38;5;241m=\u001b[39m \u001b[43mmodel\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m     11\u001b[0m loss \u001b[38;5;241m=\u001b[39m criterion(scores, y)\n\u001b[1;32m     13\u001b[0m training_loss \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m loss\u001b[38;5;241m.\u001b[39mitem()\n","File \u001b[0;32m/opt/conda/lib/python3.10/site-packages/torch/nn/modules/module.py:1501\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1496\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[1;32m   1497\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[1;32m   1498\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks\n\u001b[1;32m   1499\u001b[0m         \u001b[38;5;129;01mor\u001b[39;00m _global_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[1;32m   1500\u001b[0m         \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[0;32m-> 1501\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   1502\u001b[0m \u001b[38;5;66;03m# Do not call functions when jit is used\u001b[39;00m\n\u001b[1;32m   1503\u001b[0m full_backward_hooks, non_full_backward_hooks \u001b[38;5;241m=\u001b[39m [], []\n","Cell \u001b[0;32mIn[12], line 83\u001b[0m, in \u001b[0;36mResNet.forward\u001b[0;34m(self, x)\u001b[0m\n\u001b[1;32m     82\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mforward\u001b[39m(\u001b[38;5;28mself\u001b[39m, x):\n\u001b[0;32m---> 83\u001b[0m     out \u001b[38;5;241m=\u001b[39m F\u001b[38;5;241m.\u001b[39mrelu(\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbn1\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconv1\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[1;32m     84\u001b[0m     out \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlayer1(out)\n\u001b[1;32m     85\u001b[0m     out \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlayer2(out)\n","File \u001b[0;32m/opt/conda/lib/python3.10/site-packages/torch/nn/modules/module.py:1501\u001b[0m, in \u001b[0;36mModule._call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1496\u001b[0m \u001b[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001b[39;00m\n\u001b[1;32m   1497\u001b[0m \u001b[38;5;66;03m# this function, and just call forward.\u001b[39;00m\n\u001b[1;32m   1498\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_forward_pre_hooks\n\u001b[1;32m   1499\u001b[0m         \u001b[38;5;129;01mor\u001b[39;00m _global_backward_pre_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_backward_hooks\n\u001b[1;32m   1500\u001b[0m         \u001b[38;5;129;01mor\u001b[39;00m _global_forward_hooks \u001b[38;5;129;01mor\u001b[39;00m _global_forward_pre_hooks):\n\u001b[0;32m-> 1501\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mforward_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m   1502\u001b[0m \u001b[38;5;66;03m# Do not call functions when jit is used\u001b[39;00m\n\u001b[1;32m   1503\u001b[0m full_backward_hooks, non_full_backward_hooks \u001b[38;5;241m=\u001b[39m [], []\n","File \u001b[0;32m/opt/conda/lib/python3.10/site-packages/torch/nn/modules/batchnorm.py:171\u001b[0m, in \u001b[0;36m_BatchNorm.forward\u001b[0;34m(self, input)\u001b[0m\n\u001b[1;32m    164\u001b[0m     bn_training \u001b[38;5;241m=\u001b[39m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrunning_mean \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m) \u001b[38;5;129;01mand\u001b[39;00m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mrunning_var \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m    166\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m    167\u001b[0m \u001b[38;5;124;03mBuffers are only updated if they are to be tracked and we are in training mode. Thus they only need to be\u001b[39;00m\n\u001b[1;32m    168\u001b[0m \u001b[38;5;124;03mpassed when the update should occur (i.e. in training mode when they are tracked), or when buffer stats are\u001b[39;00m\n\u001b[1;32m    169\u001b[0m \u001b[38;5;124;03mused for normalization (i.e. in eval mode when buffers are not None).\u001b[39;00m\n\u001b[1;32m    170\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m--> 171\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mF\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbatch_norm\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m    172\u001b[0m \u001b[43m    \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m    173\u001b[0m \u001b[43m    \u001b[49m\u001b[38;5;66;43;03m# If buffers are not to be tracked, ensure that they won't be updated\u001b[39;49;00m\n\u001b[1;32m    174\u001b[0m \u001b[43m    \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrunning_mean\u001b[49m\n\u001b[1;32m    175\u001b[0m \u001b[43m    \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtraining\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtrack_running_stats\u001b[49m\n\u001b[1;32m    176\u001b[0m \u001b[43m    \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m    177\u001b[0m \u001b[43m    \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrunning_var\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mnot\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtraining\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtrack_running_stats\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01melse\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m    178\u001b[0m \u001b[43m    \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mweight\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    179\u001b[0m \u001b[43m    \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbias\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    180\u001b[0m \u001b[43m    \u001b[49m\u001b[43mbn_training\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    181\u001b[0m \u001b[43m    \u001b[49m\u001b[43mexponential_average_factor\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    182\u001b[0m \u001b[43m    \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43meps\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m    183\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n","File \u001b[0;32m/opt/conda/lib/python3.10/site-packages/torch/nn/functional.py:2450\u001b[0m, in \u001b[0;36mbatch_norm\u001b[0;34m(input, running_mean, running_var, weight, bias, training, momentum, eps)\u001b[0m\n\u001b[1;32m   2447\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m training:\n\u001b[1;32m   2448\u001b[0m     _verify_batch_size(\u001b[38;5;28minput\u001b[39m\u001b[38;5;241m.\u001b[39msize())\n\u001b[0;32m-> 2450\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mtorch\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbatch_norm\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m   2451\u001b[0m \u001b[43m    \u001b[49m\u001b[38;5;28;43minput\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mweight\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbias\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrunning_mean\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrunning_var\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtraining\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmomentum\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43meps\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtorch\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbackends\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcudnn\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43menabled\u001b[49m\n\u001b[1;32m   2452\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n","\u001b[0;31mOutOfMemoryError\u001b[0m: CUDA out of memory. Tried to allocate 392.00 MiB (GPU 0; 14.76 GiB total capacity; 462.99 MiB already allocated; 131.75 MiB free; 476.00 MiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF"],"ename":"OutOfMemoryError","evalue":"CUDA out of memory. Tried to allocate 392.00 MiB (GPU 0; 14.76 GiB total capacity; 462.99 MiB already allocated; 131.75 MiB free; 476.00 MiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF","output_type":"error"}]},{"cell_type":"code","source":"plt.plot(training_loss, label = 'Training Loss')\nplt.plot(validation_losses, label = 'Validation Loss')\nplt.xlabel('Epochs')\nplt.ylabel('Loss')\nplt.legend(['Validation Loss', 'Training Loss'])\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-10-23T20:22:39.322686Z","iopub.status.idle":"2023-10-23T20:22:39.323038Z","shell.execute_reply.started":"2023-10-23T20:22:39.322873Z","shell.execute_reply":"2023-10-23T20:22:39.322888Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(\"Test Accuracy = \", get_accuracy(model, test_loader))","metadata":{"execution":{"iopub.status.busy":"2023-10-23T20:22:39.325047Z","iopub.status.idle":"2023-10-23T20:22:39.325558Z","shell.execute_reply.started":"2023-10-23T20:22:39.325322Z","shell.execute_reply":"2023-10-23T20:22:39.325346Z"},"trusted":true},"execution_count":null,"outputs":[]}]}