{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-08-01T05:59:16.313335Z","iopub.execute_input":"2022-08-01T05:59:16.314013Z","iopub.status.idle":"2022-08-01T05:59:16.335536Z","shell.execute_reply.started":"2022-08-01T05:59:16.313875Z","shell.execute_reply":"2022-08-01T05:59:16.334510Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import torch","metadata":{"execution":{"iopub.status.busy":"2022-08-01T05:59:16.348526Z","iopub.execute_input":"2022-08-01T05:59:16.349132Z","iopub.status.idle":"2022-08-01T05:59:18.092205Z","shell.execute_reply.started":"2022-08-01T05:59:16.349093Z","shell.execute_reply":"2022-08-01T05:59:18.090320Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Option 1: passing weights param as string\nmodel = torch.hub.load(\"pytorch/vision\", \"regnet_y_128gf\", weights=\"IMAGENET1K_SWAG_E2E_V1\")","metadata":{"execution":{"iopub.status.busy":"2022-08-01T05:59:18.096573Z","iopub.execute_input":"2022-08-01T05:59:18.097174Z","iopub.status.idle":"2022-08-01T06:01:42.314184Z","shell.execute_reply.started":"2022-08-01T05:59:18.097131Z","shell.execute_reply":"2022-08-01T06:01:42.313146Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import gc\ndel model\ngc.collect()","metadata":{"execution":{"iopub.status.busy":"2022-08-01T06:01:43.236838Z","iopub.execute_input":"2022-08-01T06:01:43.238095Z","iopub.status.idle":"2022-08-01T06:01:43.480272Z","shell.execute_reply.started":"2022-08-01T06:01:43.238063Z","shell.execute_reply":"2022-08-01T06:01:43.479278Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import torch.nn as nn\nfrom torchvision import models\nfrom torchvision import transforms\nimport torch.nn.functional as F","metadata":{"execution":{"iopub.status.busy":"2022-08-01T06:01:43.482887Z","iopub.execute_input":"2022-08-01T06:01:43.483455Z","iopub.status.idle":"2022-08-01T06:01:43.567844Z","shell.execute_reply.started":"2022-08-01T06:01:43.483415Z","shell.execute_reply":"2022-08-01T06:01:43.566753Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"class MyModel(nn.Module):\n    def __init__(self, target_size=[224, 224]):\n        super().__init__()\n        self.target_size = target_size\n\n        self.encoder = torch.hub.load(\"pytorch/vision\", \"regnet_y_128gf\", weights=\"IMAGENET1K_SWAG_E2E_V1\")\n        self.encoder = torch.nn.Sequential(*(list(self.encoder.children())[:-1]))\n        self.final = nn.AdaptiveAvgPool1d(64)\n        \n    def forward(self, x):\n        x = x.to(torch.device('cuda:0'))\n        x = transforms.functional.resize(x, size=self.target_size, interpolation=transforms.InterpolationMode.BICUBIC)\n        x = x/255.0\n        x = transforms.functional.normalize(x,\n                                            mean=[0.48145466, 0.4578275, 0.40821073], \n                                            std=[0.26862954, 0.26130258, 0.27577711])\n        \n        x = self.encoder(x)\n        x = torch.squeeze(x)\n        x = torch.unsqueeze(x, 0)\n        x = self.final(x)\n\n        return x","metadata":{"execution":{"iopub.status.busy":"2022-08-01T06:04:01.625003Z","iopub.execute_input":"2022-08-01T06:04:01.625385Z","iopub.status.idle":"2022-08-01T06:04:01.635989Z","shell.execute_reply.started":"2022-08-01T06:04:01.625353Z","shell.execute_reply":"2022-08-01T06:04:01.634961Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model = MyModel(target_size=[128, 128]).to(torch.device('cuda:0'))\nmodel.eval()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"x = torch.randn(1, 3, 4545, 2324)\nprint(x.shape)\n# Let's print it\nmodel(x).shape","metadata":{"execution":{"iopub.status.busy":"2022-08-01T06:04:17.260308Z","iopub.execute_input":"2022-08-01T06:04:17.268974Z","iopub.status.idle":"2022-08-01T06:04:17.853960Z","shell.execute_reply.started":"2022-08-01T06:04:17.268932Z","shell.execute_reply":"2022-08-01T06:04:17.852855Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"saved_model = torch.jit.script(model)\nsaved_model.save('saved_model.pt')","metadata":{"execution":{"iopub.status.busy":"2022-08-01T06:04:17.858389Z","iopub.execute_input":"2022-08-01T06:04:17.858776Z","iopub.status.idle":"2022-08-01T06:04:25.173709Z","shell.execute_reply.started":"2022-08-01T06:04:17.858739Z","shell.execute_reply":"2022-08-01T06:04:25.172616Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from zipfile import ZipFile\n\nwith ZipFile('submission.zip','w') as zip:\n    zip.write('saved_model.pt', arcname='saved_model.pt')","metadata":{"execution":{"iopub.status.busy":"2022-08-01T05:31:12.00622Z","iopub.execute_input":"2022-08-01T05:31:12.007122Z","iopub.status.idle":"2022-08-01T05:31:29.747906Z","shell.execute_reply.started":"2022-08-01T05:31:12.007078Z","shell.execute_reply":"2022-08-01T05:31:29.746781Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}