{"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":"markdown","source":"# EfficientNet Pytorch 3D for classification","metadata":{}},{"cell_type":"markdown","source":"## Step by Step\n1. Add a Dataset from url : https://www.kaggle.com/hihunjin/efficientnetpyttorch3d\n2. Add a directory path\n```python\nimport sys\nsys.path.append('../input/efficientnetpyttorch3d/EfficientNet-PyTorch-3D')\n```\n3. Import EfficientNet3D\n```python\nfrom efficientnet_pytorch_3d import EfficientNet3D\n```\n4. Define a model\n```python\nmodel = EfficientNet3D.from_name(\"efficientnet-b0\", override_params={'num_classes': 2}, in_channels=1)\n```\n5. Have fun with this model :)","metadata":{}},{"cell_type":"markdown","source":"## 1. Add a directory path","metadata":{}},{"cell_type":"code","source":"import sys\nsys.path.append('../input/efficientnetpyttorch3d/EfficientNet-PyTorch-3D')","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-07-14T02:18:29.977555Z","iopub.execute_input":"2021-07-14T02:18:29.977938Z","iopub.status.idle":"2021-07-14T02:18:29.9877Z","shell.execute_reply.started":"2021-07-14T02:18:29.977861Z","shell.execute_reply":"2021-07-14T02:18:29.986862Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 2. Import EfficientNet3D","metadata":{}},{"cell_type":"code","source":"import torch\nfrom efficientnet_pytorch_3d import EfficientNet3D","metadata":{"execution":{"iopub.status.busy":"2021-07-14T02:09:10.622744Z","iopub.execute_input":"2021-07-14T02:09:10.623017Z","iopub.status.idle":"2021-07-14T02:09:10.658724Z","shell.execute_reply.started":"2021-07-14T02:09:10.622991Z","shell.execute_reply":"2021-07-14T02:09:10.657982Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 3. Define a model","metadata":{}},{"cell_type":"code","source":"model = EfficientNet3D.from_name(\"efficientnet-b0\", override_params={'num_classes': 2}, in_channels=1)\nprint(model)\n\nmodel = model.cuda()","metadata":{"execution":{"iopub.status.busy":"2021-07-14T02:09:13.388718Z","iopub.execute_input":"2021-07-14T02:09:13.389056Z","iopub.status.idle":"2021-07-14T02:09:17.596429Z","shell.execute_reply.started":"2021-07-14T02:09:13.389028Z","shell.execute_reply":"2021-07-14T02:09:17.595541Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 4. Preparing a dummy input data","metadata":{}},{"cell_type":"code","source":"inputs = torch.randn((1, 1, 200, 200, 200)).cuda()\nlabels = torch.tensor([0]).cuda()\n# test forward\nnum_classes = 2","metadata":{"execution":{"iopub.status.busy":"2021-07-14T02:09:17.597816Z","iopub.execute_input":"2021-07-14T02:09:17.598136Z","iopub.status.idle":"2021-07-14T02:09:17.699871Z","shell.execute_reply.started":"2021-07-14T02:09:17.598099Z","shell.execute_reply":"2021-07-14T02:09:17.699066Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"outputs = model(inputs)\nprint(outputs.size())","metadata":{"execution":{"iopub.status.busy":"2021-07-14T02:09:17.701463Z","iopub.execute_input":"2021-07-14T02:09:17.701817Z","iopub.status.idle":"2021-07-14T02:09:18.70204Z","shell.execute_reply.started":"2021-07-14T02:09:17.70178Z","shell.execute_reply":"2021-07-14T02:09:18.701165Z"},"trusted":true},"execution_count":null,"outputs":[]}]}