{"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":"!pip install timm","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-08-09T15:32:14.761097Z","iopub.execute_input":"2022-08-09T15:32:14.761514Z","iopub.status.idle":"2022-08-09T15:32:29.722871Z","shell.execute_reply.started":"2022-08-09T15:32:14.761478Z","shell.execute_reply":"2022-08-09T15:32:29.721458Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import torch\nimport torch.nn as nn\nfrom torchvision.transforms import functional","metadata":{"execution":{"iopub.status.busy":"2022-08-09T15:38:25.060215Z","iopub.execute_input":"2022-08-09T15:38:25.060910Z","iopub.status.idle":"2022-08-09T15:38:25.066366Z","shell.execute_reply.started":"2022-08-09T15:38:25.060872Z","shell.execute_reply":"2022-08-09T15:38:25.065487Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from timm import create_model, list_models","metadata":{"execution":{"iopub.status.busy":"2022-08-09T15:32:58.400620Z","iopub.execute_input":"2022-08-09T15:32:58.401574Z","iopub.status.idle":"2022-08-09T15:32:59.793680Z","shell.execute_reply.started":"2022-08-09T15:32:58.401525Z","shell.execute_reply":"2022-08-09T15:32:59.792332Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"list_models('convnext*',pretrained=True)","metadata":{"execution":{"iopub.status.busy":"2022-08-08T18:06:54.271649Z","iopub.execute_input":"2022-08-08T18:06:54.272086Z","iopub.status.idle":"2022-08-08T18:06:54.281383Z","shell.execute_reply.started":"2022-08-08T18:06:54.272053Z","shell.execute_reply":"2022-08-08T18:06:54.280218Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"class Model(nn.Module):\n    def __init__(self, model_name='convnext_base_in22ft1k'):\n        super(Model, self).__init__()\n        self.model_name = model_name\n        self.feature_extractor = create_model(self.model_name, pretrained=True, num_classes = 0)\n        self.feature_extractor.eval()\n        self.embed = nn.AdaptiveAvgPool1d(64)\n        \n    def forward(self,x):\n        x = functional.resize(x, (224,224))\n        x = x/255.0\n        x = functional.normalize(x,\n            mean = [0.485, 0.456, 0.406], \n            std = [0.229, 0.224, 0.225]\n        )\n        x = self.feature_extractor(x)\n        x = self.embed(x)\n        return x","metadata":{"execution":{"iopub.status.busy":"2022-08-09T15:41:17.512206Z","iopub.execute_input":"2022-08-09T15:41:17.512649Z","iopub.status.idle":"2022-08-09T15:41:17.521092Z","shell.execute_reply.started":"2022-08-09T15:41:17.512611Z","shell.execute_reply":"2022-08-09T15:41:17.519906Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"x = torch.rand(1,3,224,224)\ncnb = Model()\ncnb(x).shape","metadata":{"execution":{"iopub.status.busy":"2022-08-09T15:41:19.176746Z","iopub.execute_input":"2022-08-09T15:41:19.177179Z","iopub.status.idle":"2022-08-09T15:41:22.093800Z","shell.execute_reply.started":"2022-08-09T15:41:19.177144Z","shell.execute_reply":"2022-08-09T15:41:22.092658Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission_model = torch.jit.script(Model())","metadata":{"execution":{"iopub.status.busy":"2022-08-09T15:45:12.554537Z","iopub.execute_input":"2022-08-09T15:45:12.555746Z","iopub.status.idle":"2022-08-09T15:45:15.841866Z","shell.execute_reply.started":"2022-08-09T15:45:12.555689Z","shell.execute_reply":"2022-08-09T15:45:15.840880Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission_model.save('saved_model.pt')","metadata":{"execution":{"iopub.status.busy":"2022-08-09T15:46:26.264133Z","iopub.execute_input":"2022-08-09T15:46:26.264592Z","iopub.status.idle":"2022-08-09T15:46:26.780577Z","shell.execute_reply.started":"2022-08-09T15:46:26.264554Z","shell.execute_reply":"2022-08-09T15:46:26.779161Z"},"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-09T15:47:08.489394Z","iopub.execute_input":"2022-08-09T15:47:08.489915Z","iopub.status.idle":"2022-08-09T15:47:09.558513Z","shell.execute_reply.started":"2022-08-09T15:47:08.489875Z","shell.execute_reply":"2022-08-09T15:47:09.557211Z"},"trusted":true},"execution_count":null,"outputs":[]}]}