{"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":"import numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\nimport os\nfrom sklearn.model_selection import train_test_split","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","execution":{"iopub.status.busy":"2021-07-30T17:30:56.166864Z","iopub.execute_input":"2021-07-30T17:30:56.167239Z","iopub.status.idle":"2021-07-30T17:30:56.171555Z","shell.execute_reply.started":"2021-07-30T17:30:56.167194Z","shell.execute_reply":"2021-07-30T17:30:56.17067Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Extract the train.zip file","metadata":{}},{"cell_type":"code","source":"import zipfile\n\nz = zipfile.ZipFile('../input/dogs-vs-cats/train.zip')\nz.extractall()","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:30:57.188343Z","iopub.execute_input":"2021-07-30T17:30:57.18867Z","iopub.status.idle":"2021-07-30T17:31:10.155862Z","shell.execute_reply.started":"2021-07-30T17:30:57.188635Z","shell.execute_reply":"2021-07-30T17:31:10.154873Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Import Necessary Libraries","metadata":{}},{"cell_type":"code","source":"import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nfrom torch.utils.data import Dataset, DataLoader, random_split\nimport torchvision.transforms as transforms\nimport torch.optim as optim\nimport torchvision.models as models\n\nfrom PIL import Image\nimport tqdm","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:31:10.157498Z","iopub.execute_input":"2021-07-30T17:31:10.157886Z","iopub.status.idle":"2021-07-30T17:31:11.563669Z","shell.execute_reply.started":"2021-07-30T17:31:10.157844Z","shell.execute_reply":"2021-07-30T17:31:11.562772Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Set the train image folder directory after extracting it","metadata":{}},{"cell_type":"code","source":"train_imgDir = \"../working/train\"\n# train_imgDir = 'train'\nprint(os.listdir(train_imgDir)[0].split('.')[0])","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:31:11.565777Z","iopub.execute_input":"2021-07-30T17:31:11.566203Z","iopub.status.idle":"2021-07-30T17:31:11.588871Z","shell.execute_reply.started":"2021-07-30T17:31:11.566162Z","shell.execute_reply":"2021-07-30T17:31:11.588002Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"imgFile, label = [],[]\nfor i in os.listdir(train_imgDir):\n    imgFile.append(i)\n    label.append(i.split('.')[0])\n\nimgFile[:5], label[:5]","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:31:11.590749Z","iopub.execute_input":"2021-07-30T17:31:11.591115Z","iopub.status.idle":"2021-07-30T17:31:11.628214Z","shell.execute_reply.started":"2021-07-30T17:31:11.591079Z","shell.execute_reply":"2021-07-30T17:31:11.627231Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df = pd.DataFrame(data=zip(imgFile,label), columns=['Filename','Label'])\ntrain_df.head()","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:31:11.629398Z","iopub.execute_input":"2021-07-30T17:31:11.629837Z","iopub.status.idle":"2021-07-30T17:31:11.663424Z","shell.execute_reply.started":"2021-07-30T17:31:11.629801Z","shell.execute_reply":"2021-07-30T17:31:11.662398Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_df['Label'] = train_df['Label'].map({'dog':1,'cat':0})\ntrain_df.head()","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:31:11.66512Z","iopub.execute_input":"2021-07-30T17:31:11.665506Z","iopub.status.idle":"2021-07-30T17:31:11.684637Z","shell.execute_reply.started":"2021-07-30T17:31:11.665467Z","shell.execute_reply":"2021-07-30T17:31:11.683825Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tr, val = train_test_split(train_df, random_state=42, test_size=0.2, stratify=train_df['Label'])\nprint(tr['Label'].value_counts())\nprint(val['Label'].value_counts())","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:31:11.685841Z","iopub.execute_input":"2021-07-30T17:31:11.68623Z","iopub.status.idle":"2021-07-30T17:31:11.717707Z","shell.execute_reply.started":"2021-07-30T17:31:11.686193Z","shell.execute_reply":"2021-07-30T17:31:11.716702Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"tr['Filename'].iloc[0]","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:31:11.71998Z","iopub.execute_input":"2021-07-30T17:31:11.720326Z","iopub.status.idle":"2021-07-30T17:31:11.725773Z","shell.execute_reply.started":"2021-07-30T17:31:11.720292Z","shell.execute_reply":"2021-07-30T17:31:11.7249Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Create a custom dataset using torch's Dataset","metadata":{}},{"cell_type":"code","source":"class DogsvsCats(Dataset):\n    def __init__(self, img_dir, df, transform_apply=None, iftrain=True):\n        self.imgDir = img_dir\n        self.csvFile = df\n        self.transform = transform_apply\n        self.train = iftrain\n    \n    def __len__(self):\n        return len(self.csvFile)\n    \n    def __getitem__(self, index):\n        imgFile = os.path.join(self.imgDir,self.csvFile['Filename'].iloc[index])\n        img = Image.open(imgFile)\n        \n        if self.transform:\n            img = self.transform(img)\n            \n        if self.train:\n            label = torch.tensor(self.csvFile['Label'].iloc[index])\n            return img,label\n        else:\n            return img","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:31:11.727465Z","iopub.execute_input":"2021-07-30T17:31:11.728162Z","iopub.status.idle":"2021-07-30T17:31:11.73744Z","shell.execute_reply.started":"2021-07-30T17:31:11.728123Z","shell.execute_reply":"2021-07-30T17:31:11.736405Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Some tranformation apply to image","metadata":{}},{"cell_type":"code","source":"# train_transforms = transforms.Compose([\n#     transforms.Resize((224,224)),\n#     transforms.ToTensor()\n# ])\n\n# train_dataset = DogsvsCats(train_imgDir,tr, train_transforms)\n\n# means, stds = [],[]\n# for img,_ in tqdm.notebook.tqdm(train_dataset):\n#     means.append(torch.mean(img, dim=(1,2)).numpy())\n#     stds.append(torch.std(img, dim=(1,2)).numpy())\n    \n# mean = torch.mean(torch.tensor(means), 0)\n# std = torch.mean(torch.tensor(stds), 0)","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:31:11.738891Z","iopub.execute_input":"2021-07-30T17:31:11.73929Z","iopub.status.idle":"2021-07-30T17:31:11.750183Z","shell.execute_reply.started":"2021-07-30T17:31:11.739252Z","shell.execute_reply":"2021-07-30T17:31:11.749153Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# mean, std","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:31:11.753582Z","iopub.execute_input":"2021-07-30T17:31:11.754065Z","iopub.status.idle":"2021-07-30T17:31:11.760453Z","shell.execute_reply.started":"2021-07-30T17:31:11.75401Z","shell.execute_reply":"2021-07-30T17:31:11.759334Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_transforms = transforms.Compose([\n    transforms.Resize((224,224)),\n    transforms.RandomHorizontalFlip(0.5),\n    transforms.ToTensor(),\n    transforms.Normalize(mean=[0.4884, 0.4551, 0.4170], std=[0.2256, 0.2210, 0.2214])\n])\n\nval_transforms = transforms.Compose([\n    transforms.Resize((224,224)),\n    transforms.ToTensor(),\n    transforms.Normalize(mean=[0.4884, 0.4551, 0.4170], std=[0.2256, 0.2210, 0.2214])\n])","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:31:11.763406Z","iopub.execute_input":"2021-07-30T17:31:11.763753Z","iopub.status.idle":"2021-07-30T17:31:11.773974Z","shell.execute_reply.started":"2021-07-30T17:31:11.763713Z","shell.execute_reply":"2021-07-30T17:31:11.772997Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"create train dataset by calling custom dataset","metadata":{}},{"cell_type":"code","source":"# DogsvsCats(train_imgDir,val, train_transforms).__getitem__(0)\ntrain_dataset = DogsvsCats(train_imgDir,tr, train_transforms)\nval_dataset = DogsvsCats(train_imgDir,val, val_transforms)","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:31:11.777455Z","iopub.execute_input":"2021-07-30T17:31:11.777874Z","iopub.status.idle":"2021-07-30T17:31:11.784532Z","shell.execute_reply.started":"2021-07-30T17:31:11.777836Z","shell.execute_reply":"2021-07-30T17:31:11.783543Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Make it to DataLoader","metadata":{}},{"cell_type":"code","source":"BATCH_SIZE = 32\ntrain_dataloader = DataLoader(train_dataset, batch_size=BATCH_SIZE)\nvalidation_dataloader = DataLoader(val_dataset, batch_size=BATCH_SIZE)","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:31:11.788291Z","iopub.execute_input":"2021-07-30T17:31:11.788555Z","iopub.status.idle":"2021-07-30T17:31:11.795094Z","shell.execute_reply.started":"2021-07-30T17:31:11.788532Z","shell.execute_reply":"2021-07-30T17:31:11.794194Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Create the model for this task","metadata":{}},{"cell_type":"code","source":"x = torch.randn((5,3,224,224))\nx.shape","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:31:15.148294Z","iopub.execute_input":"2021-07-30T17:31:15.148687Z","iopub.status.idle":"2021-07-30T17:31:15.181884Z","shell.execute_reply.started":"2021-07-30T17:31:15.148652Z","shell.execute_reply":"2021-07-30T17:31:15.181094Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"class ConvBlock(nn.Module):\n    def __init__(self, in_fts, out_fts, k, s, p, bias=False):\n        super(ConvBlock, self).__init__()\n        self.conv = nn.Sequential(\n            nn.Conv2d(in_channels=in_fts, out_channels=out_fts, kernel_size=k, stride=s, padding=p, bias=bias),\n            nn.BatchNorm2d(out_fts),\n            nn.ReLU(inplace=True)\n        )\n        \n    def forward(self, inp_img):\n        return self.conv(inp_img)\n\nclass MyModel(nn.Module):\n    def __init__(self, in_fts=3):\n        super(MyModel, self).__init__()\n        self.conv1 = ConvBlock(in_fts,64,7,2,3)\n        self.conv2 = ConvBlock(64,128,3,1,1)\n        self.maxpool = nn.MaxPool2d(kernel_size=2, stride=2)\n        self.conv3 = ConvBlock(128,256,3,1,1)\n        self.conv4 = ConvBlock(256,512,3,1,1)\n        self.conv5 = ConvBlock(512,512,3,1,1)\n        \n        self.avgpool = nn.AdaptiveAvgPool2d(output_size=(1,1))\n        self.fc = nn.Sequential(\n            nn.Linear(512,300),\n            nn.Dropout(0.5),\n            nn.Linear(300,300),\n            nn.Dropout(0.5),\n            nn.Linear(300,1),\n            nn.Sigmoid()\n        )\n        \n\n    def forward(self, input_img):\n        N = input_img.shape[0]\n        x = self.conv1(input_img)\n        x = self.maxpool(x)\n        x = self.conv2(x)\n        x = self.maxpool(x)\n        x = self.conv3(x)\n        x = self.maxpool(x)\n        x = self.conv4(x)\n        x = self.maxpool(x)\n        x = self.conv5(x)\n        x = self.avgpool(x)\n        x = torch.flatten(x,1)\n        x = self.fc(x)\n        \n        return x","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:31:16.288813Z","iopub.execute_input":"2021-07-30T17:31:16.289172Z","iopub.status.idle":"2021-07-30T17:31:16.306445Z","shell.execute_reply.started":"2021-07-30T17:31:16.289141Z","shell.execute_reply":"2021-07-30T17:31:16.30539Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"device = 'cuda' if torch.cuda.is_available() else 'cpu'\nmodel = MyModel().to(device)\nx = x.to(device)\n# model = models.resnet101(pretrained=False).to(device)\nprint(model(x).shape)\n# print(model(x))","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:31:17.068381Z","iopub.execute_input":"2021-07-30T17:31:17.068724Z","iopub.status.idle":"2021-07-30T17:31:22.327325Z","shell.execute_reply.started":"2021-07-30T17:31:17.068672Z","shell.execute_reply":"2021-07-30T17:31:22.326365Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Define loss and optimizer function","metadata":{}},{"cell_type":"code","source":"LR = 1e-1\nloss_fn = nn.BCELoss()\noptimizer = optim.SGD(model.parameters(), lr=LR)\nscheduler = optim.lr_scheduler.ReduceLROnPlateau(optimizer, patience=1, verbose=True)","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:31:22.328893Z","iopub.execute_input":"2021-07-30T17:31:22.329245Z","iopub.status.idle":"2021-07-30T17:31:22.337772Z","shell.execute_reply.started":"2021-07-30T17:31:22.329206Z","shell.execute_reply":"2021-07-30T17:31:22.3364Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Train step","metadata":{}},{"cell_type":"code","source":"EPOCHS = 30\nfor e in range(EPOCHS):\n    loop = tqdm.notebook.tqdm(train_dataloader)\n    loop.set_description(f\"{e+1}/{EPOCHS}\")\n    total_train_loss, total_train_accuracy = 0,0\n    iteration = 1\n    for img, label in loop:\n        img = img.to(device)\n        label = label.to(device)\n        output = model(img)\n\n        L = loss_fn(output, label.float().unsqueeze(1))\n        total_train_loss += L.item()\n        \n        pred = []\n        for i in output:\n            if i.item() >= 0.5:\n                pred.append(1)\n            else:\n                pred.append(0)\n                \n        accuracy = torch.mean((torch.tensor(pred).to(device) == label).float())\n        total_train_accuracy += accuracy.item()\n        \n        optimizer.zero_grad()\n        L.backward()\n        optimizer.step()\n        \n            \n        loop.set_postfix({'Train Loss':total_train_loss/iteration,'Train Accuracy':total_train_accuracy/iteration})\n        iteration += 1\n        \n    if (e+1)%1 == 0:\n        iteration = 1\n        loop = tqdm.notebook.tqdm(validation_dataloader)\n        total_val_loss, total_val_accuracy = 0,0\n        model.eval()\n        with torch.no_grad():\n            for img,label in loop:\n                img = img.to(device)\n                label = label.to(device)\n                output = model(img)\n                \n                L = loss_fn(output, label.float().unsqueeze(1))\n                total_val_loss += L.item()\n                \n                pred = []\n                for i in output:\n                    if i.item() >= 0.5:\n                        pred.append(1)\n                    else:\n                        pred.append(0)\n                        \n                accuracy = torch.mean((torch.tensor(pred).to(device) == label).float())\n                total_val_accuracy += accuracy.item()\n                \n                loop.set_postfix({'Val Loss':total_val_loss/iteration,'Val Accuracy':total_val_accuracy/iteration})\n                iteration += 1\n        \n        model.train()\n        scheduler.step(total_val_loss/iteration)","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:31:25.972071Z","iopub.execute_input":"2021-07-30T17:31:25.972393Z","iopub.status.idle":"2021-07-30T17:33:52.460029Z","shell.execute_reply.started":"2021-07-30T17:31:25.972361Z","shell.execute_reply":"2021-07-30T17:33:52.457476Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Save the entire Model.\nRef: https://pytorch.org/tutorials/recipes/recipes/saving_and_loading_models_for_inference.html","metadata":{}},{"cell_type":"code","source":"save_path = \"MyModel.pt\"\n\ntorch.save(model, save_path)","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:33:57.709018Z","iopub.execute_input":"2021-07-30T17:33:57.709486Z","iopub.status.idle":"2021-07-30T17:33:57.769036Z","shell.execute_reply.started":"2021-07-30T17:33:57.709445Z","shell.execute_reply":"2021-07-30T17:33:57.767952Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# To cross check whether the model \n\ntemp_model = torch.load(\"../working/MyModel.pt\")\n# temp_model = torch.load(\"MyModel.pt\")\ntemp_model = temp_model.to(device)\ntemp_model.eval()\niteration = 1\nloop = tqdm.notebook.tqdm(validation_dataloader)\ntotal_val_loss, total_val_accuracy = 0,0\n\nwith torch.no_grad():\n    for img,label in loop:\n        img = img.to(device)\n        label = label.to(device)\n        output = temp_model(img)\n\n        L = loss_fn(output, label.float().unsqueeze(1))\n        total_val_loss += L.item()\n\n        pred = []\n        for i in output:\n            if i.item() >= 0.5:\n                pred.append(1)\n            else:\n                pred.append(0)\n\n        accuracy = torch.mean((torch.tensor(pred).to(device) == label).float())\n        total_val_accuracy += accuracy.item()\n\n        loop.set_postfix({'Val Loss':total_val_loss/iteration,'Val Accuracy':total_val_accuracy/iteration})\n        iteration += 1","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:33:58.838386Z","iopub.execute_input":"2021-07-30T17:33:58.838721Z","iopub.status.idle":"2021-07-30T17:34:25.37652Z","shell.execute_reply.started":"2021-07-30T17:33:58.838671Z","shell.execute_reply":"2021-07-30T17:34:25.375435Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import shutil\nshutil.rmtree(\"../working/train\")","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:34:25.378033Z","iopub.execute_input":"2021-07-30T17:34:25.378381Z","iopub.status.idle":"2021-07-30T17:34:26.10171Z","shell.execute_reply.started":"2021-07-30T17:34:25.378344Z","shell.execute_reply":"2021-07-30T17:34:26.100857Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"For Testing...","metadata":{}},{"cell_type":"code","source":"z = zipfile.ZipFile('../input/dogs-vs-cats/test1.zip')\nz.extractall()","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:34:26.103914Z","iopub.execute_input":"2021-07-30T17:34:26.104258Z","iopub.status.idle":"2021-07-30T17:34:32.448867Z","shell.execute_reply.started":"2021-07-30T17:34:26.104223Z","shell.execute_reply":"2021-07-30T17:34:32.448006Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Make it image Filename list","metadata":{}},{"cell_type":"code","source":"test_imgDir = \"../working/test1\"\nimgFile = []\nfor i in os.listdir(test_imgDir):\n    imgFile.append(i)\n\nimgFile[:5]","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:34:32.450284Z","iopub.execute_input":"2021-07-30T17:34:32.450617Z","iopub.status.idle":"2021-07-30T17:34:32.467976Z","shell.execute_reply.started":"2021-07-30T17:34:32.450579Z","shell.execute_reply":"2021-07-30T17:34:32.466948Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Convert into pandas DataFrame","metadata":{}},{"cell_type":"code","source":"test_df = pd.DataFrame(data=imgFile, columns=['Filename'])\ntest_df.head()","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:34:32.469158Z","iopub.execute_input":"2021-07-30T17:34:32.469615Z","iopub.status.idle":"2021-07-30T17:34:32.480057Z","shell.execute_reply.started":"2021-07-30T17:34:32.469578Z","shell.execute_reply":"2021-07-30T17:34:32.479005Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Read Dataset and DataLoader","metadata":{}},{"cell_type":"code","source":"test_dataset = DogsvsCats(test_imgDir,test_df, val_transforms, False)","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:34:32.4817Z","iopub.execute_input":"2021-07-30T17:34:32.482099Z","iopub.status.idle":"2021-07-30T17:34:32.487956Z","shell.execute_reply.started":"2021-07-30T17:34:32.482062Z","shell.execute_reply":"2021-07-30T17:34:32.486741Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_dataloader = DataLoader(test_dataset, batch_size=BATCH_SIZE)","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:34:34.293227Z","iopub.execute_input":"2021-07-30T17:34:34.293545Z","iopub.status.idle":"2021-07-30T17:34:34.297719Z","shell.execute_reply.started":"2021-07-30T17:34:34.293515Z","shell.execute_reply":"2021-07-30T17:34:34.296629Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Predict the output","metadata":{}},{"cell_type":"code","source":"temp_model.eval()\nloop = tqdm.notebook.tqdm(test_dataloader)\ntest_pred = []\n\nwith torch.no_grad():\n    for img in loop:\n        img = img.to(device)\n        output = temp_model(img)\n\n        pred = []\n        for i in output:\n            if i.item() >= 0.5:\n                pred.append(1)\n            else:\n                pred.append(0)\n                \n        test_pred.extend(pred)","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:34:35.798332Z","iopub.execute_input":"2021-07-30T17:34:35.798653Z","iopub.status.idle":"2021-07-30T17:35:41.313211Z","shell.execute_reply.started":"2021-07-30T17:34:35.798623Z","shell.execute_reply":"2021-07-30T17:35:41.312248Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Make a submission file for id and predict label","metadata":{}},{"cell_type":"code","source":"submission = pd.DataFrame(data=zip(imgFile,test_pred),columns=[\"id\",\"label\"])\nsubmission.head()","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:35:41.314623Z","iopub.execute_input":"2021-07-30T17:35:41.314992Z","iopub.status.idle":"2021-07-30T17:35:41.336163Z","shell.execute_reply.started":"2021-07-30T17:35:41.314954Z","shell.execute_reply":"2021-07-30T17:35:41.335239Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Removal of extension filename .jpg","metadata":{}},{"cell_type":"code","source":"submission[\"id\"] = submission[\"id\"].apply(lambda x: int(x.split('.')[0]))\nsubmission.head()","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:35:41.337847Z","iopub.execute_input":"2021-07-30T17:35:41.33819Z","iopub.status.idle":"2021-07-30T17:35:41.361522Z","shell.execute_reply.started":"2021-07-30T17:35:41.338152Z","shell.execute_reply":"2021-07-30T17:35:41.360809Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"Sort it to the ascending order","metadata":{}},{"cell_type":"code","source":"submission.sort_values(\"id\", axis=0, ascending=True, inplace=True)","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:35:41.363084Z","iopub.execute_input":"2021-07-30T17:35:41.363468Z","iopub.status.idle":"2021-07-30T17:35:41.370947Z","shell.execute_reply.started":"2021-07-30T17:35:41.363431Z","shell.execute_reply":"2021-07-30T17:35:41.369993Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission.reset_index()\nsubmission.head()","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:35:41.372231Z","iopub.execute_input":"2021-07-30T17:35:41.372798Z","iopub.status.idle":"2021-07-30T17:35:41.383887Z","shell.execute_reply.started":"2021-07-30T17:35:41.372759Z","shell.execute_reply":"2021-07-30T17:35:41.382956Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"submission.to_csv(\"submission_01.csv\", index=False)\nprint(\"Done..\")","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:35:41.385088Z","iopub.execute_input":"2021-07-30T17:35:41.385449Z","iopub.status.idle":"2021-07-30T17:35:41.412732Z","shell.execute_reply.started":"2021-07-30T17:35:41.385414Z","shell.execute_reply":"2021-07-30T17:35:41.411927Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"shutil.rmtree(\"../working/test1\")","metadata":{"execution":{"iopub.status.busy":"2021-07-30T17:35:41.413822Z","iopub.execute_input":"2021-07-30T17:35:41.414173Z","iopub.status.idle":"2021-07-30T17:35:41.768854Z","shell.execute_reply.started":"2021-07-30T17:35:41.414138Z","shell.execute_reply":"2021-07-30T17:35:41.767986Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}