{"cells":[{"metadata":{},"cell_type":"markdown","source":"### Simple step by step approach with shake-shake regularization for Bengali AI competition . If its useful for you please upvote .\n\nThe paper is here https://arxiv.org/abs/1705.07485\n\n![image.png](attachment:image.png)\n\n###  Shake-Shake regularization is actually an augmentation method of internal representation of features inside resnet . THe above image shows the augmentations added in blocks of resnets .\n\nImage Courtesy :\nhttps://towardsdatascience.com/review-shake-shake-regularization-image-classification-d22bb8587953","attachments":{"image.png":{"image/png":"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"}}},{"metadata":{},"cell_type":"markdown","source":"V1: This is an implementation of shake-shake from Heng's Discussion pointers . It is present in the discussion , however I will provide the github references somewhere .\n"},{"metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","id":"GA_kAZP19vM2","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"## Load Libraries \nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport cv2\nimport gc\nimport matplotlib.pyplot as plt\nimport torch.nn.functional as F\nimport os\n# Any results you write to the current directory are saved as output.\nimport torch\nimport torch.nn as nn\nfrom torch.utils.data import Dataset,DataLoader\nfrom torchvision import transforms,models\nfrom tqdm import tqdm_notebook as tqdm\n\n## This library is for augmentations .\nfrom albumentations import (\n    PadIfNeeded,\n    HorizontalFlip,\n    VerticalFlip,    \n    CenterCrop,    \n    Crop,\n    Compose,\n    Transpose,\n    RandomRotate90,\n    ElasticTransform,\n    GridDistortion, \n    OpticalDistortion,\n    RandomSizedCrop,\n    OneOf,\n    CLAHE,\n    RandomBrightnessContrast,    \n    \n    RandomGamma,\n    ShiftScaleRotate ,\n    GaussNoise,\n    Blur,\n    MotionBlur,   \n    GaussianBlur,\n)\n\nimport warnings\nwarnings.filterwarnings('ignore')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"##Path for data \nPATH = '../input/bengaliai-cv19/'","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"## Model configuration dictionary\n  model_config ={\n    \"arch\": \"shake_shake\",\n    \"input_shape\": (1, 1, 128, 128),\n    \"n_classes\": 10,\n    \"base_channels\": 32,\n    \"depth\": 26,\n    \"shake_forward\": True,\n    \"shake_backward\": True,\n    \"shake_image\": True\n  }","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"#### Data setup part "},{"metadata":{"trusted":true},"cell_type":"code","source":"## Create Data from Parquet file mixing the methods of @hanjoonzhoe and @Iafoss\n\n## Create Crop Function @Iafoss\n\nHEIGHT = 137\nWIDTH = 236\nSIZE = 128\n\ndef bbox(img):\n    rows = np.any(img, axis=1)\n    cols = np.any(img, axis=0)\n    rmin, rmax = np.where(rows)[0][[0, -1]]\n    cmin, cmax = np.where(cols)[0][[0, -1]]\n    return rmin, rmax, cmin, cmax\n\ndef crop_resize(img0, size=SIZE, pad=16):\n    #crop a box around pixels large than the threshold \n    #some images contain line at the sides\n    ymin,ymax,xmin,xmax = bbox(img0[5:-5,5:-5] > 80)\n    #cropping may cut too much, so we need to add it back\n    xmin = xmin - 13 if (xmin > 13) else 0\n    ymin = ymin - 10 if (ymin > 10) else 0\n    xmax = xmax + 13 if (xmax < WIDTH - 13) else WIDTH\n    ymax = ymax + 10 if (ymax < HEIGHT - 10) else HEIGHT\n    img = img0[ymin:ymax,xmin:xmax]\n    #remove lo intensity pixels as noise\n    img[img < 28] = 0\n    lx, ly = xmax-xmin,ymax-ymin\n    l = max(lx,ly) + pad\n    #make sure that the aspect ratio is kept in rescaling\n    img = np.pad(img, [((l-ly)//2,), ((l-lx)//2,)], mode='constant')\n    return cv2.resize(img,(size,size))\n\ndef Resize(df,size=128):\n    resized = {} \n    df = df.set_index('image_id')\n    for i in tqdm(range(df.shape[0])):\n       # image = cv2.resize(df.loc[df.index[i]].values.reshape(137,236),(size,size))\n        image0 = 255 - df.loc[df.index[i]].values.reshape(137,236).astype(np.uint8)\n    #normalize each image by its max val\n        img = (image0*(255.0/image0.max())).astype(np.uint8)\n        image = crop_resize(img)\n        resized[df.index[i]] = image.reshape(-1)\n    resized = pd.DataFrame(resized).T.reset_index()\n    resized.columns = resized.columns.astype(str)\n    resized.rename(columns={'index':'image_id'},inplace=True)\n    return resized\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"\"\"\"%%time\n##Feather data generation for all train_data\nfor i in range(4):\n    data = pd.read_parquet(PATH+f'train_image_data_{i}.parquet')\n    data =Resize(data)\n    data.to_feather(f'train_data_{i}{i}_l.feather')\n    del data\n    gc.collect()\"\"\" \n##TO save RAM I have run this command in another kernel and kept the output for the Kernel as dataset for this Kernel .","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"DATA_PATH = \"../input/pytorch-efficientnet-starter-kernel/\"","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","id":"JsfYCnnn9vM5","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"## Load Feather Data \ntrain = pd.read_csv(PATH + \"train.csv\")\ndata0 = pd.read_feather(DATA_PATH+\"train_data_00_l.feather\")\ndata1 = pd.read_feather(DATA_PATH+'train_data_11_l.feather')\ndata2 = pd.read_feather(DATA_PATH+'train_data_22_l.feather')\ndata3 = pd.read_feather(DATA_PATH+'train_data_33_l.feather')\ndata_full = pd.concat([data0,data1,data2,data3],ignore_index=True)\ndel data0,data1,data2,data3\ngc.collect()\ndata_full.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"## A bunch of code copied from internet . Half of them I dont understand yet . However , CutOut is used in this notebook\n##https://github.com/hysts/pytorch_image_classification\nimport numpy as np\nimport torch\nimport torch.nn as nn\n\nclass Cutout:\n    def __init__(self, mask_size, p, cutout_inside, mask_color=1):\n        self.p = p\n        self.mask_size = mask_size\n        self.cutout_inside = cutout_inside\n        self.mask_color = mask_color\n\n        self.mask_size_half = mask_size // 2\n        self.offset = 1 if mask_size % 2 == 0 else 0\n\n    def __call__(self, image):\n        image = np.asarray(image).copy()\n\n        if np.random.random() > self.p:\n            return image\n\n        h, w = image.shape[:2]\n\n        if self.cutout_inside:\n            cxmin, cxmax = self.mask_size_half, w + self.offset - self.mask_size_half\n            cymin, cymax = self.mask_size_half, h + self.offset - self.mask_size_half\n        else:\n            cxmin, cxmax = 0, w + self.offset\n            cymin, cymax = 0, h + self.offset\n\n        cx = np.random.randint(cxmin, cxmax)\n        cy = np.random.randint(cymin, cymax)\n        xmin = cx - self.mask_size_half\n        ymin = cy - self.mask_size_half\n        xmax = xmin + self.mask_size\n        ymax = ymin + self.mask_size\n        xmin = max(0, xmin)\n        ymin = max(0, ymin)\n        xmax = min(w, xmax)\n        ymax = min(h, ymax)\n        image[ymin:ymax, xmin:xmax] = self.mask_color\n        return image\n\n\nclass DualCutout:\n    def __init__(self, mask_size, p, cutout_inside, mask_color=1):\n        self.cutout = Cutout(mask_size, p, cutout_inside, mask_color)\n\n    def __call__(self, image):\n        return np.hstack([self.cutout(image), self.cutout(image)])\n\n\nclass DualCutoutCriterion:\n    def __init__(self, alpha):\n        self.alpha = alpha\n        self.criterion = nn.CrossEntropyLoss(reduction='mean')\n\n    def __call__(self, preds, targets):\n        preds1, preds2 = preds\n        return (self.criterion(preds1, targets) + self.criterion(\n            preds2, targets)) * 0.5 + self.alpha * F.mse_loss(preds1, preds2)\n\n\ndef mixup(data, targets, alpha, n_classes):\n    indices = torch.randperm(data.size(0))\n    shuffled_data = data[indices]\n    shuffled_targets = targets[indices]\n\n    lam = np.random.beta(alpha, alpha)\n    data = data * lam + shuffled_data * (1 - lam)\n    targets = (targets, shuffled_targets, lam)\n\n    return data, targets\n\n\ndef mixup_criterion(preds, targets):\n    targets1, targets2, lam = targets\n    criterion = nn.CrossEntropyLoss(reduction='mean')\n    return lam * criterion(preds, targets1) + (1 - lam) * criterion(\n        preds, targets2)\n    \n\n\nclass RandomErasing:\n    def __init__(self, p, area_ratio_range, min_aspect_ratio, max_attempt):\n        self.p = p\n        self.max_attempt = max_attempt\n        self.sl, self.sh = area_ratio_range\n        self.rl, self.rh = min_aspect_ratio, 1. / min_aspect_ratio\n\n    def __call__(self, image):\n        image = np.asarray(image).copy()\n\n        if np.random.random() > self.p:\n            return image\n\n        h, w = image.shape[:2]\n        image_area = h * w\n\n        for _ in range(self.max_attempt):\n            mask_area = np.random.uniform(self.sl, self.sh) * image_area\n            aspect_ratio = np.random.uniform(self.rl, self.rh)\n            mask_h = int(np.sqrt(mask_area * aspect_ratio))\n            mask_w = int(np.sqrt(mask_area / aspect_ratio))\n\n            if mask_w < w and mask_h < h:\n                x0 = np.random.randint(0, w - mask_w)\n                y0 = np.random.randint(0, h - mask_h)\n                x1 = x0 + mask_w\n                y1 = y0 + mask_h\n                image[y0:y1, x0:x1] = np.random.uniform(0, 1)\n                break\n\n        return image  ","execution_count":null,"outputs":[]},{"metadata":{"id":"mtCv6YoGeSLs","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"## Add Augmentations as suited from Albumentations library\ntrain_aug = Compose([ \n    ShiftScaleRotate(p=1,border_mode=cv2.BORDER_CONSTANT,value =1),\n    OneOf([\n        ElasticTransform(p=0.1, alpha=1, sigma=50, alpha_affine=50,border_mode=cv2.BORDER_CONSTANT,value =1),\n        GridDistortion(distort_limit =0.05 ,border_mode=cv2.BORDER_CONSTANT,value =1, p=0.1),\n        OpticalDistortion(p=0.1, distort_limit= 0.05, shift_limit=0.2,border_mode=cv2.BORDER_CONSTANT,value =1)                  \n        ], p=0.3),\n    OneOf([\n        GaussNoise(var_limit=1.0),\n        Blur(),\n        GaussianBlur(blur_limit=3)\n        ], p=0.4),    \n    RandomGamma(p=0.8)])\n\n## A lot of heavy augmentations","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"## Someone asked for normalization of images . values collected from Iafoss\n\n\nclass ToTensor:\n    def __call__(self, data):\n        if isinstance(data, tuple):\n            return tuple([self._to_tensor(image) for image in data])\n        else:\n            return self._to_tensor(data)\n\n    def _to_tensor(self, data):\n        if len(data.shape) == 3:\n            return torch.from_numpy(data.transpose(2, 0, 1).astype(np.float32))\n        else:\n            return torch.from_numpy(data[None, :, :].astype(np.float32))\n\n\nclass Normalize:\n    def __init__(self, mean, std):\n        self.mean = np.array(mean)\n        self.std = np.array(std)\n\n    def __call__(self, image):\n        image = np.asarray(image).astype(np.float32) / 255.\n        image = (image - self.mean) / self.std\n        return image","execution_count":null,"outputs":[]},{"metadata":{"id":"e1tMjI8m9vM_","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"## Create dataset function\nclass GraphemeDataset(Dataset):\n    def __init__(self,df,label,_type='train',transform =False,aug=train_aug):\n        self.df = df\n        self.label = label\n        self.aug = aug\n        self.transform = transform\n        self.data = df.iloc[:, 1:].values\n    def __len__(self):\n        return len(self.df)\n    def __getitem__(self,idx):\n        label1 = self.label.vowel_diacritic.values[idx]\n        label2 = self.label.grapheme_root.values[idx]\n        label3 = self.label.consonant_diacritic.values[idx]\n        #image = self.df.iloc[idx][1:].values.reshape(128,128).astype(np.float)\n        image = self.data[idx, :].reshape(128,128).astype(np.float)\n        if self.transform:\n            augment = self.aug(image =image)\n            image = augment['image']\n            cutout = Cutout(32,0.5,True,1)\n            image = cutout(image)\n        norm = Normalize([0.0692],[0.2051])\n        image = norm(image)\n\n        return image,label1,label2,label3","execution_count":null,"outputs":[]},{"metadata":{"id":"nkAjCGZuwexT","colab_type":"code","outputId":"1db8b64b-53cb-43ae-8eb6-792857d97798","colab":{"base_uri":"https://localhost:8080/","height":34},"trusted":true},"cell_type":"code","source":"## Do a train-valid split of the data to create dataset and dataloader . Specify random seed to get reproducibility \nfrom sklearn.model_selection import train_test_split\ntrain_df , valid_df = train_test_split(train,test_size=0.20, random_state=42,shuffle=True) ## Split Labels\ndata_train_df, data_valid_df = train_test_split(data_full,test_size=0.20, random_state=42,shuffle =True) ## split data\ndel data_full \ngc.collect()","execution_count":null,"outputs":[]},{"metadata":{"id":"jC1hLt6CxXNx","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"##Creating the train and valid dataset for training . Training data has the transform flag ON\ntrain_dataset = GraphemeDataset(data_train_df ,train_df,transform = False) \nvalid_dataset = GraphemeDataset(data_valid_df ,valid_df,transform = False) \ntorch.cuda.empty_cache()\ngc.collect()","execution_count":null,"outputs":[]},{"metadata":{"id":"EC4YoNn1V6M7","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"##Visulization function for checking Original and augmented image\ndef visualize(original_image,aug_image):\n    fontsize = 18\n    \n    f, ax = plt.subplots(1, 2, figsize=(8, 8))\n\n    ax[0].imshow(original_image, cmap='gray')\n    ax[0].set_title('Original image', fontsize=fontsize)\n    ax[1].imshow(aug_image,cmap='gray')\n    ax[1].set_title('Augmented image', fontsize=fontsize)\n    ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"## One image taken from raw dataframe another from dataset \norig_image = data_train_df.iloc[0, 1:].values.reshape(128,128).astype(np.float)\naug_image = train_dataset[0][0]","execution_count":null,"outputs":[]},{"metadata":{"id":"glXch-HFU3_u","colab_type":"code","outputId":"ec60c5e1-fed0-4782-a8d9-d6eed1928712","colab":{"base_uri":"https://localhost:8080/","height":271},"trusted":true},"cell_type":"code","source":"## Check the augmentations \nfor i in range (20):\n    aug_image = train_dataset[0][0]\n    visualize (orig_image,aug_image)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"del train_df,valid_df,data_train_df,data_valid_df \ntorch.cuda.empty_cache()\ngc.collect()","execution_count":null,"outputs":[]},{"metadata":{"id":"pj-CALEgxrzF","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"## Create data loader and get ready for training .\nbatch_size = 32 \ntrain_loader = torch.utils.data.DataLoader(train_dataset,batch_size=batch_size,shuffle=True)\nvalid_loader = torch.utils.data.DataLoader(valid_dataset,batch_size=batch_size,shuffle=True)\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"#### Model creation part "},{"metadata":{"id":"B2g6gbGU9vNB","colab_type":"code","colab":{},"trusted":true,"_kg_hide-input":true},"cell_type":"code","source":"## Mish Activation Function Not yet Used . May be later \nclass Mish(nn.Module):\n    def __init__(self):\n        super().__init__()\n\n    def forward(self, x): \n        \n        x = x *( torch.tanh(F.softplus(x)))\n\n        return x","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"## Over9000 Optimizer . Inspired by Iafoss . Over and Out !\n##https://github.com/mgrankin/over9000/blob/master/ralamb.py\nimport torch, math\nfrom torch.optim.optimizer import Optimizer\n\n# RAdam + LARS\nclass Ralamb(Optimizer):\n\n    def __init__(self, params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8, weight_decay=0):\n        defaults = dict(lr=lr, betas=betas, eps=eps, weight_decay=weight_decay)\n        self.buffer = [[None, None, None] for ind in range(10)]\n        super(Ralamb, self).__init__(params, defaults)\n\n    def __setstate__(self, state):\n        super(Ralamb, self).__setstate__(state)\n\n    def step(self, closure=None):\n\n        loss = None\n        if closure is not None:\n            loss = closure()\n\n        for group in self.param_groups:\n\n            for p in group['params']:\n                if p.grad is None:\n                    continue\n                grad = p.grad.data.float()\n                if grad.is_sparse:\n                    raise RuntimeError('Ralamb does not support sparse gradients')\n\n                p_data_fp32 = p.data.float()\n\n                state = self.state[p]\n\n                if len(state) == 0:\n                    state['step'] = 0\n                    state['exp_avg'] = torch.zeros_like(p_data_fp32)\n                    state['exp_avg_sq'] = torch.zeros_like(p_data_fp32)\n                else:\n                    state['exp_avg'] = state['exp_avg'].type_as(p_data_fp32)\n                    state['exp_avg_sq'] = state['exp_avg_sq'].type_as(p_data_fp32)\n\n                exp_avg, exp_avg_sq = state['exp_avg'], state['exp_avg_sq']\n                beta1, beta2 = group['betas']\n\n                # Decay the first and second moment running average coefficient\n                # m_t\n                exp_avg.mul_(beta1).add_(1 - beta1, grad)\n                # v_t\n                exp_avg_sq.mul_(beta2).addcmul_(1 - beta2, grad, grad)\n\n                state['step'] += 1\n                buffered = self.buffer[int(state['step'] % 10)]\n\n                if state['step'] == buffered[0]:\n                    N_sma, radam_step_size = buffered[1], buffered[2]\n                else:\n                    buffered[0] = state['step']\n                    beta2_t = beta2 ** state['step']\n                    N_sma_max = 2 / (1 - beta2) - 1\n                    N_sma = N_sma_max - 2 * state['step'] * beta2_t / (1 - beta2_t)\n                    buffered[1] = N_sma\n\n                    # more conservative since it's an approximated value\n                    if N_sma >= 5:\n                        radam_step_size = math.sqrt((1 - beta2_t) * (N_sma - 4) / (N_sma_max - 4) * (N_sma - 2) / N_sma * N_sma_max / (N_sma_max - 2)) / (1 - beta1 ** state['step'])\n                    else:\n                        radam_step_size = 1.0 / (1 - beta1 ** state['step'])\n                    buffered[2] = radam_step_size\n\n                if group['weight_decay'] != 0:\n                    p_data_fp32.add_(-group['weight_decay'] * group['lr'], p_data_fp32)\n\n                # more conservative since it's an approximated value\n                radam_step = p_data_fp32.clone()\n                if N_sma >= 5:\n                    denom = exp_avg_sq.sqrt().add_(group['eps'])\n                    radam_step.addcdiv_(-radam_step_size * group['lr'], exp_avg, denom)\n                else:\n                    radam_step.add_(-radam_step_size * group['lr'], exp_avg)\n\n                radam_norm = radam_step.pow(2).sum().sqrt()\n                weight_norm = p.data.pow(2).sum().sqrt().clamp(0, 10)\n                if weight_norm == 0 or radam_norm == 0:\n                    trust_ratio = 1\n                else:\n                    trust_ratio = weight_norm / radam_norm\n\n                state['weight_norm'] = weight_norm\n                state['adam_norm'] = radam_norm\n                state['trust_ratio'] = trust_ratio\n\n                if N_sma >= 5:\n                    p_data_fp32.addcdiv_(-radam_step_size * group['lr'] * trust_ratio, exp_avg, denom)\n                else:\n                    p_data_fp32.add_(-radam_step_size * group['lr'] * trust_ratio, exp_avg)\n\n                p.data.copy_(p_data_fp32)\n\n        return loss\n\n# Lookahead implementation from https://github.com/rwightman/pytorch-image-models/blob/master/timm/optim/lookahead.py\n\n\"\"\" Lookahead Optimizer Wrapper.\nImplementation modified from: https://github.com/alphadl/lookahead.pytorch\nPaper: `Lookahead Optimizer: k steps forward, 1 step back` - https://arxiv.org/abs/1907.08610\n\"\"\"\nimport torch\nfrom torch.optim.optimizer import Optimizer\nfrom collections import defaultdict\n\nclass Lookahead(Optimizer):\n    def __init__(self, base_optimizer, alpha=0.5, k=6):\n        if not 0.0 <= alpha <= 1.0:\n            raise ValueError(f'Invalid slow update rate: {alpha}')\n        if not 1 <= k:\n            raise ValueError(f'Invalid lookahead steps: {k}')\n        defaults = dict(lookahead_alpha=alpha, lookahead_k=k, lookahead_step=0)\n        self.base_optimizer = base_optimizer\n        self.param_groups = self.base_optimizer.param_groups\n        self.defaults = base_optimizer.defaults\n        self.defaults.update(defaults)\n        self.state = defaultdict(dict)\n        # manually add our defaults to the param groups\n        for name, default in defaults.items():\n            for group in self.param_groups:\n                group.setdefault(name, default)\n\n    def update_slow(self, group):\n        for fast_p in group[\"params\"]:\n            if fast_p.grad is None:\n                continue\n            param_state = self.state[fast_p]\n            if 'slow_buffer' not in param_state:\n                param_state['slow_buffer'] = torch.empty_like(fast_p.data)\n                param_state['slow_buffer'].copy_(fast_p.data)\n            slow = param_state['slow_buffer']\n            slow.add_(group['lookahead_alpha'], fast_p.data - slow)\n            fast_p.data.copy_(slow)\n\n    def sync_lookahead(self):\n        for group in self.param_groups:\n            self.update_slow(group)\n\n    def step(self, closure=None):\n        # print(self.k)\n        #assert id(self.param_groups) == id(self.base_optimizer.param_groups)\n        loss = self.base_optimizer.step(closure)\n        for group in self.param_groups:\n            group['lookahead_step'] += 1\n            if group['lookahead_step'] % group['lookahead_k'] == 0:\n                self.update_slow(group)\n        return loss\n\n    def state_dict(self):\n        fast_state_dict = self.base_optimizer.state_dict()\n        slow_state = {\n            (id(k) if isinstance(k, torch.Tensor) else k): v\n            for k, v in self.state.items()\n        }\n        fast_state = fast_state_dict['state']\n        param_groups = fast_state_dict['param_groups']\n        return {\n            'state': fast_state,\n            'slow_state': slow_state,\n            'param_groups': param_groups,\n        }\n\n    def load_state_dict(self, state_dict):\n        fast_state_dict = {\n            'state': state_dict['state'],\n            'param_groups': state_dict['param_groups'],\n        }\n        self.base_optimizer.load_state_dict(fast_state_dict)\n\n        # We want to restore the slow state, but share param_groups reference\n        # with base_optimizer. This is a bit redundant but least code\n        slow_state_new = False\n        if 'slow_state' not in state_dict:\n            print('Loading state_dict from optimizer without Lookahead applied.')\n            state_dict['slow_state'] = defaultdict(dict)\n            slow_state_new = True\n        slow_state_dict = {\n            'state': state_dict['slow_state'],\n            'param_groups': state_dict['param_groups'],  # this is pointless but saves code\n        }\n        super(Lookahead, self).load_state_dict(slow_state_dict)\n        self.param_groups = self.base_optimizer.param_groups  # make both ref same container\n        if slow_state_new:\n            # reapply defaults to catch missing lookahead specific ones\n            for name, default in self.defaults.items():\n                for group in self.param_groups:\n                    group.setdefault(name, default)\n\ndef LookaheadAdam(params, alpha=0.5, k=6, *args, **kwargs):\n     adam = Adam(params, *args, **kwargs)\n     return Lookahead(adam, alpha, k)\n\n\n# RAdam + LARS + LookAHead\n\n# Lookahead implementation from https://github.com/lonePatient/lookahead_pytorch/blob/master/optimizer.py\n# RAdam + LARS implementation from https://gist.github.com/redknightlois/c4023d393eb8f92bb44b2ab582d7ec20\n\ndef Over9000(params, alpha=0.5, k=6, *args, **kwargs):\n     ralamb = Ralamb(params, *args, **kwargs)\n     return Lookahead(ralamb, alpha, k)\n\nRangerLars = Over9000 ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"## Shake Function \n\nimport torch\nfrom torch.autograd import Function\n\n\nclass ShakeFunction(Function):\n    @staticmethod\n    def forward(ctx, x1, x2, alpha, beta):\n        ctx.save_for_backward(x1, x2, alpha, beta)\n\n        y = x1 * alpha + x2 * (1 - alpha)\n        return y\n\n    @staticmethod\n    def backward(ctx, grad_output):\n        x1, x2, alpha, beta = ctx.saved_variables\n        grad_x1 = grad_x2 = grad_alpha = grad_beta = None\n\n        if ctx.needs_input_grad[0]:\n            grad_x1 = grad_output * beta\n        if ctx.needs_input_grad[1]:\n            grad_x2 = grad_output * (1 - beta)\n\n        return grad_x1, grad_x2, grad_alpha, grad_beta\n\n\nshake_function = ShakeFunction.apply\n\n\ndef get_alpha_beta(batch_size, shake_config, device):\n    forward_shake, backward_shake, shake_image = shake_config\n\n    if forward_shake and not shake_image:\n        alpha = torch.rand(1)\n    elif forward_shake and shake_image:\n        alpha = torch.rand(batch_size).view(batch_size, 1, 1, 1)\n    else:\n        alpha = torch.FloatTensor([0.5])\n\n    if backward_shake and not shake_image:\n        beta = torch.rand(1)\n    elif backward_shake and shake_image:\n        beta = torch.rand(batch_size).view(batch_size, 1, 1, 1)\n    else:\n        beta = torch.FloatTensor([0.5])\n\n    alpha = alpha.to(device)\n    beta = beta.to(device)\n\n    return alpha, beta","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"## shake-shake network\ndef initialize_weights(module):\n    if isinstance(module, nn.Conv2d):\n        nn.init.kaiming_normal_(module.weight.data, mode='fan_out')\n    elif isinstance(module, nn.BatchNorm2d):\n        module.weight.data.fill_(1)\n        module.bias.data.zero_()\n    elif isinstance(module, nn.Linear):\n        module.bias.data.zero_()\n\n\nclass ResidualPath(nn.Module):\n    def __init__(self, in_channels, out_channels, stride):\n        super(ResidualPath, self).__init__()\n\n        self.conv1 = nn.Conv2d(\n            in_channels,\n            out_channels,\n            kernel_size=3,\n            stride=stride,\n            padding=1,\n            bias=False,\n        )\n        self.bn1 = nn.BatchNorm2d(out_channels)\n        self.conv2 = nn.Conv2d(\n            out_channels,\n            out_channels,\n            kernel_size=3,\n            stride=1,\n            padding=1,\n            bias=False)\n        self.bn2 = nn.BatchNorm2d(out_channels)\n\n    def forward(self, x):\n        x = F.relu(x, inplace=False)\n        x = F.relu(self.bn1(self.conv1(x)), inplace=False)\n        x = self.bn2(self.conv2(x))\n        return x\n\n\nclass DownsamplingShortcut(nn.Module):\n    def __init__(self, in_channels):\n        super(DownsamplingShortcut, self).__init__()\n        self.conv1 = nn.Conv2d(\n            in_channels,\n            in_channels,\n            kernel_size=1,\n            stride=1,\n            padding=0,\n            bias=False)\n        self.conv2 = nn.Conv2d(\n            in_channels,\n            in_channels,\n            kernel_size=1,\n            stride=1,\n            padding=0,\n            bias=False)\n        self.bn = nn.BatchNorm2d(in_channels * 2)\n\n    def forward(self, x):\n        x = F.relu(x, inplace=False)\n        y1 = F.avg_pool2d(x, kernel_size=1, stride=2, padding=0)\n        y1 = self.conv1(y1)\n\n        y2 = F.pad(x[:, :, 1:, 1:], (0, 1, 0, 1))\n        y2 = F.avg_pool2d(y2, kernel_size=1, stride=2, padding=0)\n        y2 = self.conv2(y2)\n\n        z = torch.cat([y1, y2], dim=1)\n        z = self.bn(z)\n\n        return z\n\n\nclass BasicBlock(nn.Module):\n    def __init__(self, in_channels, out_channels, stride, shake_config):\n        super(BasicBlock, self).__init__()\n\n        self.shake_config = shake_config\n\n        self.residual_path1 = ResidualPath(in_channels, out_channels, stride)\n        self.residual_path2 = ResidualPath(in_channels, out_channels, stride)\n\n        self.shortcut = nn.Sequential()\n        if in_channels != out_channels:\n            self.shortcut.add_module('downsample',\n                                     DownsamplingShortcut(in_channels))\n\n    def forward(self, x):\n        x1 = self.residual_path1(x)\n        x2 = self.residual_path2(x)\n\n        if self.training:\n            shake_config = self.shake_config\n        else:\n            shake_config = (False, False, False)\n\n        alpha, beta = get_alpha_beta(x.size(0), shake_config, x.device)\n        y = shake_function(x1, x2, alpha, beta)\n\n        return self.shortcut(x) + y\n\n\nclass Network(nn.Module):\n    def __init__(self, config):\n        super(Network, self).__init__()\n\n        input_shape = config['input_shape']\n        n_classes = config['n_classes']\n\n        base_channels = config['base_channels']\n        depth = config['depth']\n        self.shake_config = (config['shake_forward'], config['shake_backward'],\n                             config['shake_image'])\n\n        block = BasicBlock\n        n_blocks_per_stage = (depth - 2) // 6\n        assert n_blocks_per_stage * 6 + 2 == depth\n\n        n_channels = [base_channels, base_channels * 2, base_channels * 4]\n\n        self.conv = nn.Conv2d(\n            input_shape[1],\n            n_channels[0],\n            kernel_size=3,\n            stride=1,\n            padding=1,\n            bias=False)\n        self.bn = nn.BatchNorm2d(base_channels)\n\n        self.stage1 = self._make_stage(\n            n_channels[0], n_channels[0], n_blocks_per_stage, block, stride=1)\n        self.stage2 = self._make_stage(\n            n_channels[0], n_channels[1], n_blocks_per_stage, block, stride=2)\n        self.stage3 = self._make_stage(\n            n_channels[1], n_channels[2], n_blocks_per_stage, block, stride=2)\n\n        # compute conv feature size\n        with torch.no_grad():\n            self.feature_size = self._forward_conv(\n                torch.zeros(*input_shape)).view(-1).shape[0]\n\n        #self.fc = nn.Linear(self.feature_size, n_classes)\n        # vowel_diacritic\n        self.fc1 = nn.Linear(self.feature_size,11)\n        # grapheme_root\n        self.fc2 = nn.Linear(self.feature_size,168)\n        # consonant_diacritic\n        self.fc3 = nn.Linear(self.feature_size,7)\n\n        # initialize weights\n        self.apply(initialize_weights)\n\n    def _make_stage(self, in_channels, out_channels, n_blocks, block, stride):\n        stage = nn.Sequential()\n        for index in range(n_blocks):\n            block_name = 'block{}'.format(index + 1)\n            if index == 0:\n                stage.add_module(\n                    block_name,\n                    block(\n                        in_channels,\n                        out_channels,\n                        stride=stride,\n                        shake_config=self.shake_config))\n            else:\n                stage.add_module(\n                    block_name,\n                    block(\n                        out_channels,\n                        out_channels,\n                        stride=1,\n                        shake_config=self.shake_config))\n        return stage\n\n    def _forward_conv(self, x):\n        x = F.relu(self.bn(self.conv(x)), inplace=True)\n        x = self.stage1(x)\n        x = self.stage2(x)\n        x = self.stage3(x)\n        x = F.adaptive_avg_pool2d(x, output_size=1)\n        return x\n\n    def forward(self, x):\n        x = self._forward_conv(x)\n        x = x.view(x.size(0), -1)\n        x1 = self.fc1(x)\n        x2= self.fc2(x)\n        x3 = self.fc3(x)\n        return x1,x2,x3","execution_count":null,"outputs":[]},{"metadata":{"id":"ef1FmDUd9vNH","colab_type":"code","outputId":"cb697b24-6e8a-467e-b69d-7e5efe85fb5c","colab":{"base_uri":"https://localhost:8080/","height":34},"trusted":true},"cell_type":"code","source":"## Make sure we are using the GPU . Get CUDA device\ndevice = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\nprint(device)","execution_count":null,"outputs":[]},{"metadata":{"id":"nqrdveM69vNJ","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"## Load model and pass desired parameters in config\ndef load_model(config):\n    #module = importlib.import_module('models.{}'.format(config['arch']))\n    #Network = getattr(module, 'Network')\n    return Network(config)\n\nmodel = load_model(model_config)\nmodel = model.to(device)","execution_count":null,"outputs":[]},{"metadata":{"id":"81pOj1vV9vNM","colab_type":"code","outputId":"c05616df-9ac2-458a-89c7-39d3107ec5d0","colab":{"base_uri":"https://localhost:8080/","height":34},"trusted":true},"cell_type":"code","source":"## A Small but useful test of the Model by using dummy input . .\nx = torch.zeros((32,1, 64, 64))\nwith torch.no_grad():\n    output1,output2,output3 =model(x.cuda())\nprint(output3.shape)","execution_count":null,"outputs":[]},{"metadata":{"id":"L16fEIZZD5WG","colab_type":"code","outputId":"b6207260-2f0a-4152-84f9-c4d5154d9386","colab":{"base_uri":"https://localhost:8080/","height":34},"trusted":true},"cell_type":"code","source":"## This is a placeholder for finetunign or inference when you want to load a previously trained model\n##and want to finetune or want to do just inference\n\n##model.load_state_dict(torch.load('../input/bengef2/effnetb0_trial_stage1.pth'))  \n## There is a small thing . I trained using effnetb4 offline for 20 epochs and loaded the weight\n## I forgot to change the naming convension and it still reads effnetb0 . But this is actually effnetb4","execution_count":null,"outputs":[]},{"metadata":{"id":"AGQiXKUk9vNT","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"n_epochs = 1 ## 1 Epoch as sample . \"I am just a poor boy  , no GPU in reality \"\n\n#optimizer =torch.optim.Adam(model.parameters(), lr=1e-4)\n#scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, 5, 2e-4) ## This didnt give good result need to correct  and get the right scheduler .\noptimizer =Over9000(model.parameters(), lr=2e-3, weight_decay=1e-3) ## New once \nscheduler = torch.optim.lr_scheduler.OneCycleLR(optimizer, 1e-2, total_steps=None, epochs=n_epochs, steps_per_epoch=5021, pct_start=0.0,\n                                   anneal_strategy='cos', cycle_momentum=True,base_momentum=0.85, max_momentum=0.95,  div_factor=100.0) ## Scheduler . Step for each batch\ncriterion = nn.CrossEntropyLoss()\nbatch_size=32","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"##Local Metrics implementation .\n##https://www.kaggle.com/corochann/bengali-seresnext-training-with-pytorch\nimport numpy as np\nimport sklearn.metrics\nimport torch\n\n\ndef macro_recall(pred_y, y, n_grapheme=168, n_vowel=11, n_consonant=7):\n    pred_y = torch.split(pred_y, [n_grapheme, n_vowel, n_consonant], dim=1)\n    pred_labels = [torch.argmax(py, dim=1).cpu().numpy() for py in pred_y]\n\n    y = y.cpu().numpy()\n    # pred_y = [p.cpu().numpy() for p in pred_y]\n\n    recall_grapheme = sklearn.metrics.recall_score(pred_labels[0], y[:, 0], average='macro')\n    recall_vowel = sklearn.metrics.recall_score(pred_labels[1], y[:, 1], average='macro')\n    recall_consonant = sklearn.metrics.recall_score(pred_labels[2], y[:, 2], average='macro')\n    scores = [recall_grapheme, recall_vowel, recall_consonant]\n    final_score = np.average(scores, weights=[2, 1, 1])\n    # print(f'recall: grapheme {recall_grapheme}, vowel {recall_vowel}, consonant {recall_consonant}, '\n    #       f'total {final_score}, y {y.shape}')\n    return final_score\n\ndef macro_recall_multi(pred_graphemes, true_graphemes,pred_vowels,true_vowels,pred_consonants,true_consonants, n_grapheme=168, n_vowel=11, n_consonant=7):\n    #pred_y = torch.split(pred_y, [n_grapheme], dim=1)\n    pred_label_graphemes = torch.argmax(pred_graphemes, dim=1).cpu().numpy()\n\n    true_label_graphemes = true_graphemes.cpu().numpy()\n    \n    pred_label_vowels = torch.argmax(pred_vowels, dim=1).cpu().numpy()\n\n    true_label_vowels = true_vowels.cpu().numpy()\n    \n    pred_label_consonants = torch.argmax(pred_consonants, dim=1).cpu().numpy()\n\n    true_label_consonants = true_consonants.cpu().numpy()    \n    # pred_y = [p.cpu().numpy() for p in pred_y]\n\n    recall_grapheme = sklearn.metrics.recall_score(pred_label_graphemes, true_label_graphemes, average='macro')\n    recall_vowel = sklearn.metrics.recall_score(pred_label_vowels, true_label_vowels, average='macro')\n    recall_consonant = sklearn.metrics.recall_score(pred_label_consonants, true_label_consonants, average='macro')\n    scores = [recall_grapheme, recall_vowel, recall_consonant]\n    final_score = np.average(scores, weights=[2, 1, 1])\n    #print(f'recall: grapheme {recall_grapheme}, vowel {recall_vowel}, consonant {recall_consonant}, '\n    #       f'total {final_score}')\n    return final_score\n\n\ndef calc_macro_recall(solution, submission):\n    # solution df, submission df\n    scores = []\n    for component in ['grapheme_root', 'consonant_diacritic', 'vowel_diacritic']:\n        y_true_subset = solution[solution[component] == component]['target'].values\n        y_pred_subset = submission[submission[component] == component]['target'].values\n        scores.append(sklearn.metrics.recall_score(\n            y_true_subset, y_pred_subset, average='macro'))\n    final_score = np.average(scores, weights=[2, 1, 1])\n    return final_score","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"#### Training and validation part "},{"metadata":{"id":"WNPMuR0N9vNU","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"## This function for train is copied from @hanjoonchoe\n## We are going to train and track accuracy and then evaluate and track validation accuracy\ndef train(epoch,history):\n  model.train()\n  losses = []\n  accs = []\n  acc= 0.0\n  total = 0.0\n  running_loss = 0.0\n  running_acc = 0.0\n  running_recall = 0.0\n  for idx, (inputs,labels1,labels2,labels3) in tqdm(enumerate(train_loader),total=len(train_loader)):\n      inputs = inputs.to(device)\n      labels1 = labels1.to(device)\n      labels2 = labels2.to(device)\n      labels3 = labels3.to(device)\n      total += len(inputs)\n      optimizer.zero_grad()\n      outputs1,outputs2,outputs3 = model(inputs.unsqueeze(1).float())\n      loss1 = 0.1*criterion(outputs1,labels1)\n      loss2 = 0.7* criterion(outputs2,labels2)\n      loss3 = 0.2*criterion(outputs3,labels3)\n      running_loss += loss1.item()+loss2.item()+loss3.item()\n      running_recall+= macro_recall_multi(outputs2,labels2,outputs1,labels1,outputs3,labels3)\n      running_acc += (outputs1.argmax(1)==labels1).float().mean()\n      running_acc += (outputs2.argmax(1)==labels2).float().mean()\n      running_acc += (outputs3.argmax(1)==labels3).float().mean()\n      (loss1+loss2+loss3).backward()\n      optimizer.step()\n      optimizer.zero_grad()\n      acc = running_acc/total\n      scheduler.step()\n  losses.append(running_loss/len(train_loader))\n  accs.append(running_acc/(len(train_loader)*3))\n  print(' train epoch : {}\\tacc : {:.2f}%'.format(epoch,running_acc/(len(train_loader)*3)))\n  print('loss : {:.4f}'.format(running_loss/len(train_loader)))\n    \n  print('recall: {:.4f}'.format(running_recall/len(train_loader)))\n  total_train_recall = running_recall/len(train_loader)\n  torch.cuda.empty_cache()\n  gc.collect()\n  history.loc[epoch, 'train_loss'] = losses[0]\n  history.loc[epoch,'train_acc'] = accs[0].cpu().numpy()\n  history.loc[epoch,'train_recall'] = total_train_recall\n  return  total_train_recall\ndef evaluate(epoch,history):\n   model.eval()\n   losses = []\n   accs = []\n   recalls = []\n   acc= 0.0\n   total = 0.0\n   #print('epochs {}/{} '.format(epoch+1,epochs))\n   running_loss = 0.0\n   running_acc = 0.0\n   running_recall = 0.0\n   with torch.no_grad():\n     for idx, (inputs,labels1,labels2,labels3) in tqdm(enumerate(valid_loader),total=len(valid_loader)):\n        inputs = inputs.to(device)\n        labels1 = labels1.to(device)\n        labels2 = labels2.to(device)\n        labels3 = labels3.to(device)\n        total += len(inputs)\n        outputs1,outputs2,outputs3 = model(inputs.unsqueeze(1).float())\n        loss1 = criterion(outputs1,labels1)\n        loss2 = 2*criterion(outputs2,labels2)\n        loss3 = criterion(outputs3,labels3)\n        running_loss += loss1.item()+loss2.item()+loss3.item()\n        running_recall+= macro_recall_multi(outputs2,labels2,outputs1,labels1,outputs3,labels3)\n        running_acc += (outputs1.argmax(1)==labels1).float().mean()\n        running_acc += (outputs2.argmax(1)==labels2).float().mean()\n        running_acc += (outputs3.argmax(1)==labels3).float().mean()\n        acc = running_acc/total\n        #scheduler.step()\n   losses.append(running_loss/len(valid_loader))\n   accs.append(running_acc/(len(valid_loader)*3))\n   recalls.append(running_recall/len(valid_loader))\n   total_recall = running_recall/len(valid_loader) ## No its not Arnold Schwarzenegger movie\n   print('val epoch: {} \\tval acc : {:.2f}%'.format(epoch,running_acc/(len(valid_loader)*3)))\n   print('loss : {:.4f}'.format(running_loss/len(valid_loader)))\n   print('recall: {:.4f}'.format(running_recall/len(valid_loader)))\n   history.loc[epoch, 'valid_loss'] = losses[0]\n   history.loc[epoch, 'valid_acc'] = accs[0].cpu().numpy()\n   history.loc[epoch, 'valid_recall'] = total_recall\n   return  total_recall\n","execution_count":null,"outputs":[]},{"metadata":{"id":"U_DXw7VK1L44","colab_type":"code","outputId":"327ceb49-8300-4fd9-9880-5e8821653448","colab":{"base_uri":"https://localhost:8080/","height":1000,"referenced_widgets":["60a7608bbb994558950656625a80a348","f071169d8d3d43e49622505b453587c2","31a4c071e67c4d9eb417177bbbc06e61","0640f2218c3e486fa7df7877c82da990","7c895c2996164ca984e1f07eea3e9d7e","765e09916e944ccd8c3e94034b5f97d1","5865b44100a746a2832500276d9df9ca","6f3dfe1e04fa4629ae42383564dfca2e","d2b7fe5e528943998a657871fe20525a","f1170bc175bd4bb4a8400f893eb6d85f","a653945e05fe4cbd81f359bfcb025f56","d7d2ab5a2cdc4438b0000d6580c23ed4","4b22d8a5e373440ba3755102b8c085dd","d397610d0fbe43aeb548d1fb127ad4df","33f7a1a0e409420fab7e008b5364164c","370904291b784338b9b0752d27bc61ff","f1246e6a5dbd49c984b8a99c0ffa0dc4","1e29de085df5483597041cb4a95eb939","604a7119c8a04c07837eb9f520a9e8a4","1b54b7a6640043e5883beeb59ab3d403","f18e6cee9e7146f2bd997e5f9dfaf468","a3ea218855e946599fb783a922665ea7","bcc8ebeeb4f14929bcc328fc678c9fbe","6fa82b38d1414e528b86f55c7ae00935","19d88b0a6e6549eab778dda50ccb1d94","d6a168d0800343f8bb19d884a575c081","d1c98826e0754638bf5cbd7e0ec53b35","cd7d2071f5454e2f94c404e1cd02d2a5","fa58e28e6d6d490fa87d369269eb3115","16771e8ab2384fff891d68f90a25224c","a89932cc7ec54d25a6d164dedc26b447","dbb54f3322f748279b3e53cbf0fb7b0f","cb51b398a590470296bc148f5e989738","6f4d2b74df4b46b892804d93561b18a8","2882de2943684097825c37619d2f51ba","8afe693630454028be7a4711b793c6f7","bbb604013fba4f0abd6fa405106b53f5","244b7679206245bd9f3da51c18dae710","180b2f1546304e2ab4e317c0ac7a9da8","85d242efc58e4445a74a3c553f1d4ca3"]},"trusted":true},"cell_type":"code","source":"## A very simple loop to train for number of epochs it probably can be made more robust to save only the file with best valid loss \nhistory = pd.DataFrame()\nn_epochs = 1 ## 1 Epoch as sample . \"I am just a poor boy  , no GPU in reality \"\nvalid_recall = 0.0\nbest_valid_recall = 0.0\nfor epoch in range(n_epochs):\n    torch.cuda.empty_cache()\n    gc.collect()\n    train_recall = train(epoch,history)\n    valid_recall = evaluate(epoch,history)\n    if valid_recall > best_valid_recall:\n        print(f'Validation recall has increased from:  {best_valid_recall:.4f} to: {valid_recall:.4f}. Saving checkpoint')\n        torch.save(model.state_dict(), 'effnetb0_trial_stage1.pth') ## Saving model weights based on best validation accuracy.\n        best_valid_recall = valid_recall ## Set the new validation Recall score to compare with next epoch\n        \n        \n    #scheduler.step() ## Want to test with fixed learning rate .If you want to use scheduler please uncomment this .\n    ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"history.to_csv('history.csv')\nhistory.head()","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"#### Inference part "},{"metadata":{"id":"-zIxzyEU9vNZ","colab_type":"code","colab":{},"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)\n\n# Input data files are available in the \"../input/\" directory.\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# Any results you write to the current directory are saved as output.\nimport cv2\nimport torch\nimport torch.nn as nn\nfrom torch.utils.data import Dataset,DataLoader\nfrom torchvision import transforms,models\nfrom tqdm import tqdm_notebook as tqdm","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"## Load model for inferernce . \n#model.load_state_dict(torch.load('../input/pytorch-efficientnet-starter-code/effnetb0_trial_stage1.pth')) ","execution_count":null,"outputs":[]},{"metadata":{"id":"wFmHJ21S9vNb","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"test = pd.read_csv('/kaggle/input/bengaliai-cv19/test.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#check https://www.kaggle.com/iafoss/image-preprocessing-128x128\n\ndef bbox(img):\n    rows = np.any(img, axis=1)\n    cols = np.any(img, axis=0)\n    rmin, rmax = np.where(rows)[0][[0, -1]]\n    cmin, cmax = np.where(cols)[0][[0, -1]]\n    return rmin, rmax, cmin, cmax\n\ndef crop_resize(img0, size=SIZE, pad=16):\n    #crop a box around pixels large than the threshold \n    #some images contain line at the sides\n    ymin,ymax,xmin,xmax = bbox(img0[5:-5,5:-5] > 80)\n    #cropping may cut too much, so we need to add it back\n    xmin = xmin - 13 if (xmin > 13) else 0\n    ymin = ymin - 10 if (ymin > 10) else 0\n    xmax = xmax + 13 if (xmax < WIDTH - 13) else WIDTH\n    ymax = ymax + 10 if (ymax < HEIGHT - 10) else HEIGHT\n    img = img0[ymin:ymax,xmin:xmax]\n    #remove lo intensity pixels as noise\n    img[img < 28] = 0\n    lx, ly = xmax-xmin,ymax-ymin\n    l = max(lx,ly) + pad\n    #make sure that the aspect ratio is kept in rescaling\n    img = np.pad(img, [((l-ly)//2,), ((l-lx)//2,)], mode='constant')\n    return cv2.resize(img,(size,size))","execution_count":null,"outputs":[]},{"metadata":{"id":"Kv348NR19vNg","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"class GraphemeDataset(Dataset):\n    def __init__(self, fname):\n        print(fname)\n        self.df = pd.read_parquet(fname)\n        self.data = 255 - self.df.iloc[:, 1:].values.reshape(-1, HEIGHT, WIDTH).astype(np.uint8)\n\n    def __len__(self):\n        return len(self.data)\n\n    def __getitem__(self, idx):\n        name = self.df.iloc[idx,0]\n        #normalize each image by its max val\n        img = (self.data[idx]*(255.0/self.data[idx].max())).astype(np.uint8)\n        img = crop_resize(img)\n        img = img.astype(np.float32)/255.0\n        return img, name","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"## All test data\ntest_data = ['/kaggle/input/bengaliai-cv19/test_image_data_0.parquet','/kaggle/input/bengaliai-cv19/test_image_data_1.parquet','/kaggle/input/bengaliai-cv19/test_image_data_2.parquet',\n             '/kaggle/input/bengaliai-cv19/test_image_data_3.parquet']","execution_count":null,"outputs":[]},{"metadata":{"id":"DO12892o9vNm","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"%%time\n## Inference a little faster using @Iafoss and  @peters technique\nrow_id,target = [],[]\nfor fname in test_data:\n    #data = pd.read_parquet(f'/kaggle/input/bengaliai-cv19/{fname}')\n    test_image = GraphemeDataset(fname)\n    dl = torch.utils.data.DataLoader(test_image,batch_size=128,num_workers=4,shuffle=False)\n    with torch.no_grad():\n        for x,y in tqdm(dl):\n            x = x.unsqueeze(1).float().cuda()\n            p1,p2,p3 = model(x)\n            p1 = p1.argmax(-1).view(-1).cpu()\n            p2 = p2.argmax(-1).view(-1).cpu()\n            p3 = p3.argmax(-1).view(-1).cpu()\n            for idx,name in enumerate(y):\n                row_id += [f'{name}_vowel_diacritic',f'{name}_grapheme_root',\n                           f'{name}_consonant_diacritic']\n                target += [p1[idx].item(),p2[idx].item(),p3[idx].item()]\n                \nsub_df = pd.DataFrame({'row_id': row_id, 'target': target})\nsub_df.to_csv('submission.csv', index=False)\nsub_df.head(20)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.6.6"},"colab":{"name":"Copy of Effnet-starter-kit.ipynb","provenance":[],"collapsed_sections":["ztO_qj4p9vNZ","sH9h392a9vNo"],"toc_visible":true,"machine_shape":"hm"},"accelerator":"GPU","widgets":{"application/vnd.jupyter.widget-state+json":{"60a7608bbb994558950656625a80a348":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","state":{"_view_name":"HBoxView","_dom_classes":[],"_model_name":"HBoxModel","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.5.0","box_style":"","layout":"IPY_MODEL_f071169d8d3d43e49622505b453587c2","_model_module":"@jupyter-widgets/controls","children":["IPY_MODEL_31a4c071e67c4d9eb417177bbbc06e61","IPY_MODEL_0640f2218c3e486fa7df7877c82da990"]}},"f071169d8d3d43e49622505b453587c2":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"31a4c071e67c4d9eb417177bbbc06e61":{"model_module":"@jupyter-widgets/controls","model_name":"IntProgressModel","state":{"_view_name":"ProgressView","style":"IPY_MODEL_7c895c2996164ca984e1f07eea3e9d7e","_dom_classes":[],"description":"","_model_name":"IntProgressModel","bar_style":"success","max":5021,"_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":5021,"_view_count":null,"_view_module_version":"1.5.0","orientation":"horizontal","min":0,"description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_765e09916e944ccd8c3e94034b5f97d1"}},"0640f2218c3e486fa7df7877c82da990":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","state":{"_view_name":"HTMLView","style":"IPY_MODEL_5865b44100a746a2832500276d9df9ca","_dom_classes":[],"description":"","_model_name":"HTMLModel","placeholder":"​","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":"100% 5021/5021 [11:53&lt;00:00,  7.62it/s]","_view_count":null,"_view_module_version":"1.5.0","description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_6f3dfe1e04fa4629ae42383564dfca2e"}},"7c895c2996164ca984e1f07eea3e9d7e":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","state":{"_view_name":"StyleView","_model_name":"ProgressStyleModel","description_width":"","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","bar_color":null,"_model_module":"@jupyter-widgets/controls"}},"765e09916e944ccd8c3e94034b5f97d1":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"5865b44100a746a2832500276d9df9ca":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","state":{"_view_name":"StyleView","_model_name":"DescriptionStyleModel","description_width":"","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","_model_module":"@jupyter-widgets/controls"}},"6f3dfe1e04fa4629ae42383564dfca2e":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"d2b7fe5e528943998a657871fe20525a":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","state":{"_view_name":"HBoxView","_dom_classes":[],"_model_name":"HBoxModel","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.5.0","box_style":"","layout":"IPY_MODEL_f1170bc175bd4bb4a8400f893eb6d85f","_model_module":"@jupyter-widgets/controls","children":["IPY_MODEL_a653945e05fe4cbd81f359bfcb025f56","IPY_MODEL_d7d2ab5a2cdc4438b0000d6580c23ed4"]}},"f1170bc175bd4bb4a8400f893eb6d85f":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"a653945e05fe4cbd81f359bfcb025f56":{"model_module":"@jupyter-widgets/controls","model_name":"IntProgressModel","state":{"_view_name":"ProgressView","style":"IPY_MODEL_4b22d8a5e373440ba3755102b8c085dd","_dom_classes":[],"description":"","_model_name":"IntProgressModel","bar_style":"success","max":1256,"_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":1256,"_view_count":null,"_view_module_version":"1.5.0","orientation":"horizontal","min":0,"description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_d397610d0fbe43aeb548d1fb127ad4df"}},"d7d2ab5a2cdc4438b0000d6580c23ed4":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","state":{"_view_name":"HTMLView","style":"IPY_MODEL_33f7a1a0e409420fab7e008b5364164c","_dom_classes":[],"description":"","_model_name":"HTMLModel","placeholder":"​","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":"100% 1256/1256 [00:38&lt;00:00, 32.55it/s]","_view_count":null,"_view_module_version":"1.5.0","description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_370904291b784338b9b0752d27bc61ff"}},"4b22d8a5e373440ba3755102b8c085dd":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","state":{"_view_name":"StyleView","_model_name":"ProgressStyleModel","description_width":"","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","bar_color":null,"_model_module":"@jupyter-widgets/controls"}},"d397610d0fbe43aeb548d1fb127ad4df":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"33f7a1a0e409420fab7e008b5364164c":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","state":{"_view_name":"StyleView","_model_name":"DescriptionStyleModel","description_width":"","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","_model_module":"@jupyter-widgets/controls"}},"370904291b784338b9b0752d27bc61ff":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"f1246e6a5dbd49c984b8a99c0ffa0dc4":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","state":{"_view_name":"HBoxView","_dom_classes":[],"_model_name":"HBoxModel","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.5.0","box_style":"","layout":"IPY_MODEL_1e29de085df5483597041cb4a95eb939","_model_module":"@jupyter-widgets/controls","children":["IPY_MODEL_604a7119c8a04c07837eb9f520a9e8a4","IPY_MODEL_1b54b7a6640043e5883beeb59ab3d403"]}},"1e29de085df5483597041cb4a95eb939":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"604a7119c8a04c07837eb9f520a9e8a4":{"model_module":"@jupyter-widgets/controls","model_name":"IntProgressModel","state":{"_view_name":"ProgressView","style":"IPY_MODEL_f18e6cee9e7146f2bd997e5f9dfaf468","_dom_classes":[],"description":"","_model_name":"IntProgressModel","bar_style":"success","max":5021,"_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":5021,"_view_count":null,"_view_module_version":"1.5.0","orientation":"horizontal","min":0,"description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_a3ea218855e946599fb783a922665ea7"}},"1b54b7a6640043e5883beeb59ab3d403":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","state":{"_view_name":"HTMLView","style":"IPY_MODEL_bcc8ebeeb4f14929bcc328fc678c9fbe","_dom_classes":[],"description":"","_model_name":"HTMLModel","placeholder":"​","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":"100% 5021/5021 [11:47&lt;00:00,  7.30it/s]","_view_count":null,"_view_module_version":"1.5.0","description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_6fa82b38d1414e528b86f55c7ae00935"}},"f18e6cee9e7146f2bd997e5f9dfaf468":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","state":{"_view_name":"StyleView","_model_name":"ProgressStyleModel","description_width":"","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","bar_color":null,"_model_module":"@jupyter-widgets/controls"}},"a3ea218855e946599fb783a922665ea7":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"bcc8ebeeb4f14929bcc328fc678c9fbe":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","state":{"_view_name":"StyleView","_model_name":"DescriptionStyleModel","description_width":"","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","_model_module":"@jupyter-widgets/controls"}},"6fa82b38d1414e528b86f55c7ae00935":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"19d88b0a6e6549eab778dda50ccb1d94":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","state":{"_view_name":"HBoxView","_dom_classes":[],"_model_name":"HBoxModel","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.5.0","box_style":"","layout":"IPY_MODEL_d6a168d0800343f8bb19d884a575c081","_model_module":"@jupyter-widgets/controls","children":["IPY_MODEL_d1c98826e0754638bf5cbd7e0ec53b35","IPY_MODEL_cd7d2071f5454e2f94c404e1cd02d2a5"]}},"d6a168d0800343f8bb19d884a575c081":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"d1c98826e0754638bf5cbd7e0ec53b35":{"model_module":"@jupyter-widgets/controls","model_name":"IntProgressModel","state":{"_view_name":"ProgressView","style":"IPY_MODEL_fa58e28e6d6d490fa87d369269eb3115","_dom_classes":[],"description":"","_model_name":"IntProgressModel","bar_style":"success","max":1256,"_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":1256,"_view_count":null,"_view_module_version":"1.5.0","orientation":"horizontal","min":0,"description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_16771e8ab2384fff891d68f90a25224c"}},"cd7d2071f5454e2f94c404e1cd02d2a5":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","state":{"_view_name":"HTMLView","style":"IPY_MODEL_a89932cc7ec54d25a6d164dedc26b447","_dom_classes":[],"description":"","_model_name":"HTMLModel","placeholder":"​","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":"100% 1256/1256 [00:38&lt;00:00, 32.55it/s]","_view_count":null,"_view_module_version":"1.5.0","description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_dbb54f3322f748279b3e53cbf0fb7b0f"}},"fa58e28e6d6d490fa87d369269eb3115":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","state":{"_view_name":"StyleView","_model_name":"ProgressStyleModel","description_width":"","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","bar_color":null,"_model_module":"@jupyter-widgets/controls"}},"16771e8ab2384fff891d68f90a25224c":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"a89932cc7ec54d25a6d164dedc26b447":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","state":{"_view_name":"StyleView","_model_name":"DescriptionStyleModel","description_width":"","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","_model_module":"@jupyter-widgets/controls"}},"dbb54f3322f748279b3e53cbf0fb7b0f":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"cb51b398a590470296bc148f5e989738":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","state":{"_view_name":"HBoxView","_dom_classes":[],"_model_name":"HBoxModel","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.5.0","box_style":"","layout":"IPY_MODEL_6f4d2b74df4b46b892804d93561b18a8","_model_module":"@jupyter-widgets/controls","children":["IPY_MODEL_2882de2943684097825c37619d2f51ba","IPY_MODEL_8afe693630454028be7a4711b793c6f7"]}},"6f4d2b74df4b46b892804d93561b18a8":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"2882de2943684097825c37619d2f51ba":{"model_module":"@jupyter-widgets/controls","model_name":"IntProgressModel","state":{"_view_name":"ProgressView","style":"IPY_MODEL_bbb604013fba4f0abd6fa405106b53f5","_dom_classes":[],"description":"","_model_name":"IntProgressModel","bar_style":"","max":5021,"_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":2131,"_view_count":null,"_view_module_version":"1.5.0","orientation":"horizontal","min":0,"description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_244b7679206245bd9f3da51c18dae710"}},"8afe693630454028be7a4711b793c6f7":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","state":{"_view_name":"HTMLView","style":"IPY_MODEL_180b2f1546304e2ab4e317c0ac7a9da8","_dom_classes":[],"description":"","_model_name":"HTMLModel","placeholder":"​","_view_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","value":" 42% 2131/5021 [04:58&lt;06:29,  7.42it/s]","_view_count":null,"_view_module_version":"1.5.0","description_tooltip":null,"_model_module":"@jupyter-widgets/controls","layout":"IPY_MODEL_85d242efc58e4445a74a3c553f1d4ca3"}},"bbb604013fba4f0abd6fa405106b53f5":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","state":{"_view_name":"StyleView","_model_name":"ProgressStyleModel","description_width":"","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","bar_color":null,"_model_module":"@jupyter-widgets/controls"}},"244b7679206245bd9f3da51c18dae710":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}},"180b2f1546304e2ab4e317c0ac7a9da8":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","state":{"_view_name":"StyleView","_model_name":"DescriptionStyleModel","description_width":"","_view_module":"@jupyter-widgets/base","_model_module_version":"1.5.0","_view_count":null,"_view_module_version":"1.2.0","_model_module":"@jupyter-widgets/controls"}},"85d242efc58e4445a74a3c553f1d4ca3":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","state":{"_view_name":"LayoutView","grid_template_rows":null,"right":null,"justify_content":null,"_view_module":"@jupyter-widgets/base","overflow":null,"_model_module_version":"1.2.0","_view_count":null,"flex_flow":null,"width":null,"min_width":null,"border":null,"align_items":null,"bottom":null,"_model_module":"@jupyter-widgets/base","top":null,"grid_column":null,"overflow_y":null,"overflow_x":null,"grid_auto_flow":null,"grid_area":null,"grid_template_columns":null,"flex":null,"_model_name":"LayoutModel","justify_items":null,"grid_row":null,"max_height":null,"align_content":null,"visibility":null,"align_self":null,"height":null,"min_height":null,"padding":null,"grid_auto_rows":null,"grid_gap":null,"max_width":null,"order":null,"_view_module_version":"1.2.0","grid_template_areas":null,"object_position":null,"object_fit":null,"grid_auto_columns":null,"margin":null,"display":null,"left":null}}}}},"nbformat":4,"nbformat_minor":1}