{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"!cp -r /kaggle/input/efficientnetpytorch /kaggle/working","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nimport os\nimport torchvision.models as models\nimport torch.utils.data as data\nimport sklearn.utils as utils\nfrom PIL import Image\nimport torchvision.transforms as T\nimport sklearn.metrics as metrics\nimport sys\nfrom efficientnetpytorch.efficientnet_pytorch.model import EfficientNet","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"input_path = '/kaggle/input/ranzcr-clip-catheter-line-classification'","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"num_classes = 11\ndevice = 'cuda:0'","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"class Model(nn.Module):\n    def __init__(self):\n        super(Model, self).__init__()\n        self.base = EfficientNet.from_name('efficientnet-b7')\n        self.dense = nn.Linear(1000, num_classes)\n    def forward(self, x):\n        x = torch.cat([x, x, x], dim=1)\n        return self.dense(self.base(x))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model = Model().to(device)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"effnet_path = '../input/efficientnetpytorch'\nimport sys\nsys.path.append(effnet_path)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# model.load_state_dict(torch.load(f'/kaggle/input/efficientnetpytorch/efficientnet-model/model_10.pth'))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df = pd.read_csv('../input/ranzcr-clip-catheter-line-classification/sample_submission.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"class TestDataset(data.Dataset):\n    def __init__(self, df, transforms):\n        super(TestDataset, self).__init__()\n        self.df = df\n        self.transforms = transforms\n    def __getitem__(self, index):\n        row = self.df.iloc[index]\n        img = Image.open(f'{input_path}/test/{row[0]}.jpg')\n        return self.transforms(img)\n    def __len__(self):\n        return len(self.df)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_transforms = T.Compose([\n    T.Resize((512, 512)),\n    T.ToTensor(),\n    T.Normalize((0.5,), (0.5,))\n])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_dataset = TestDataset(df=df, transforms=test_transforms)\ntest_dataloader = data.DataLoader(dataset=test_dataset, num_workers=2, shuffle=False, batch_size=4)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"len(test_dataloader)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.eval()\ny_preds = []\nfor b, x in enumerate(test_dataloader):\n        if b%100==0 or b==len(test_dataloader):\n            print(b)\n        x = x.cuda()\n        y_pred = model(x).detach()\n        y_preds += y_pred.cpu().numpy().tolist()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def sigmoid(x):\n    x = x.astype('float32')\n    x[x < -709.] = -709.\n    return 1. / (1. + np.exp(-x))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y_preds = sigmoid(np.array(y_preds))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y_preds.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"columns = df.columns","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df[columns[1:]].shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df[columns[1:]] = y_preds","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df.to_csv('submission.csv', index=False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"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":4,"nbformat_minor":4}