diff --git "a/Deplaoy torch model.ipynb" "b/Deplaoy torch model.ipynb" new file mode 100644--- /dev/null +++ "b/Deplaoy torch model.ipynb" @@ -0,0 +1 @@ +{"cells":[{"cell_type":"markdown","metadata":{"id":"QBjwGwRq8G6v"},"source":["# 0.Getting setup"]},{"cell_type":"code","execution_count":10,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"LMXahAud8G6y","executionInfo":{"status":"ok","timestamp":1721473851797,"user_tz":-60,"elapsed":46032,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"9b0bebc1-2eef-44c8-ecf4-05bbd0b47b51"},"outputs":[{"output_type":"stream","name":"stdout","text":["[INFO] Couldn't find torchinfo... installing it.\n","[INFO] Couldn't find going_modular or helper_functions scripts... downloading them from GitHub.\n","Cloning into 'pytorch-deep-learning'...\n","remote: Enumerating objects: 4056, done.\u001b[K\n","remote: Total 4056 (delta 0), reused 0 (delta 0), pack-reused 4056\u001b[K\n","Receiving objects: 100% (4056/4056), 646.90 MiB | 30.94 MiB/s, done.\n","Resolving deltas: 100% (2372/2372), done.\n","Updating files: 100% (248/248), done.\n"]}],"source":["# Continue with regular imports\n","import matplotlib.pyplot as plt\n","import torch\n","import torchvision\n","\n","from torch import nn\n","from torchvision import transforms\n","\n","# Try to get torchinfo, install it if it doesn't work\n","try:\n"," from torchinfo import summary\n","except:\n"," print(\"[INFO] Couldn't find torchinfo... installing it.\")\n"," !pip install -q torchinfo\n"," from torchinfo import summary\n","\n","# Try to import the going_modular directory, download it from GitHub if it doesn't work\n","try:\n"," from going_modular.going_modular import data_setup, engine\n"," from helper_functions import download_data, set_seeds, plot_loss_curves\n","except:\n"," # Get the going_modular scripts\n"," print(\"[INFO] Couldn't find going_modular or helper_functions scripts... downloading them from GitHub.\")\n"," !git clone https://github.com/mrdbourke/pytorch-deep-learning\n"," !mv pytorch-deep-learning/going_modular .\n"," !mv pytorch-deep-learning/helper_functions.py . # get the helper_functions.py script\n"," !rm -rf pytorch-deep-learning\n"," from going_modular.going_modular import data_setup, engine\n"," from helper_functions import download_data, set_seeds, plot_loss_curves"]},{"cell_type":"code","execution_count":11,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":35},"id":"ci4elBQx8G61","executionInfo":{"status":"ok","timestamp":1721473851797,"user_tz":-60,"elapsed":13,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"04f0e0fe-2cf8-4d53-fa1f-c57bc8ac45c7"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["'cpu'"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"string"}},"metadata":{},"execution_count":11}],"source":["# device setup\n","device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n","device"]},{"cell_type":"markdown","metadata":{"id":"CeoaO6KM8G63"},"source":["# 1.Getting data"]},{"cell_type":"code","execution_count":12,"metadata":{"id":"kwOZKIZ_8G63","executionInfo":{"status":"ok","timestamp":1721473851797,"user_tz":-60,"elapsed":10,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}}},"outputs":[],"source":["from going_modular.going_modular import data_setup, engine\n","from helper_functions import download_data, set_seeds, plot_loss_curves\n","from torchinfo import summary\n","# Continue with regular imports\n","import matplotlib.pyplot as plt\n","import torch\n","import torchvision\n","from torch import nn\n","from torchvision import transforms\n","\n"]},{"cell_type":"code","execution_count":13,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"H8vhQqLa8G64","executionInfo":{"status":"ok","timestamp":1721473853667,"user_tz":-60,"elapsed":1879,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"aa9e4ed9-ef01-4f91-a55a-22af3f6b6c49"},"outputs":[{"output_type":"stream","name":"stdout","text":["[INFO] Did not find data/pizza_steak_sushi_20_percent directory, creating one...\n","[INFO] Downloading pizza_steak_sushi_20_percent.zip from https://github.com/mrdbourke/pytorch-deep-learning/raw/main/data/pizza_steak_sushi_20_percent.zip...\n","[INFO] Unzipping pizza_steak_sushi_20_percent.zip data...\n"]},{"output_type":"execute_result","data":{"text/plain":["PosixPath('data/pizza_steak_sushi_20_percent')"]},"metadata":{},"execution_count":13}],"source":["data_20_percent_path = download_data(source=\"https://github.com/mrdbourke/pytorch-deep-learning/raw/main/data/pizza_steak_sushi_20_percent.zip\",\n"," destination=\"pizza_steak_sushi_20_percent\")\n","data_20_percent_path"]},{"cell_type":"code","execution_count":14,"metadata":{"id":"9AnyBUa48G64","executionInfo":{"status":"ok","timestamp":1721473853668,"user_tz":-60,"elapsed":8,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}}},"outputs":[],"source":["# creating train , test\n","train_dir = data_20_percent_path / \"train\"\n","test_dir = data_20_percent_path / \"test\""]},{"cell_type":"markdown","metadata":{"id":"z772kX6y8G64"},"source":["# 2.FoodVision Mini model deployement experiment outline"]},{"cell_type":"markdown","metadata":{"id":"_BMEoK2J8G65"},"source":["# 3.Creating an EffNetB2 feature extractor"]},{"cell_type":"code","execution_count":15,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"L4A-p7Ce8G65","executionInfo":{"status":"ok","timestamp":1721473854864,"user_tz":-60,"elapsed":1203,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"ca859987-fa94-4dcc-e1fb-0562225318ca"},"outputs":[{"output_type":"stream","name":"stderr","text":["Downloading: \"https://download.pytorch.org/models/efficientnet_b2_rwightman-c35c1473.pth\" to /root/.cache/torch/hub/checkpoints/efficientnet_b2_rwightman-c35c1473.pth\n","100%|██████████| 35.2M/35.2M [00:00<00:00, 81.9MB/s]\n"]}],"source":["effnet_weights = torchvision.models.EfficientNet_B2_Weights.DEFAULT\n","effnet_transform = effnet_weights.transforms()\n","effnetb2 = torchvision.models.efficientnet_b2(weights=effnet_weights)\n","for param in effnetb2.parameters():\n"," param.requires_grad = False"]},{"cell_type":"code","execution_count":16,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"gOXqUfkv8G65","executionInfo":{"status":"ok","timestamp":1721473854864,"user_tz":-60,"elapsed":12,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"ced5dd1c-9c95-4c3e-e43d-9c2e97dd2b18"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["Sequential(\n"," (0): Dropout(p=0.3, inplace=True)\n"," (1): Linear(in_features=1408, out_features=1000, bias=True)\n",")"]},"metadata":{},"execution_count":16}],"source":["effnetb2.classifier"]},{"cell_type":"code","execution_count":17,"metadata":{"id":"6ADYIdfY8G66","executionInfo":{"status":"ok","timestamp":1721473854864,"user_tz":-60,"elapsed":6,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}}},"outputs":[],"source":["effnetb2.classifier = nn.Sequential(\n"," nn.Dropout(p=0.3, inplace=True),\n"," nn.Linear(in_features=1408, out_features=3, bias=True)\n",")"]},{"cell_type":"markdown","metadata":{"id":"TOi9KIiA8G67"},"source":["## 3.1 Creating a function to make an effnetb2 feature extractor"]},{"cell_type":"code","execution_count":18,"metadata":{"id":"SFb5t66z8G68","executionInfo":{"status":"ok","timestamp":1721473854865,"user_tz":-60,"elapsed":6,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}}},"outputs":[],"source":["def create_effnetb2_model(num_classes:int=3,\n"," seed:int=42):\n"," \"\"\"Creates an EfficientNetB2 feature extractor model and transforms.\n","\n"," Args:\n"," num_classes (int, optional): number of classes in the classifier head.\n"," Defaults to 3.\n"," seed (int, optional): random seed value. Defaults to 42.\n","\n"," Returns:\n"," model (torch.nn.Module): EffNetB2 feature extractor model.\n"," transforms (torchvision.transforms): EffNetB2 image transforms.\n"," \"\"\"\n"," # 1, 2, 3. Create EffNetB2 pretrained weights, transforms and model\n"," weights = torchvision.models.EfficientNet_B2_Weights.DEFAULT\n"," transforms = weights.transforms()\n"," model = torchvision.models.efficientnet_b2(weights=weights)\n","\n"," # 4. Freeze all layers in base model\n"," for param in model.parameters():\n"," param.requires_grad = False\n","\n"," # 5. Change classifier head with random seed for reproducibility\n"," torch.manual_seed(seed)\n"," model.classifier = nn.Sequential(\n"," nn.Dropout(p=0.3, inplace=True),\n"," nn.Linear(in_features=1408, out_features=num_classes),\n"," )\n","\n"," return model, transforms"]},{"cell_type":"code","execution_count":19,"metadata":{"id":"ZGYm93P88G69","executionInfo":{"status":"ok","timestamp":1721473855542,"user_tz":-60,"elapsed":683,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}}},"outputs":[],"source":["effnetb2 , effnet_transform = create_effnetb2_model()"]},{"cell_type":"code","execution_count":20,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"IVASoFKy8G69","executionInfo":{"status":"ok","timestamp":1721473864697,"user_tz":-60,"elapsed":9163,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"9431bbc3-d895-4fe0-d0f4-049930d5d734"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["============================================================================================================================================\n","Layer (type (var_name)) Input Shape Output Shape Param # Trainable\n","============================================================================================================================================\n","EfficientNet (EfficientNet) [32, 3, 224, 224] [32, 3] -- Partial\n","├─Sequential (features) [32, 3, 224, 224] [32, 1408, 7, 7] -- False\n","│ └─Conv2dNormActivation (0) [32, 3, 224, 224] [32, 32, 112, 112] -- False\n","│ │ └─Conv2d (0) [32, 3, 224, 224] [32, 32, 112, 112] (864) False\n","│ │ └─BatchNorm2d (1) [32, 32, 112, 112] [32, 32, 112, 112] (64) False\n","│ │ └─SiLU (2) [32, 32, 112, 112] [32, 32, 112, 112] -- --\n","│ └─Sequential (1) [32, 32, 112, 112] [32, 16, 112, 112] -- False\n","│ │ └─MBConv (0) [32, 32, 112, 112] [32, 16, 112, 112] (1,448) False\n","│ │ └─MBConv (1) [32, 16, 112, 112] [32, 16, 112, 112] (612) False\n","│ └─Sequential (2) [32, 16, 112, 112] [32, 24, 56, 56] -- False\n","│ │ └─MBConv (0) [32, 16, 112, 112] [32, 24, 56, 56] (6,004) False\n","│ │ └─MBConv (1) [32, 24, 56, 56] [32, 24, 56, 56] (10,710) False\n","│ │ └─MBConv (2) [32, 24, 56, 56] [32, 24, 56, 56] (10,710) False\n","│ └─Sequential (3) [32, 24, 56, 56] [32, 48, 28, 28] -- False\n","│ │ └─MBConv (0) [32, 24, 56, 56] [32, 48, 28, 28] (16,518) False\n","│ │ └─MBConv (1) [32, 48, 28, 28] [32, 48, 28, 28] (43,308) False\n","│ │ └─MBConv (2) [32, 48, 28, 28] [32, 48, 28, 28] (43,308) False\n","│ └─Sequential (4) [32, 48, 28, 28] [32, 88, 14, 14] -- False\n","│ │ └─MBConv (0) [32, 48, 28, 28] [32, 88, 14, 14] (50,300) False\n","│ │ └─MBConv (1) [32, 88, 14, 14] [32, 88, 14, 14] (123,750) False\n","│ │ └─MBConv (2) [32, 88, 14, 14] [32, 88, 14, 14] (123,750) False\n","│ │ └─MBConv (3) [32, 88, 14, 14] [32, 88, 14, 14] (123,750) False\n","│ └─Sequential (5) [32, 88, 14, 14] [32, 120, 14, 14] -- False\n","│ │ └─MBConv (0) [32, 88, 14, 14] [32, 120, 14, 14] (149,158) False\n","│ │ └─MBConv (1) [32, 120, 14, 14] [32, 120, 14, 14] (237,870) False\n","│ │ └─MBConv (2) [32, 120, 14, 14] [32, 120, 14, 14] (237,870) False\n","│ │ └─MBConv (3) [32, 120, 14, 14] [32, 120, 14, 14] (237,870) False\n","│ └─Sequential (6) [32, 120, 14, 14] [32, 208, 7, 7] -- False\n","│ │ └─MBConv (0) [32, 120, 14, 14] [32, 208, 7, 7] (301,406) False\n","│ │ └─MBConv (1) [32, 208, 7, 7] [32, 208, 7, 7] (686,868) False\n","│ │ └─MBConv (2) [32, 208, 7, 7] [32, 208, 7, 7] (686,868) False\n","│ │ └─MBConv (3) [32, 208, 7, 7] [32, 208, 7, 7] (686,868) False\n","│ │ └─MBConv (4) [32, 208, 7, 7] [32, 208, 7, 7] (686,868) False\n","│ └─Sequential (7) [32, 208, 7, 7] [32, 352, 7, 7] -- False\n","│ │ └─MBConv (0) [32, 208, 7, 7] [32, 352, 7, 7] (846,900) False\n","│ │ └─MBConv (1) [32, 352, 7, 7] [32, 352, 7, 7] (1,888,920) False\n","│ └─Conv2dNormActivation (8) [32, 352, 7, 7] [32, 1408, 7, 7] -- False\n","│ │ └─Conv2d (0) [32, 352, 7, 7] [32, 1408, 7, 7] (495,616) False\n","│ │ └─BatchNorm2d (1) [32, 1408, 7, 7] [32, 1408, 7, 7] (2,816) False\n","│ │ └─SiLU (2) [32, 1408, 7, 7] [32, 1408, 7, 7] -- --\n","├─AdaptiveAvgPool2d (avgpool) [32, 1408, 7, 7] [32, 1408, 1, 1] -- --\n","├─Sequential (classifier) [32, 1408] [32, 3] -- True\n","│ └─Dropout (0) [32, 1408] [32, 1408] -- --\n","│ └─Linear (1) [32, 1408] [32, 3] 4,227 True\n","============================================================================================================================================\n","Total params: 7,705,221\n","Trainable params: 4,227\n","Non-trainable params: 7,700,994\n","Total mult-adds (G): 21.04\n","============================================================================================================================================\n","Input size (MB): 19.27\n","Forward/backward pass size (MB): 5017.53\n","Params size (MB): 30.82\n","Estimated Total Size (MB): 5067.62\n","============================================================================================================================================"]},"metadata":{},"execution_count":20}],"source":["from torchinfo import summary\n","summary(model=effnetb2,\n"," input_size=(32,3,224,224),\n"," col_names=[\"input_size\", \"output_size\", \"num_params\", \"trainable\"],\n"," col_width=20,\n"," row_settings=[\"var_names\"]\n"," )"]},{"cell_type":"markdown","metadata":{"id":"FpGwS2Ai8G69"},"source":["## 3.2 Creating DataLoaders for EffNetB2"]},{"cell_type":"code","execution_count":21,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Gf6uC1Lg8G6-","executionInfo":{"status":"ok","timestamp":1721473864698,"user_tz":-60,"elapsed":17,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"34d5eb99-8d31-44fa-e4de-294aa1af07e6"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["(,\n"," ['pizza', 'steak', 'sushi'])"]},"metadata":{},"execution_count":21}],"source":["from going_modular.going_modular import data_setup\n","train_effnet_dataloader , test_effnet_dataloader , num_classes = data_setup.create_dataloaders(train_dir=train_dir,\n"," test_dir=test_dir,\n"," transform=effnet_transform,\n"," batch_size=32)\n","train_effnet_dataloader , num_classes"]},{"cell_type":"markdown","metadata":{"id":"EM-O6lTW8G6-"},"source":["## 3.3 Training EffNetB2 Feature extractor"]},{"cell_type":"code","execution_count":22,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":190,"referenced_widgets":["1e1e297b4df64febaed870acc55bc315","7516c61d217242d7a6de8d8bdca0aa50","8c61840f835c4eb89cd586ac62921e17","52c9c452e4384c578da4decb76fb9c60","43924b8842364e259db6dcc98fd135bf","b9754b4aecac4e1c86f1563ca8cdd1ab","d3529fd788a145e9b94e2719e2d19399","671d7ee4bd4f4769af39a8d44c84d31f","9bd61d9847414ab7948f2b075a06771a","0ff43ca1e5c840f3bf272ab8181cedf1","9adf1545759b4373a8c5fe8426685022"]},"id":"Nr-PAC418G6-","executionInfo":{"status":"ok","timestamp":1721474789278,"user_tz":-60,"elapsed":924594,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"e09a729b-f6d5-412d-d828-ca8d6a498fbd"},"outputs":[{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/5 [00:00"],"image/png":"iVBORw0KGgoAAAANSUhEUgAABL4AAAJwCAYAAACH0KjyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADQpElEQVR4nOzdeXiU9bn/8c/MZN/3BRIChEASVgFBJCBIEGtL1Vb02EWl1XNq6zk9pbbW1t1Wf6c9tXpsrT22Wmu1tSpaT7Vq2AOyCLiSQDaWBLKH7PvM8/tjkoFIwCQkeWYm79d1PZcw88wz9xAkk8987/trMQzDEAAAAAAAAOBlrGYXAAAAAAAAAIwEgi8AAAAAAAB4JYIvAAAAAAAAeCWCLwAAAAAAAHglgi8AAAAAAAB4JYIvAAAAAAAAeCWCLwAAAAAAAHglgi8AAAAAAAB4JYIvAAAAAAAAeCWCLwAAAAAAAHglgi8ApvrjH/8oi8WivXv3ml0KAAAAejzxxBOyWCxauHCh2aUAwHkh+AIAAAAA9PH8889r4sSJ2rNnj4qKiswuBwCGjOALAAAAAOBy+PBhvfvuu3rkkUcUGxur559/3uyS+tXS0mJ2CQA8AMEXALf3/vvv63Of+5zCwsIUEhKiFStWaNeuXX3O6erq0v3336+0tDQFBAQoOjpaWVlZysnJcZ1TUVGhtWvXKikpSf7+/kpMTNSVV16pI0eOjPIrAgAAcF/PP/+8IiMj9fnPf17XXHNNv8FXfX29vve972nixIny9/dXUlKSbrjhBtXU1LjOaW9v13333aepU6cqICBAiYmJ+tKXvqTi4mJJ0pYtW2SxWLRly5Y+1z5y5IgsFov++Mc/um676aabFBISouLiYl1xxRUKDQ3VV7/6VUlSbm6u1qxZowkTJsjf31/Jycn63ve+p7a2tjPqPnjwoK699lrFxsYqMDBQ06ZN009+8hNJ0ubNm2WxWPTqq6+e8bgXXnhBFotFO3fuHPSfJwBz+ZhdAACcy4EDB7RkyRKFhYXphz/8oXx9ffW73/1Oy5Yt09atW11zJ+677z49/PDDuvnmm7VgwQI1NjZq79692r9/v1auXClJ+vKXv6wDBw7o3//93zVx4kRVVVUpJydHx44d08SJE018lQAAAO7j+eef15e+9CX5+fnp+uuv129/+1u99957uvDCCyVJzc3NWrJkifLz8/WNb3xDc+fOVU1NjV5//XWVlZUpJiZGdrtdX/jCF7Rx40b9y7/8i7773e+qqalJOTk5+uSTT5Samjrourq7u7Vq1SplZWXpv//7vxUUFCRJeumll9Ta2qpbb71V0dHR2rNnjx5//HGVlZXppZdecj3+o48+0pIlS+Tr66t//dd/1cSJE1VcXKz/+7//089+9jMtW7ZMycnJev7553X11Vef8WeSmpqqRYsWncefLABTGABgomeeecaQZLz33nv93n/VVVcZfn5+RnFxseu2EydOGKGhocbSpUtdt82ePdv4/Oc/f9bnOXnypCHJ+MUvfjF8xQMAAHiZvXv3GpKMnJwcwzAMw+FwGElJScZ3v/td1zn33HOPIclYv379GY93OByGYRjG008/bUgyHnnkkbOes3nzZkOSsXnz5j73Hz582JBkPPPMM67bbrzxRkOS8aMf/eiM67W2tp5x28MPP2xYLBbj6NGjrtuWLl1qhIaG9rnt9HoMwzDuvPNOw9/f36ivr3fdVlVVZfj4+Bj33nvvGc8DwP3R6gjAbdntdr3zzju66qqrNHnyZNftiYmJ+spXvqLt27ersbFRkhQREaEDBw6osLCw32sFBgbKz89PW7Zs0cmTJ0elfgAAAE/z/PPPKz4+XsuXL5ckWSwWXXfddfrrX/8qu90uSXrllVc0e/bsM1ZF9Z7fe05MTIz+/d///aznDMWtt956xm2BgYGuX7e0tKimpkYXX3yxDMPQ+++/L0mqrq7Wtm3b9I1vfEMTJkw4az033HCDOjo69PLLL7tue/HFF9Xd3a2vfe1rQ64bgHkIvgC4rerqarW2tmratGln3JeRkSGHw6HS0lJJ0gMPPKD6+npNnTpVM2fO1A9+8AN99NFHrvP9/f31X//1X/rnP/+p+Ph4LV26VD//+c9VUVExaq8HAADAndntdv31r3/V8uXLdfjwYRUVFamoqEgLFy5UZWWlNm7cKEkqLi7WjBkzznmt4uJiTZs2TT4+wzddx8fHR0lJSWfcfuzYMd10002KiopSSEiIYmNjdckll0iSGhoaJEklJSWS9Jl1p6en68ILL+wz1+z555/XRRddpClTpgzXSwEwigi+AHiFpUuXqri4WE8//bRmzJih3//+95o7d65+//vfu875z//8TxUUFOjhhx9WQECA7r77bmVkZLg+CQQAABjLNm3apPLycv31r39VWlqa67j22msladh3dzzbyq/elWWf5u/vL6vVesa5K1eu1BtvvKE77rhDr732mnJyclyD8R0Ox6DruuGGG7R161aVlZWpuLhYu3btYrUX4MEYbg/AbcXGxiooKEiHDh06476DBw/KarUqOTnZdVtUVJTWrl2rtWvXqrm5WUuXLtV9992nm2++2XVOamqqvv/97+v73/++CgsLNWfOHP3yl7/Un//851F5TQAAAO7q+eefV1xcnH7zm9+ccd/69ev16quv6sknn1Rqaqo++eSTc14rNTVVu3fvVldXl3x9ffs9JzIyUpJzh8jTHT16dMA1f/zxxyooKNCzzz6rG264wXX76Tt7S3KNzfisuiXpX/7lX7Ru3Tr95S9/UVtbm3x9fXXdddcNuCYA7oUVXwDcls1m02WXXaa///3vOnLkiOv2yspKvfDCC8rKylJYWJgkqba2ts9jQ0JCNGXKFHV0dEiSWltb1d7e3uec1NRUhYaGus4BAAAYq9ra2rR+/Xp94Qtf0DXXXHPGcdttt6mpqUmvv/66vvzlL+vDDz/Uq6++esZ1DMOQ5NxNu6amRr/+9a/Pek5KSopsNpu2bdvW5/4nnnhiwHXbbLY+1+z99WOPPdbnvNjYWC1dulRPP/20jh071m89vWJiYvS5z31Of/7zn/X888/r8ssvV0xMzIBrAuBeWPEFwC08/fTTeuutt864/b777lNOTo6ysrL07W9/Wz4+Pvrd736njo4O/fznP3edl5mZqWXLlmnevHmKiorS3r179fLLL+u2226TJBUUFGjFihW69tprlZmZKR8fH7366quqrKzUv/zLv4za6wQAAHBHr7/+upqamvTFL36x3/svuugixcbG6vnnn9cLL7ygl19+WWvWrNE3vvENzZs3T3V1dXr99df15JNPavbs2brhhhv0pz/9SevWrdOePXu0ZMkStbS0aMOGDfr2t7+tK6+8UuHh4VqzZo0ef/xxWSwWpaam6h//+IeqqqoGXHd6erpSU1N1++236/jx4woLC9Mrr7zS72ZG//M//6OsrCzNnTtX//qv/6pJkybpyJEjeuONN/TBBx/0OfeGG27QNddcI0l68MEHB/4HCcD9mLmlJAA888wzhqSzHqWlpcb+/fuNVatWGSEhIUZQUJCxfPly49133+1znZ/+9KfGggULjIiICCMwMNBIT083fvaznxmdnZ2GYRhGTU2N8Z3vfMdIT083goODjfDwcGPhwoXG3/72NzNeNgAAgFtZvXq1ERAQYLS0tJz1nJtuusnw9fU1ampqjNraWuO2224zxo8fb/j5+RlJSUnGjTfeaNTU1LjOb21tNX7yk58YkyZNMnx9fY2EhATjmmuuMYqLi13nVFdXG1/+8peNoKAgIzIy0vi3f/s345NPPjEkGc8884zrvBtvvNEIDg7ut668vDwjOzvbCAkJMWJiYoxbbrnF+PDDD8+4hmEYxieffGJcffXVRkREhBEQEGBMmzbNuPvuu8+4ZkdHhxEZGWmEh4cbbW1tA/xTBOCOLIbxqXWdAAAAAACMYd3d3Ro3bpxWr16tP/zhD2aXA+A8MOMLAAAAAIDTvPbaa6quru4zMB+AZ2LFFwAAAAAAknbv3q2PPvpIDz74oGJiYrR//36zSwJwnljxBQAAAACApN/+9re69dZbFRcXpz/96U9mlwNgGLDiCwAAAAAAAF6JFV8AAAAAAADwSgRfAAAAAAAA8Eo+ZhcwEA6HQydOnFBoaKgsFovZ5QAAAA9gGIaampo0btw4Wa181ueueJ8HAAAGazDv8zwi+Dpx4oSSk5PNLgMAAHig0tJSJSUlmV0GzoL3eQAAYKgG8j7PI4Kv0NBQSc4XFBYWZnI1AADAEzQ2Nio5Odn1PgLuifd5AABgsAbzPm9IwddvfvMb/eIXv1BFRYVmz56txx9/XAsWLDjr+fX19frJT36i9evXq66uTikpKXr00Ud1xRVXDOj5epe9h4WF8YYIAAAMCu1z7o33eQAAYKgG8j5v0MHXiy++qHXr1unJJ5/UwoUL9eijj2rVqlU6dOiQ4uLizji/s7NTK1euVFxcnF5++WWNHz9eR48eVURExGCfGgAAAAAAABiwQQdfjzzyiG655RatXbtWkvTkk0/qjTfe0NNPP60f/ehHZ5z/9NNPq66uTu+++658fX0lSRMnTjy/qgEAAAAAAIDPMKgtjjo7O7Vv3z5lZ2efuoDVquzsbO3cubPfx7z++utatGiRvvOd7yg+Pl4zZszQQw89JLvdftbn6ejoUGNjY58DAAAAAAAAGIxBrfiqqamR3W5XfHx8n9vj4+N18ODBfh9TUlKiTZs26atf/arefPNNFRUV6dvf/ra6urp077339vuYhx9+WPfff/9gSgMAYFAMw1B3d/c5P4iBe7PZbPLx8WGGFwAAAM5qxHd1dDgciouL0//+7//KZrNp3rx5On78uH7xi1+cNfi68847tW7dOtfve6f1AwAwHDo7O1VeXq7W1lazS8F5CgoKUmJiovz8/MwuBQAAAG5oUMFXTEyMbDabKisr+9xeWVmphISEfh+TmJgoX19f2Ww2120ZGRmqqKhQZ2dnv29U/f395e/vP5jSAAAYEIfDocOHD8tms2ncuHHy8/NjxZAHMgxDnZ2dqq6u1uHDh5WWliardVATHAAAADAGDCr48vPz07x587Rx40ZdddVVkpw/QGzcuFG33XZbv49ZvHixXnjhBTkcDtcb0oKCAj6dBQCYorOzUw6HQ8nJyQoKCjK7HJyHwMBA+fr66ujRo+rs7FRAQIDZJQEAAMDNDPqj0XXr1umpp57Ss88+q/z8fN16661qaWlx7fJ4ww036M4773Sdf+utt6qurk7f/e53VVBQoDfeeEMPPfSQvvOd7wzfqwAAYJBYHeQd+DoCAADgXAY94+u6665TdXW17rnnHlVUVGjOnDl66623XAPvjx071udNaHJyst5++21973vf06xZszR+/Hh997vf1R133DF8rwIAAAAAAAD4lCENt7/tttvO2tq4ZcuWM25btGiRdu3aNZSnAgAAAAAAAIaE/gAAAMagiRMn6tFHHx2Wa23ZskUWi0X19fXDcj0AAABguBB8AQDgIZYtW6b//M//HJZrvffee/rXf/3XYbkWPMdvfvMbTZw4UQEBAVq4cKH27Nlz1nO7urr0wAMPKDU1VQEBAZo9e7beeuutPufcd999slgsfY709PSRfhkAAAADRvAFAICXMAxD3d3dAzo3NjaWXS3HmBdffFHr1q3Tvffeq/3792v27NlatWqVqqqq+j3/rrvu0u9+9zs9/vjjysvL07e+9S1dffXVev/99/ucN336dJWXl7uO7du3j8bLAQAAGBCCLwDAmGcYhlo7u0f9MAxjwDXedNNN2rp1qx577DHXypo//vGPslgs+uc//6l58+bJ399f27dvV3Fxsa688krFx8crJCREF154oTZs2NDnep9udbRYLPr973+vq6++WkFBQUpLS9Prr78+5D/TV155RdOnT5e/v78mTpyoX/7yl33uf+KJJ5SWlqaAgADFx8frmmuucd338ssv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eitz5szh4MGDDBkyhNdee43BgweTm5vLwoULMQyDJ554gs2bN5OTk8OECRMACAoKumgcvr6+TJw4kVq1arF+/XoeeOABfH19+fvf/w7Ab7/9xuDBg/nnP//Jl19+SWFhIb///nvZ4++++26WLFnCu+++S4sWLdi9e3e5RN2l2LFjBz/++CM//fQTNpsNgPz8fEaPHk3z5s3Jy8vjueeeY/DgwSQlJWG1WsnLy6NHjx7Url2bqVOnEhERwerVqykpKSEmJoY+ffowYcIE2rZtW/Y6EyZMYNiwYVitVb/+SokvEREREREREakx/P39cXNzw8vLi4iICAD+9a9/0apVK15++eWyfp9//jnR0dFs27aNvLw8Tpw4wU033UTdunUBSEg4dTiPp6cnBQUFZc93KZ555pmyj2NiYnjiiSeYNGlSWeLrpZde4vbbb+f5558v69eiRQsAtm3bxvfff8/MmTPp06cPAPXr16/ol4LCwkK+/PJLQkNPrY6++eaby/X5/PPPCQ0NZdOmTTRr1oxvvvmGjIwMVqxYUZbgi42NLet///33M3z4cN58803c3d1ZvXo169ev55dffqlwfJVBiS8RERERERERuXKuXubKK3u99hVYu3Ytc+fOxcfH56z7du7cSb9+/ejduzcJCQn079+ffv36ccsttxAYGHjZr/ndd9/x7rvvsnPnzrLEmp+fX9n9SUlJPPDAA+d8bFJSEjabjR49elz26wPUrVu3XNILYPv27Tz33HMsW7aMzMzMsu2JKSkpNGvWjKSkJFq1anXeVW2DBg1ixIgRTJkyhdtvv52JEydyzTXXEBMTc0WxXi4lvkRERERERETkylksl7zdsLrJy8vjhhtu4NVXXz3rvsjISGw2GzNnzmTx4sX88ccfvPfee/zzn/9k2bJl1KtXr8Kvt2TJEu644w6ef/55+vfvj7+/P5MmTeLf//53WR9Pz/OfSHyh+wCsVivGGXXPzqwfBuDtffb1uuGGG6hbty6ffPIJtWrVoqSkhGbNmlFYWHhJr+3m5sbdd9/NhAkTuOmmm/jmm2945513LviYq0nF7UVERERERESkRnFzc6O4uLjs89atW7Nx40ZiYmKIjY0t10qTQxaLhS5duvD888+zZs0a3NzcmDJlyjmf72IWL15M3bp1+ec//0nbtm1p2LAhe/bsKdenefPmzJ49+5yPT0hIoKSkhPnz55/z/tDQUHJzc8nPzy+7LSkp6aJxZWVlsXXrVp555hl69+5NkyZNOHz48FlxJSUlcejQofM+z/3338+sWbP44IMPyraI2osSXyIiIiIiIiJSo8TExJSdQpiZmcmIESM4dOgQQ4YMYcWKFezcuZMZM2Zwzz33UFxczLJly3j55ZdZuXIlKSkp/PTTT2RkZNCkSZOy51u3bh1bt24lMzPznKurTtewYUNSUlKYNGkSO3fu5N133y1LopUaM2YM3377LWPGjGHz5s2sX7++bEVaTEwMQ4cO5d577+Xnn39m9+7dzJs3j++//x6ADh064OXlxT/+8Q927tzJN998w8SJEy/6dQkMDCQ4OJj//Oc/7Nixgzlz5jB69OhyfYYMGUJERASDBg0iMTGRXbt28eOPP7JkyZKyPk2aNKFjx448+eSTDBky5KKrxK4mJb5EREREREREpEZ54oknsNlsxMfHExoaSmFhIYmJiRQXF9OvXz8SEhIYNWoUAQEBWK1W/Pz8WLBgAddeey2NGjXimWee4d///jcDBw4E4IEHHiAuLo62bdsSGhpKYmLiBV////7v/3j88ccZOXIkLVu2ZPHixTz77LPl+vTs2ZPJkyczdepUWrZsSa9evVi+fHnZ/R9++CG33HILjzzyCI0bN+aBBx4oW+EVFBTEV199xe+//05CQgLffvstY8eOvejXxWq1MmnSJFatWkWzZs14/PHHef3118v1cXNz448//iAsLIxrr72WhIQExo0bV3YqZKn77ruPwsJC7r333ou+7tVkMc7c9FkN5eTk4O/vT3Z2drlCbyIiIiLno/mDY9B1EhFxXMePH2f37t3Uq1cPDw8Pe4cj1cyLL77I5MmTWbdu3WU9/kLfXxWZP2jFl4iIiIiIiIiIVIq8vDw2bNjA+++/z6OPPmrvcJT4EhERERERERGpTC+//DI+Pj7nbKXbI53VyJEjadOmDT179rT7NkcAF3sHICIiIiIiIiLiTIYPH86tt956zvvsWei9KkycOPGSCulXFSW+REREREREREQqUVBQEEFBQfYOQ9BWRxERERERERG5Ag5wZp44oMr6vlLiS0REREREREQqzNXVFYCjR4/aORJxRqXfV6XfZ5dLWx1FREREREREpMJsNhsBAQGkp6cD4OXlhcVisXNU4ugMw+Do0aOkp6cTEBCAzWa7oudT4ktERERERERELktERARAWfJLpLIEBASUfX9dCSW+REREREREROSyWCwWIiMjCQsLo6ioyN7hiJNwdXW94pVepZT4EhEREREREZErYrPZKi1RIVKZVNxeRERERERERESckhJfIiIiIiIiIiLilJT4EhERERERERERp+QQNb4MwwAgJyfHzpGIiIiIoyidN5TOI6R60jxPREREKqoi8zyHSHzl5uYCEB0dbedIRERExNHk5ubi7+9v7zDkPDTPExERkct1KfM8i+EAfwYtKSnhwIED+Pr6YrFYKv35c3JyiI6OZu/evfj5+VX681c3Gq9z03idm8br3DTeymUYBrm5udSqVQurVdUdqivN8yqXxuvcNF7npvE6N423clVknucQK76sVitRUVFX/XX8/PxqxDdgKY3XuWm8zk3jdW4ab+XRSq/qT/O8q0PjdW4ar3PTeJ2bxlt5LnWepz9/ioiIiIiIiIiIU1LiS0REREREREREnJISX4C7uztjxozB3d3d3qFUCY3XuWm8zk3jdW4ar0jlq2nfZxqvc9N4nZvG69w0XvtxiOL2IiIiIiIiIiIiFaUVXyIiIiIiIiIi4pSU+BIREREREREREaekxJeIiIiIiIiIiDglJb5ERERERERERMQp1ZjE1/jx44mJicHDw4MOHTqwfPnyC/afPHkyjRs3xsPDg4SEBH7//fcqirRyVGS8EydOxGKxlGseHh5VGO3lW7BgATfccAO1atXCYrHw888/X/Qx8+bNo3Xr1ri7uxMbG8vEiROvepyVpaLjnTdv3lnX1mKxkJqaWjUBX6FXXnmFdu3a4evrS1hYGIMGDWLr1q0XfZyjvn8vZ7yO/P798MMPad68OX5+fvj5+dGpUyemTZt2wcc46rWFio/Xka/tuYwbNw6LxcKoUaMu2M+Rr7HYj+Z5mueVcuR5HtSsuZ7meZrnnclRry1onlfd53k1IvH13XffMXr0aMaMGcPq1atp0aIF/fv3Jz09/Zz9Fy9ezJAhQ7jvvvtYs2YNgwYNYtCgQWzYsKGKI788FR0vgJ+fHwcPHixre/bsqcKIL19+fj4tWrRg/Pjxl9R/9+7dXHfddVxzzTUkJSUxatQo7r//fmbMmHGVI60cFR1vqa1bt5a7vmFhYVcpwso1f/58RowYwdKlS5k5cyZFRUX069eP/Pz88z7Gkd+/lzNecNz3b1RUFOPGjWPVqlWsXLmSXr16ceONN7Jx48Zz9nfkawsVHy847rU904oVK/j4449p3rz5Bfs5+jUW+9A8T/O8Uo4+z4OaNdfTPE/zvNM58rUFzfOq/TzPqAHat29vjBgxouzz4uJio1atWsYrr7xyzv633nqrcd1115W7rUOHDsZDDz10VeOsLBUd74QJEwx/f/8qiu7qAYwpU6ZcsM/f//53o2nTpuVuu+2224z+/ftfxciujksZ79y5cw3AOHz4cJXEdLWlp6cbgDF//vzz9nH09+/pLmW8zvL+LRUYGGh8+umn57zPma5tqQuN11mubW5urtGwYUNj5syZRo8ePYzHHnvsvH2d8RrL1ad5nuZ5pZxpnmcYNW+up3ne2Zzl/VtK87xTnOXaOso8z+lXfBUWFrJq1Sr69OlTdpvVaqVPnz4sWbLknI9ZsmRJuf4A/fv3P2//6uRyxguQl5dH3bp1iY6Ovmhm2pE58rW9Ei1btiQyMpK+ffuSmJho73AuW3Z2NgBBQUHn7eNM1/hSxgvO8f4tLi5m0qRJ5Ofn06lTp3P2caZreynjBee4tiNGjOC6664769qdizNdY6kamudpnnc6R762V8oZ5nqa552bM7x/Nc87N2e4to4yz3P6xFdmZibFxcWEh4eXuz08PPy8e99TU1Mr1L86uZzxxsXF8fnnn/PLL7/w1VdfUVJSQufOndm3b19VhFylzndtc3JyOHbsmJ2iunoiIyP56KOP+PHHH/nxxx+Jjo6mZ8+erF692t6hVVhJSQmjRo2iS5cuNGvW7Lz9HPn9e7pLHa+jv3/Xr1+Pj48P7u7uDB8+nClTphAfH3/Ovs5wbSsyXke/tgCTJk1i9erVvPLKK5fU3xmusVQtzfNMmueZato8D5xnrqd53rk5+vtX8zzN805nz2vsctVfQaq9Tp06lctEd+7cmSZNmvDxxx/z4osv2jEyuVJxcXHExcWVfd65c2d27tzJW2+9xX//+187RlZxI0aMYMOGDSxatMjeoVSJSx2vo79/4+LiSEpKIjs7mx9++IGhQ4cyf/78804SHF1Fxuvo13bv3r089thjzJw506GLtYo4Okf/v0QuzFnmeprnnZujv381z9M8r7pw+sRXSEgINpuNtLS0crenpaURERFxzsdERERUqH91cjnjPZOrqyutWrVix44dVyNEuzrftfXz88PT09NOUVWt9u3bO9ykYuTIkfz6668sWLCAqKioC/Z15PdvqYqM90yO9v51c3MjNjYWgDZt2rBixQreeecdPv7447P6OsO1rch4z+Ro13bVqlWkp6fTunXrstuKi4tZsGAB77//PgUFBdhstnKPcYZrLFVL8zyT5nkmzfNMjjbX0zzv0jna+1fzPM3zTmfPa+z0Wx3d3Nxo06YNs2fPLrutpKSE2bNnn3e/badOncr1B5g5c+YF9+dWF5cz3jMVFxezfv16IiMjr1aYduPI17ayJCUlOcy1NQyDkSNHMmXKFObMmUO9evUu+hhHvsaXM94zOfr7t6SkhIKCgnPe58jX9nwuNN4zOdq17d27N+vXrycpKamstW3bljvuuIOkpKSzJkPgnNdYri7N8zTPO50jX9vK5ChzPc3zNM87nSNf2/PRPK88u17jq14+vxqYNGmS4e7ubkycONHYtGmT8eCDDxoBAQFGamqqYRiGcddddxlPPfVUWf/ExETDxcXFeOONN4zNmzcbY8aMMVxdXY3169fbawgVUtHxPv/888aMGTOMnTt3GqtWrTJuv/12w8PDw9i4caO9hnDJcnNzjTVr1hhr1qwxAOPNN9801qxZY+zZs8cwDMN46qmnjLvuuqus/65duwwvLy/jb3/7m7F582Zj/Pjxhs1mM6ZPn26vIVRIRcf71ltvGT///LOxfft2Y/369cZjjz1mWK1WY9asWfYaQoU8/PDDhr+/vzFv3jzj4MGDZe3o0aNlfZzp/Xs543Xk9+9TTz1lzJ8/39i9e7exbt0646mnnjIsFovxxx9/GIbhXNfWMCo+Xke+tudz5mk/znaNxT40z9M8r5Sjz/MMo2bN9TTP0zzPWa6tYWieZxjVe55XIxJfhmEY7733nlGnTh3Dzc3NaN++vbF06dKy+3r06GEMHTq0XP/vv//eaNSokeHm5mY0bdrU+O2336o44itTkfGOGjWqrG94eLhx7bXXGqtXr7ZD1BVXeoTzma10fEOHDjV69Ohx1mNatmxpuLm5GfXr1zcmTJhQ5XFfroqO99VXXzUaNGhgeHh4GEFBQUbPnj2NOXPm2Cf4y3CusQLlrpkzvX8vZ7yO/P699957jbp16xpubm5GaGio0bt377LJgWE417U1jIqP15Gv7fmcOSFytmss9qN5nuZ5pz/GUed5hlGz5nqa52me5yzX1jA0zzOM6j3PsxiGYVT+OjIRERERERERERH7cvoaXyIiIiIiIiIiUjMp8SUiIiIiIiIiIk5JiS8REREREREREXFKSnyJiIiIiIiIiIhTUuJLRERERERERESckhJfIiIiIiIiIiLilJT4EhERERERERERp6TEl4iIiIiIiIiIOCUlvkSkRrBYLPz888/2DkNERERErgLN9UTkfJT4EpGrbtiwYVgslrPagAED7B2aiIiIiFwhzfVEpDpzsXcAIlIzDBgwgAkTJpS7zd3d3U7RiIiIiEhl0lxPRKorrfgSkSrh7u5OREREuRYYGAiYS9M//PBDBg4ciKenJ/Xr1+eHH34o9/j169fTq1cvPD09CQ4O5sEHHyQvL69cn88//5ymTZvi7u5OZGQkI0eOLHd/ZmYmgwcPxsvLi4YNGzJ16tSy+w4fPswdd9xBaGgonp6eNGzY8KzJm4iIiIicm+Z6IlJdKfElItXCs88+y80338zatWu54447uP3229m8eTMA+fn59O/fn8DAQFasWMHkyZOZNWtWucnOhx9+yIgRI3jwwQdZv349U6dOJTY2ttxrPP/889x6662sW7eOa6+9ljvuuINDhw6Vvf6mTZuYNm0amzdv5sMPPyQkJKTqvgAiIiIiTkxzPRGxG0NE5CobOnSoYbPZDG9v73LtpZdeMgzDMABj+PDh5R7ToUMH4+GHHzYMwzD+85//GIGBgUZeXl7Z/b/99pthtVqN1NRUwzAMo1atWsY///nP88YAGM8880zZ53l5eQZgTJs2zTAMw7jhhhuMe+65p3IGLCIiIlKDaK4nItWZanyJSJW45ppr+PDDD8vdFhQUVPZxp06dyt3XqVMnkpKSANi8eTMtWrTA29u77P4uXbpQUlLC1q1bsVgsHDhwgN69e18whubNm5d97O3tjZ+fH+np6QA8/PDD3HzzzaxevZp+/foxaNAgOnfufFljFREREalpNNcTkepKiS8RqRLe3t5nLUevLJ6enpfUz9XVtdznFouFkpISAAYOHMiePXv4/fffmTlzJr1792bEiBG88cYblR6viIiIiLPRXE9EqivV+BKRamHp0qVnfd6kSRMAmjRpwtq1a8nPzy+7PzExEavVSlxcHL6+vsTExDB79uwriiE0NJShQ4fy1Vdf8fbbb/Of//znip5PREREREya64mIvWjFl4hUiYKCAlJTU8vd5uLiUlZUdPLkybRt25auXbvy9ddfs3z5cj777DMA7rjjDsaMGcPQoUMZO3YsGRkZPProo9x1112Eh4cDMHbsWIYPH05YWBgDBw4kNzeXxMREHn300UuK77nnnqNNmzY0bdqUgoICfv3117LJmIiIiIhcmOZ6IlJdKfElIlVi+vTpREZGlrstLi6OLVu2AOYpPJMmTeKRRx4hMjKSb7/9lvj4eAC8vLyYMWMGjz32GO3atcPLy4ubb76ZN998s+y5hg4dyvHjx3nrrbd44oknCAkJ4ZZbbrnk+Nzc3Hj66adJTk7G09OTbt26MWnSpEoYuYiIiIjz01xPRKori2EYhr2DEJGazWKxMGXKFAYNGmTvUERERESkkmmuJyL2pBpfIiIiIiIiIiLilJT4EhERERERERERp6StjiIiIiIiIiIi4pS04ktERERERERERJySEl8iIiIiIiIiIuKUlPgSERERERERERGnpMSXiIiIiIiIiIg4JSW+RERERERERETEKSnxJSIiIiIiIiIiTkmJLxERERERERERcUpKfImIiIiIiIiIiFP6f4TyDH5e+0OiAAAAAElFTkSuQmCC\n"},"metadata":{}}],"source":["from helper_functions import plot_loss_curves\n","plot_loss_curves(effnetb2_results)"]},{"cell_type":"markdown","metadata":{"id":"HWTBEPK88G6_"},"source":["## 3.5 Saving effnetb2 model\n"]},{"cell_type":"code","execution_count":24,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"YmGS5kN88G6_","executionInfo":{"status":"ok","timestamp":1721474790363,"user_tz":-60,"elapsed":23,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"e6016b5d-037a-4e0a-9320-7b664cf077c2"},"outputs":[{"output_type":"stream","name":"stdout","text":["[INFO] Saving model to: models/effnetb2.pth\n"]}],"source":["from going_modular.going_modular import utils\n","utils.save_model(model=effnetb2,\n"," target_dir=\"models\",\n"," model_name=\"effnetb2.pth\")"]},{"cell_type":"markdown","metadata":{"id":"dQp0NBw-8G7A"},"source":["## 3.6 Checking effnetb2 size"]},{"cell_type":"code","execution_count":25,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"xN30KPRa8G7A","executionInfo":{"status":"ok","timestamp":1721474790363,"user_tz":-60,"elapsed":17,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"95962771-8b60-4927-be81-822cfc35365c"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["29"]},"metadata":{},"execution_count":25}],"source":["from pathlib import Path\n","effnetb2_size = Path(\"models/effnetb2.pth\").stat().st_size // (1024**2)\n","effnetb2_size"]},{"cell_type":"markdown","metadata":{"id":"IlSnuJJL8G7B"},"source":["## 3.7 Collecting EffNetb2 feature extractor stats"]},{"cell_type":"code","execution_count":26,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"iCWYUJBf8G7B","executionInfo":{"status":"ok","timestamp":1721474790363,"user_tz":-60,"elapsed":13,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"1ad08d4a-5732-4c5f-ace9-bbe3a605ef50"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["7705221"]},"metadata":{},"execution_count":26}],"source":["# count number of parameters in EffNetB2\n","effnetb2_total_params = sum(torch.numel(param) for param in effnetb2.parameters())\n","effnetb2_total_params"]},{"cell_type":"code","execution_count":27,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"kexM53Ih8G7B","executionInfo":{"status":"ok","timestamp":1721474790363,"user_tz":-60,"elapsed":10,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"04de7f6b-dafb-4fa1-bc65-d9091b326866"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["{'test loss': 0.1567613050341606,\n"," 'test acc': 0.947159090909091,\n"," 'number of params': 7705221,\n"," 'model size (MB)': 29}"]},"metadata":{},"execution_count":27}],"source":["# putting everything in a dict\n","effnetb2_dict = {\n"," \"test loss\" : effnetb2_results['test_loss'][-1],\n"," \"test acc\" : effnetb2_results['test_acc'][-1],\n"," \"number of params\" : effnetb2_total_params,\n"," \"model size (MB)\":effnetb2_size\n","}\n","effnetb2_dict"]},{"cell_type":"markdown","metadata":{"id":"ysPCl6ll8G7C"},"source":["# 4 Creating a ViT feature extractor"]},{"cell_type":"code","execution_count":28,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"OBId3VaY8G7C","executionInfo":{"status":"ok","timestamp":1721474795289,"user_tz":-60,"elapsed":4934,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"a4b01a9b-c21b-4676-b988-c7ecb5398527"},"outputs":[{"output_type":"stream","name":"stderr","text":["Downloading: \"https://download.pytorch.org/models/vit_b_16-c867db91.pth\" to /root/.cache/torch/hub/checkpoints/vit_b_16-c867db91.pth\n","100%|██████████| 330M/330M [00:03<00:00, 98.4MB/s]\n"]},{"output_type":"execute_result","data":{"text/plain":["VisionTransformer(\n"," (conv_proj): Conv2d(3, 768, kernel_size=(16, 16), stride=(16, 16))\n"," (encoder): Encoder(\n"," (dropout): Dropout(p=0.0, inplace=False)\n"," (layers): Sequential(\n"," (encoder_layer_0): EncoderBlock(\n"," (ln_1): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (self_attention): MultiheadAttention(\n"," (out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)\n"," )\n"," (dropout): Dropout(p=0.0, inplace=False)\n"," (ln_2): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (mlp): MLPBlock(\n"," (0): Linear(in_features=768, out_features=3072, bias=True)\n"," (1): GELU(approximate='none')\n"," (2): Dropout(p=0.0, inplace=False)\n"," (3): Linear(in_features=3072, out_features=768, bias=True)\n"," (4): Dropout(p=0.0, inplace=False)\n"," )\n"," )\n"," (encoder_layer_1): EncoderBlock(\n"," (ln_1): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (self_attention): MultiheadAttention(\n"," (out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)\n"," )\n"," (dropout): Dropout(p=0.0, inplace=False)\n"," (ln_2): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (mlp): MLPBlock(\n"," (0): Linear(in_features=768, out_features=3072, bias=True)\n"," (1): GELU(approximate='none')\n"," (2): Dropout(p=0.0, inplace=False)\n"," (3): Linear(in_features=3072, out_features=768, bias=True)\n"," (4): Dropout(p=0.0, inplace=False)\n"," )\n"," )\n"," (encoder_layer_2): EncoderBlock(\n"," (ln_1): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (self_attention): MultiheadAttention(\n"," (out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)\n"," )\n"," (dropout): Dropout(p=0.0, inplace=False)\n"," (ln_2): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (mlp): MLPBlock(\n"," (0): Linear(in_features=768, out_features=3072, bias=True)\n"," (1): GELU(approximate='none')\n"," (2): Dropout(p=0.0, inplace=False)\n"," (3): Linear(in_features=3072, out_features=768, bias=True)\n"," (4): Dropout(p=0.0, inplace=False)\n"," )\n"," )\n"," (encoder_layer_3): EncoderBlock(\n"," (ln_1): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (self_attention): MultiheadAttention(\n"," (out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)\n"," )\n"," (dropout): Dropout(p=0.0, inplace=False)\n"," (ln_2): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (mlp): MLPBlock(\n"," (0): Linear(in_features=768, out_features=3072, bias=True)\n"," (1): GELU(approximate='none')\n"," (2): Dropout(p=0.0, inplace=False)\n"," (3): Linear(in_features=3072, out_features=768, bias=True)\n"," (4): Dropout(p=0.0, inplace=False)\n"," )\n"," )\n"," (encoder_layer_4): EncoderBlock(\n"," (ln_1): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (self_attention): MultiheadAttention(\n"," (out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)\n"," )\n"," (dropout): Dropout(p=0.0, inplace=False)\n"," (ln_2): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (mlp): MLPBlock(\n"," (0): Linear(in_features=768, out_features=3072, bias=True)\n"," (1): GELU(approximate='none')\n"," (2): Dropout(p=0.0, inplace=False)\n"," (3): Linear(in_features=3072, out_features=768, bias=True)\n"," (4): Dropout(p=0.0, inplace=False)\n"," )\n"," )\n"," (encoder_layer_5): EncoderBlock(\n"," (ln_1): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (self_attention): MultiheadAttention(\n"," (out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)\n"," )\n"," (dropout): Dropout(p=0.0, inplace=False)\n"," (ln_2): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (mlp): MLPBlock(\n"," (0): Linear(in_features=768, out_features=3072, bias=True)\n"," (1): GELU(approximate='none')\n"," (2): Dropout(p=0.0, inplace=False)\n"," (3): Linear(in_features=3072, out_features=768, bias=True)\n"," (4): Dropout(p=0.0, inplace=False)\n"," )\n"," )\n"," (encoder_layer_6): EncoderBlock(\n"," (ln_1): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (self_attention): MultiheadAttention(\n"," (out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)\n"," )\n"," (dropout): Dropout(p=0.0, inplace=False)\n"," (ln_2): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (mlp): MLPBlock(\n"," (0): Linear(in_features=768, out_features=3072, bias=True)\n"," (1): GELU(approximate='none')\n"," (2): Dropout(p=0.0, inplace=False)\n"," (3): Linear(in_features=3072, out_features=768, bias=True)\n"," (4): Dropout(p=0.0, inplace=False)\n"," )\n"," )\n"," (encoder_layer_7): EncoderBlock(\n"," (ln_1): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (self_attention): MultiheadAttention(\n"," (out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)\n"," )\n"," (dropout): Dropout(p=0.0, inplace=False)\n"," (ln_2): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (mlp): MLPBlock(\n"," (0): Linear(in_features=768, out_features=3072, bias=True)\n"," (1): GELU(approximate='none')\n"," (2): Dropout(p=0.0, inplace=False)\n"," (3): Linear(in_features=3072, out_features=768, bias=True)\n"," (4): Dropout(p=0.0, inplace=False)\n"," )\n"," )\n"," (encoder_layer_8): EncoderBlock(\n"," (ln_1): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (self_attention): MultiheadAttention(\n"," (out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)\n"," )\n"," (dropout): Dropout(p=0.0, inplace=False)\n"," (ln_2): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (mlp): MLPBlock(\n"," (0): Linear(in_features=768, out_features=3072, bias=True)\n"," (1): GELU(approximate='none')\n"," (2): Dropout(p=0.0, inplace=False)\n"," (3): Linear(in_features=3072, out_features=768, bias=True)\n"," (4): Dropout(p=0.0, inplace=False)\n"," )\n"," )\n"," (encoder_layer_9): EncoderBlock(\n"," (ln_1): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (self_attention): MultiheadAttention(\n"," (out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)\n"," )\n"," (dropout): Dropout(p=0.0, inplace=False)\n"," (ln_2): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (mlp): MLPBlock(\n"," (0): Linear(in_features=768, out_features=3072, bias=True)\n"," (1): GELU(approximate='none')\n"," (2): Dropout(p=0.0, inplace=False)\n"," (3): Linear(in_features=3072, out_features=768, bias=True)\n"," (4): Dropout(p=0.0, inplace=False)\n"," )\n"," )\n"," (encoder_layer_10): EncoderBlock(\n"," (ln_1): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (self_attention): MultiheadAttention(\n"," (out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)\n"," )\n"," (dropout): Dropout(p=0.0, inplace=False)\n"," (ln_2): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (mlp): MLPBlock(\n"," (0): Linear(in_features=768, out_features=3072, bias=True)\n"," (1): GELU(approximate='none')\n"," (2): Dropout(p=0.0, inplace=False)\n"," (3): Linear(in_features=3072, out_features=768, bias=True)\n"," (4): Dropout(p=0.0, inplace=False)\n"," )\n"," )\n"," (encoder_layer_11): EncoderBlock(\n"," (ln_1): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (self_attention): MultiheadAttention(\n"," (out_proj): NonDynamicallyQuantizableLinear(in_features=768, out_features=768, bias=True)\n"," )\n"," (dropout): Dropout(p=0.0, inplace=False)\n"," (ln_2): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," (mlp): MLPBlock(\n"," (0): Linear(in_features=768, out_features=3072, bias=True)\n"," (1): GELU(approximate='none')\n"," (2): Dropout(p=0.0, inplace=False)\n"," (3): Linear(in_features=3072, out_features=768, bias=True)\n"," (4): Dropout(p=0.0, inplace=False)\n"," )\n"," )\n"," )\n"," (ln): LayerNorm((768,), eps=1e-06, elementwise_affine=True)\n"," )\n"," (heads): Sequential(\n"," (head): Linear(in_features=768, out_features=1000, bias=True)\n"," )\n",")"]},"metadata":{},"execution_count":28}],"source":["weights = torchvision.models.ViT_B_16_Weights.DEFAULT\n","transforms = weights.transforms()\n","model = torchvision.models.vit_b_16(weights=weights)\n","model"]},{"cell_type":"code","execution_count":29,"metadata":{"id":"WAtWzhZF8G7D","executionInfo":{"status":"ok","timestamp":1721474795290,"user_tz":-60,"elapsed":10,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}}},"outputs":[],"source":["def create_ViT_model(num_classes:int=3,\n"," seed:int=42):\n"," \"\"\"Creates an EfficientNetB2 feature extractor model and transforms.\n","\n"," Args:\n"," num_classes (int, optional): number of classes in the classifier head.\n"," Defaults to 3.\n"," seed (int, optional): random seed value. Defaults to 42.\n","\n"," Returns:\n"," model (torch.nn.Module): EffNetB2 feature extractor model.\n"," transforms (torchvision.transforms): EffNetB2 image transforms.\n"," \"\"\"\n"," # 1, 2, 3. Create EffNetB2 pretrained weights, transforms and model\n"," weights = torchvision.models.ViT_B_16_Weights.DEFAULT\n"," transforms = weights.transforms()\n"," model = torchvision.models.vit_b_16(weights=weights)\n","\n"," # 4. Freeze all layers in base model\n"," for param in model.parameters():\n"," param.requires_grad = False\n","\n"," # 5. Change classifier head with random seed for reproducibility\n"," torch.manual_seed(seed)\n"," model.heads = nn.Sequential(\n"," nn.Linear(in_features=768, out_features=3, bias=True)\n"," )\n","\n"," return model, transforms"]},{"cell_type":"code","execution_count":30,"metadata":{"id":"5xK72gPY8G7D","executionInfo":{"status":"ok","timestamp":1721474797116,"user_tz":-60,"elapsed":1835,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}}},"outputs":[],"source":["vit , vit_transform = create_ViT_model()"]},{"cell_type":"code","execution_count":31,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"mL8Gd5mg8G7E","executionInfo":{"status":"ok","timestamp":1721474822069,"user_tz":-60,"elapsed":24959,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"f1bfab7f-391f-47b8-ae14-afca52229bac"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["============================================================================================================================================\n","Layer (type (var_name)) Input Shape Output Shape Param # Trainable\n","============================================================================================================================================\n","VisionTransformer (VisionTransformer) [32, 3, 224, 224] [32, 3] 768 Partial\n","├─Conv2d (conv_proj) [32, 3, 224, 224] [32, 768, 14, 14] (590,592) False\n","├─Encoder (encoder) [32, 197, 768] [32, 197, 768] 151,296 False\n","│ └─Dropout (dropout) [32, 197, 768] [32, 197, 768] -- --\n","│ └─Sequential (layers) [32, 197, 768] [32, 197, 768] -- False\n","│ │ └─EncoderBlock (encoder_layer_0) [32, 197, 768] [32, 197, 768] (7,087,872) False\n","│ │ └─EncoderBlock (encoder_layer_1) [32, 197, 768] [32, 197, 768] (7,087,872) False\n","│ │ └─EncoderBlock (encoder_layer_2) [32, 197, 768] [32, 197, 768] (7,087,872) False\n","│ │ └─EncoderBlock (encoder_layer_3) [32, 197, 768] [32, 197, 768] (7,087,872) False\n","│ │ └─EncoderBlock (encoder_layer_4) [32, 197, 768] [32, 197, 768] (7,087,872) False\n","│ │ └─EncoderBlock (encoder_layer_5) [32, 197, 768] [32, 197, 768] (7,087,872) False\n","│ │ └─EncoderBlock (encoder_layer_6) [32, 197, 768] [32, 197, 768] (7,087,872) False\n","│ │ └─EncoderBlock (encoder_layer_7) [32, 197, 768] [32, 197, 768] (7,087,872) False\n","│ │ └─EncoderBlock (encoder_layer_8) [32, 197, 768] [32, 197, 768] (7,087,872) False\n","│ │ └─EncoderBlock (encoder_layer_9) [32, 197, 768] [32, 197, 768] (7,087,872) False\n","│ │ └─EncoderBlock (encoder_layer_10) [32, 197, 768] [32, 197, 768] (7,087,872) False\n","│ │ └─EncoderBlock (encoder_layer_11) [32, 197, 768] [32, 197, 768] (7,087,872) False\n","│ └─LayerNorm (ln) [32, 197, 768] [32, 197, 768] (1,536) False\n","├─Sequential (heads) [32, 768] [32, 3] -- True\n","│ └─Linear (0) [32, 768] [32, 3] 2,307 True\n","============================================================================================================================================\n","Total params: 85,800,963\n","Trainable params: 2,307\n","Non-trainable params: 85,798,656\n","Total mult-adds (G): 5.52\n","============================================================================================================================================\n","Input size (MB): 19.27\n","Forward/backward pass size (MB): 3330.74\n","Params size (MB): 229.20\n","Estimated Total Size (MB): 3579.21\n","============================================================================================================================================"]},"metadata":{},"execution_count":31}],"source":["from torchinfo import summary\n","summary(model=vit,\n"," input_size=(32,3,224,224),\n"," col_names=[\"input_size\", \"output_size\", \"num_params\", \"trainable\"],\n"," col_width=20,\n"," row_settings=[\"var_names\"]\n"," )"]},{"cell_type":"code","execution_count":32,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Vu_8lY9J8G7E","executionInfo":{"status":"ok","timestamp":1721474822070,"user_tz":-60,"elapsed":31,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"0920cb09-1722-4dec-e0ca-d969bd2a6024"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["(,\n"," ['pizza', 'steak', 'sushi'])"]},"metadata":{},"execution_count":32}],"source":["from going_modular.going_modular import data_setup\n","train_vit_dataloader , test_vit_dataloader , num_classes = data_setup.create_dataloaders(train_dir=train_dir,\n"," test_dir=test_dir,\n"," transform=vit_transform,\n"," batch_size=32)\n","train_vit_dataloader , num_classes"]},{"cell_type":"code","execution_count":33,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":136,"referenced_widgets":["ae9aed73eb3a4b9d9f8453d51672fbeb","3e7f0490f44849f986ebb8d43a6e20a9","6809c340c9e448f3a74b388574ce285d","58ae193430364fba8fa0e2cc8cb1310d","c09205772dac4398a37cff41d519581c","9e8668c476734fc1a202339437d31afc","78603cda90bb4199b9e57bdb332f41ff","74f83a41532e450fbaee170113bd2ac0","ac15ed9ca1404c5bb94feb4976fc26cd","8ec81b39a1b5433493034b1c44c9129b","45dcc621c82f4c8c8be32767703d59ee"]},"id":"_5jtlNFR8G7E","executionInfo":{"status":"ok","timestamp":1721477360649,"user_tz":-60,"elapsed":2538604,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"5cc26829-06c4-46c7-f609-9aeb901dc6cb"},"outputs":[{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/5 [00:00"],"image/png":"iVBORw0KGgoAAAANSUhEUgAABL4AAAJwCAYAAACH0KjyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADfE0lEQVR4nOzdd3hUZfrG8e/MpPdAQkIPhBpKQhNRQZFEbKyCSLFQVKy4q6yr8rNhZddV1t4FFEFAAWV1RUO1gPTQQg0ltDRKQnqZ8/vjwGCkBpKclPtzXeciOXPOmXsymTB58r7PazMMw0BERERERERERKSGsVsdQEREREREREREpCKo8CUiIiIiIiIiIjWSCl8iIiIiIiIiIlIjqfAlIiIiIiIiIiI1kgpfIiIiIiIiIiJSI6nwJSIiIiIiIiIiNZIKXyIiIiIiIiIiUiOp8CUiIiIiIiIiIjWSCl8iIiIiIiIiIlIjqfAlIiIiIiIiIiI1kgpfImKpyZMnY7PZWLVqldVRREREROS49957D5vNRvfu3a2OIiJyUVT4EhERERERkVKmTp1KREQEK1asYMeOHVbHERG5YCp8iYiIiIiIiMuuXbtYunQpEyZMIDQ0lKlTp1od6bRycnKsjiAi1YAKXyJS5a1du5brrruOgIAA/Pz86NOnD7///nupY4qKinj++edp2bIlXl5e1K1blyuuuIL4+HjXMSkpKYwcOZJGjRrh6elJ/fr1uemmm9i9e3clPyIRERGRqmvq1KkEBwdzww03MHDgwNMWvo4ePcqjjz5KREQEnp6eNGrUiGHDhpGRkeE6Jj8/n3HjxtGqVSu8vLyoX78+AwYMICkpCYDFixdjs9lYvHhxqWvv3r0bm83G5MmTXftGjBiBn58fSUlJXH/99fj7+3P77bcD8Msvv3DrrbfSpEkTPD09ady4MY8++ih5eXmn5N6yZQuDBg0iNDQUb29vWrduzVNPPQXAokWLsNlszJkz55Tzpk2bhs1mY9myZWX+eoqItdysDiAicjabNm2iZ8+eBAQE8Pjjj+Pu7s6HH37IVVddxZIlS1x9J8aNG8f48eO55557uOSSS8jKymLVqlWsWbOGuLg4AG655RY2bdrEww8/TEREBGlpacTHx5OcnExERISFj1JERESk6pg6dSoDBgzAw8ODoUOH8v7777Ny5Uq6desGQHZ2Nj179mTz5s3cdddddO7cmYyMDObOncu+ffsICQmhpKSEG2+8kQULFjBkyBD+9re/cezYMeLj49m4cSORkZFlzlVcXEzfvn254ooreO211/Dx8QHgq6++Ijc3lwceeIC6deuyYsUK3n77bfbt28dXX33lOn/9+vX07NkTd3d37r33XiIiIkhKSuK///0vL7/8MldddRWNGzdm6tSp9O/f/5SvSWRkJD169LiIr6yIWMIQEbHQpEmTDMBYuXLlaW+/+eabDQ8PDyMpKcm178CBA4a/v7/Rq1cv177o6GjjhhtuOOP9HDlyxACMf//73+UXXkRERKSGWbVqlQEY8fHxhmEYhtPpNBo1amT87W9/cx3z7LPPGoAxe/bsU853Op2GYRjGxIkTDcCYMGHCGY9ZtGiRARiLFi0qdfuuXbsMwJg0aZJr3/Dhww3AePLJJ0+5Xm5u7in7xo8fb9hsNmPPnj2ufb169TL8/f1L7ftjHsMwjLFjxxqenp7G0aNHXfvS0tIMNzc347nnnjvlfkSk6tNURxGpskpKSvjpp5+4+eabad68uWt//fr1ue222/j111/JysoCICgoiE2bNrF9+/bTXsvb2xsPDw8WL17MkSNHKiW/iIiISHUzdepUwsLC6N27NwA2m43Bgwczffp0SkpKAJg1axbR0dGnjIo6cfyJY0JCQnj44YfPeMyFeOCBB07Z5+3t7fo4JyeHjIwMLrvsMgzDYO3atQCkp6fz888/c9ddd9GkSZMz5hk2bBgFBQV8/fXXrn0zZsyguLiYO+6444Jzi4h1VPgSkSorPT2d3NxcWrdufcptbdu2xel0snfvXgBeeOEFjh49SqtWrejQoQP/+Mc/WL9+vet4T09P/vWvf/HDDz8QFhZGr169ePXVV0lJSam0xyMiIiJSlZWUlDB9+nR69+7Nrl272LFjBzt27KB79+6kpqayYMECAJKSkmjfvv1Zr5WUlETr1q1xcyu/7jpubm40atTolP3JycmMGDGCOnXq4OfnR2hoKFdeeSUAmZmZAOzcuRPgnLnbtGlDt27dSvU1mzp1KpdeeiktWrQor4ciIpVIhS8RqRF69epFUlISEydOpH379nzyySd07tyZTz75xHXMI488wrZt2xg/fjxeXl4888wztG3b1vWXQBEREZHabOHChRw8eJDp06fTsmVL1zZo0CCAcl/d8Uwjv06MLPszT09P7Hb7KcfGxcXx/fff88QTT/DNN98QHx/vaozvdDrLnGvYsGEsWbKEffv2kZSUxO+//67RXiLVmJrbi0iVFRoaio+PD1u3bj3lti1btmC322ncuLFrX506dRg5ciQjR44kOzubXr16MW7cOO655x7XMZGRkfz973/n73//O9u3bycmJobXX3+dL774olIek4iIiEhVNXXqVOrVq8e77757ym2zZ89mzpw5fPDBB0RGRrJx48azXisyMpLly5dTVFSEu7v7aY8JDg4GzBUi/2jPnj3nnXnDhg1s27aNzz77jGHDhrn2/3Flb8DVNuNcuQGGDBnCmDFj+PLLL8nLy8Pd3Z3BgwefdyYRqVo04ktEqiyHw8E111zDt99+y+7du137U1NTmTZtGldccQUBAQEAHDp0qNS5fn5+tGjRgoKCAgByc3PJz88vdUxkZCT+/v6uY0RERERqq7y8PGbPns2NN97IwIEDT9lGjx7NsWPHmDt3Lrfccgvr1q1jzpw5p1zHMAzAXE07IyODd95554zHNG3aFIfDwc8//1zq9vfee++8czscjlLXPPHxm2++Weq40NBQevXqxcSJE0lOTj5tnhNCQkK47rrr+OKLL5g6dSrXXnstISEh551JRKoWjfgSkSph4sSJzJs375T948aNIz4+niuuuIIHH3wQNzc3PvzwQwoKCnj11Vddx0VFRXHVVVfRpUsX6tSpw6pVq/j6668ZPXo0ANu2baNPnz4MGjSIqKgo3NzcmDNnDqmpqQwZMqTSHqeIiIhIVTR37lyOHTvGX/7yl9PefumllxIaGsrUqVOZNm0aX3/9Nbfeeit33XUXXbp04fDhw8ydO5cPPviA6Ohohg0bxueff86YMWNYsWIFPXv2JCcnh/nz5/Pggw9y0003ERgYyK233srbb7+NzWYjMjKS7777jrS0tPPO3aZNGyIjI3nsscfYv38/AQEBzJo167SLGb311ltcccUVdO7cmXvvvZdmzZqxe/duvv/+exISEkodO2zYMAYOHAjAiy++eP5fSBGpeqxcUlJEZNKkSQZwxm3v3r3GmjVrjL59+xp+fn6Gj4+P0bt3b2Pp0qWlrvPSSy8Zl1xyiREUFGR4e3sbbdq0MV5++WWjsLDQMAzDyMjIMB566CGjTZs2hq+vrxEYGGh0797dmDlzphUPW0RERKRK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GjRoQOvWrQGYMmUKXbt2xd/fn/DwcG677TbS0tJKXWvTpk3ceOONBAQE4O/vT8+ePUlKSuLnn3/G3d2dlJSUUsc/8sgj9OzZ87y+NiIiUjNpxJeIiNR6eUUlRD37Y6Xfb+ILffHxOL//it988022bdtG+/bteeGFFwDzF0CAJ598ktdee43mzZsTHBzM3r17uf7663n55Zfx9PTk888/p1+/fmzdupUmTZqc8T6ef/55Xn31Vf7973/z9ttvc/vtt7Nnzx7q1KlTpse1evVqBg0axLhx4xg8eDBLly7lwQcfpG7duowYMYJVq1bx17/+lSlTpnDZZZdx+PBhfvnlFwAOHjzI0KFDefXVV+nfvz/Hjh3jl19+KVPRQWouq16rUHNer06nk0aNGvHVV19Rt25dli5dyr333kv9+vUZNGgQAO+//z5jxozhn//8J9dddx2ZmZn89ttvrvOvu+46jh07xhdffEFkZCSJiYk4HI7z+tqcsGDBAgICAoiPj3ftKyoq4sUXX6R169akpaUxZswYRowYwf/+9z8A9u/fT69evbjqqqtYuHAhAQEB/PbbbxQXF9OrVy+aN2/OlClT+Mc//uG63tSpU3n11VfLlE1ERGoWFb5ERESqgcDAQDw8PPDx8SE8PByALVu2APDCCy8QFxfnOrZOnTpER0e7Pn/xxReZM2cOc+fOLTVq489GjBjB0KFDAXjllVd46623WLFiBddee22Zsk6YMIE+ffrwzDPPANCqVSsSExP597//zYgRI0hOTsbX15cbb7wRf39/mjZtSqdOnQCz8FVcXMyAAQNo2rQpAB06dCjT/YtYrSq/Xt3d3Xn++eddnzdr1oxly5Yxc+ZMV+HrpZde4u9//zt/+9vfXMd169YNgPnz57NixQo2b95Mq1atAGjevPm5vyh/4uvryyeffFJqiuNdd93l+rh58+a89dZbdOvWjezsbPz8/Hj33XcJDAxk+vTpuLu7A7gyANx9991MmjTJVfj673//S35+vutxiYhI7aTCl4iI1Hre7g4SX+hryf2Wh65du5b6PDs7m3HjxvH999+7Ckl5eXkkJyef9TodO3Z0fezr60tAQMAp04zOx+bNm7nppptK7bv88st54403KCkpIS4ujqZNm9K8eXOuvfZarr32WteUrejoaPr06UOHDh3o27cv11xzDQMHDiQ4OLjMOaTmseq1euK+y0NVeL2+++67TJw4keTkZPLy8igsLHRNT0xLS+PAgQP06dPntOcmJCTQqFGjUgWnC9GhQ4dT+nqtXr2acePGsW7dOo4cOYLT6QQgOTmZqKgoEhIS6Nmzp6vo9WcjRozg6aef5vfff+fSSy9l8uTJDBo0SAsDiIjUcip8iYhIrWez2c57ClNV9Odf6h577DHi4+N57bXXaNGiBd7e3gwcOJDCwsKzXufPv0zabDbXL57lyd/fnzVr1rB48WJ++uknnn32WcaNG8fKlSsJCgoiPj6epUuX8tNPP/H222/z1FNPsXz5cpo1a1buWaR6qe6vVbD+9Tp9+nQee+wxXn/9dXr06IG/vz///ve/Wb58OQDe3t5nPf9ct9vt9lOmJhcVFZ1y3J+/Djk5OfTt25e+ffsydepUQkNDSU5Opm/fvq6vxbnuu169evTr149JkybRrFkzfvjhBxYvXnzWc0REpOZTc3sREZFqwsPDg5KSknMe99tvvzFixAj69+9Phw4dCA8PZ/fu3RUf8Li2bdu6+gH9MVOrVq1cfYDc3NyIjY3l1VdfZf369ezevZuFCxcC5i/wl19+Oc8//zxr167Fw8ODOXPmVFp+kfJQVV+vv/32G5dddhkPPvggnTp1okWLFiQlJblu9/f3JyIiggULFpz2/I4dO7Jv3z62bdt22ttDQ0NJSUkpVfxKSEg4Z64tW7Zw6NAh/vnPf9KzZ0/atGlzygi2jh078ssvv5y2kHbCPffcw4wZM/joo4+IjIzk8ssvP+d9i4hIzabC13ElTjXNFRGRqi0iIoLly5eze/duMjIyzji6o2XLlsyePZuEhATWrVvHbbfdViEjt87k73//OwsWLODFF19k27ZtfPbZZ7zzzjs89thjAHz33Xe89dZbJCQksGfPHj7//HOcTietW7dm+fLlvPLKK6xatYrk5GRmz55Neno6bdu2rbT8IuWhqr5eW7ZsyapVq/jxxx/Ztm0bzzzzDCtXrix1zLhx43j99dd566232L59O2vWrOHtt98G4Morr6RXr17ccsstxMfHs2vXLn744QfmzZsHwFVXXUV6ejqvvvoqSUlJvPvuu/zwww/nzNWkSRM8PDx4++232blzJ3PnzuXFF18sdczo0aPJyspiyJAhrFq1iu3btzNlyhS2bt3qOqZv374EBATw0ksvMXLkyIv9comISA1Q6wtfi7em0e/tX3n6mw1WRxERETmrxx57DIfDQVRUlGsa0OlMmDCB4OBgLrvsMvr160ffvn3p3LlzpeXs3LkzM2fOZPr06bRv355nn32WF154gREjRgAQFBTE7Nmzufrqq2nbti0ffPABX375Je3atSMgIICff/6Z66+/nlatWvH000/z+uuvc91111VafpHyUFVfr/fddx8DBgxg8ODBdO/enUOHDvHggw+WOmb48OG88cYbvPfee7Rr144bb7yR7du3u26fNWsW3bp1Y+jQoURFRfH444+7Rre1bduW9957j3fffZfo6GhWrFjhKnqfTWhoKJMnT+arr74iKiqKf/7zn7z22muljqlbty4LFy4kOzubK6+8ki5duvDxxx+XmvZpt9sZMWIEJSUlDBs27GK+VCIich4MwyDtWD6r9xzh24T9vL1gO49/vY6hH/3OFf9ayI60bKsjYjOqwfrgWVlZBAYGkpmZSUBAQLle+5ft6dz56QpC/DxZ8X99sNtt5Xp9ERGpWvLz89m1axfNmjXDy8vL6jhykc72fFbk+wcpP2d7nvR6lQtx9913k56ezty5c896nL6/RETOT1Z+EXsP57L3cB77juSy93AuyYdz2XvE/Dy/6MwjlSeN6EbvNvXKP1MZ3udV7+6g5aB7s7r4e7qRkV3A2r1H6dJUq0aJiIiIiFQ3mZmZbNiwgWnTpp2z6CUiIiflF5Ww/2ieWdw6kse+w7nsPWIWupIP55KZd+beigA2G9QP8KJxHR9zC/ahcR1vGtfxoU24fyU9ijOr9YUvDzc7V7Wpx3/XHSA+MVWFLxERkT+5//77+eKLL0572x133MEHH3xQyYlE5Exq8+v1pptuYsWKFdx///3ExcVZHUdEpMoocRqkZuWXHqn1h+JW6rF8zjUXsI6vB42DvU8tbgX70CDIGw+3qttJq9YXvgDiosL477oDzN+cypPXtbE6joiISJXywgsvnLFHj6YQilQttfn1unjxYqsjiIhYwjAMjuQen474h5FaJ6Yl7j+aR1HJ2StbPh4OVzGrUbAPTU4UuI5/7udZfctH1Td5ObqyVShudhs70rLZlZFDsxBfqyOJiIhUGfXq1aNevfLvzSAi5U+vVxGRmim3sJi9h/NKFbf2Hi9s7T2cS05hyVnPd7PbaBjsffriVrA3dXw9sNlqZs9z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ffVV+fv764033qjz+q+++kpjxozRj370I3Xq1Ek33nij7rzzzlr9vmeffVZxcXF68803NWLECHXu3Fk33nijunbt2lzNAgAAuKwGB1/VnxY+/vjjSkxM1MCBAzVx4kRlZ2fXef1XX32lO++8Uz/5yU+UlJSkadOmadq0adq7d+9VFw8AAIDvVlZWph07dighIaHmnN1uV0JCgjZv3lznPaNHj9aOHTtqgq5jx47p448/1uTJk2uu+fDDDzVs2DD94Ac/UEREhAYPHqzXX3/9srWUlpYqPz+/1gEAANBUGhx8NfTTwj/96U+aNGmSfvWrX6l379568sknNWTIEL300ktXXTwAAAC+W25uriorKxUZGVnrfGRkpDIzM+u850c/+pGeeOIJXXPNNfL29lbXrl01btw4PfLIIzXXHDt2TK+88oq6d++uTz/9VA8++KB+8Ytf6K233rpkLYsWLVJwcHDNERcX1ziNBAAAqEODgq8r+bRw8+bNta6XpIkTJ17yeolPAgEAAKy2fv16Pf300/rzn/+sxMRELVu2TCtXrtSTTz5Zc43L5dKQIUP09NNPa/Dgwbr//vv1s5/9TK+++uol33f+/PnKy8urOdLS0pqjOQAAoJVq0OL2l/u08MCBA3Xek5mZ2aBPFyXzk8Df/e53DSkNAAAAlxAWFiaHw6GsrKxa57OyshQVFVXnPQsXLtQ999yjn/70p5Kk/v37q6ioSPfff78effRR2e12RUdHq0+fPrXu6927t5YuXXrJWnx9feXr63uVLQIAAKifK1rcvqnxSSAAAEDj8fHx0dChQ7V27dqacy6XS2vXrtWoUaPqvKe4uFh2e+2uosPhkCQZhiFJGjNmjA4ePFjrmkOHDqljx46NWT4AAMAVa9CIryv5tDAqKqpB10t8EggAANDY5s6dqxkzZmjYsGEaMWKEXnjhBRUVFWnmzJmSpHvvvVexsbFatGiRJGnq1KlavHixBg8erPj4eB05ckQLFy7U1KlTawKwX/7ylxo9erSefvpp3X777dq2bZv+8pe/6C9/+Ytl7QQAALhQg4KvCz8tnDZtmqTznxbOnj27zntGjRqltWvXas6cOTXnVq9efclPFwEAAND47rjjDuXk5Oixxx5TZmamBg0apFWrVtUsSZGamlprhNeCBQtks9m0YMECnTx5UuHh4Zo6daqeeuqpmmuGDx+u5cuXa/78+XriiSfUuXNnvfDCC7rrrruavX0AAAB1sRnVY9Xr6f3339eMGTP02muv1Xxa+MEHH+jAgQOKjIy86NPCr776SmPHjtUzzzyjKVOm6L333tPTTz+txMRE9evXr17fMz8/X8HBwcrLy1NQUFDDWwkAAFod+g/ugecEAAAaqiH9hwaN+JIa/mnh6NGj9e6772rBggV65JFH1L17d61YsaLeoRcAAAAAAABwJRo84ssKfBIIAAAaiv6De+A5AQCAhmpI/6FF7uoIAAAAAAAAXC2CLwAAAAAAAHgkgi8AAAAAAAB4JIIvAAAAAAAAeCSCLwAAAAAAAHgkL6sLqI/qjSfz8/MtrgQAALiL6n6DG2xg3arRzwMAAA3VkH6eWwRfBQUFkqS4uDiLKwEAAO6moKBAwcHBVpeBS6CfBwAArlR9+nk2ww0+BnW5XEpPT1dgYKBsNlujv39+fr7i4uKUlpamoKCgRn//lob2ejba69lor2ejvY3LMAwVFBQoJiZGdjurO7RU9PMaF+31bLTXs9Fez0Z7G1dD+nluMeLLbrerffv2Tf59goKCWsV/gNVor2ejvZ6N9no22tt4GOnV8tHPaxq017PRXs9Gez0b7W089e3n8fEnAAAAAAAAPBLBFwAAAAAAADwSwZckX19fPf744/L19bW6lGZBez0b7fVstNez0V6g8bW2/85or2ejvZ6N9no22msdt1jcHgAAAAAAAGgoRnwBAAAAAADAIxF8AQAAAAAAwCMRfAEAAAAAAMAjEXwBAAAAAADAI7Wa4Ovll19Wp06d5HQ6FR8fr23btl32+n/+85/q1auXnE6n+vfvr48//riZKm0cDWnv3//+d9lstlqH0+lsxmqv3JdffqmpU6cqJiZGNptNK1as+M571q9fryFDhsjX11fdunXT3//+9yavs7E0tL3r16+/6NnabDZlZmY2T8FXadGiRRo+fLgCAwMVERGhadOm6eDBg995n7v+/F5Je9355/eVV17RgAEDFBQUpKCgII0aNUqffPLJZe9x12crNby97vxs6/LMM8/IZrNpzpw5l73OnZ8xrEM/j35eNXfu50mtq69HP49+3re567OV6Oe19H5eqwi+3n//fc2dO1ePP/64EhMTNXDgQE2cOFHZ2dl1Xv/VV1/pzjvv1E9+8hMlJSVp2rRpmjZtmvbu3dvMlV+ZhrZXkoKCgpSRkVFzpKSkNGPFV66oqEgDBw7Uyy+/XK/rjx8/rilTpuj666/Xzp07NWfOHP30pz/Vp59+2sSVNo6GtrfawYMHaz3fiIiIJqqwcX3xxReaNWuWtmzZotWrV6u8vFw33nijioqKLnmPO//8Xkl7Jff9+W3fvr2eeeYZ7dixQ9u3b9cNN9ygW265Rfv27avzend+tlLD2yu577P9tq+//lqvvfaaBgwYcNnr3P0Zwxr08+jnVXP3fp7Uuvp69PPo513InZ+tRD+vxffzjFZgxIgRxqxZs2peV1ZWGjExMcaiRYvqvP722283pkyZUutcfHy88V//9V9NWmdjaWh733zzTSM4OLiZqms6kozly5df9ppf//rXRt++fWudu+OOO4yJEyc2YWVNoz7t/fzzzw1JxpkzZ5qlpqaWnZ1tSDK++OKLS17j7j+/F6pPez3l57da27Ztjb/+9a91fs2Tnm21y7XXU55tQUGB0b17d2P16tXG2LFjjYcffviS13riM0bTo59HP6+aJ/XzDKP19fXo513MU35+q9HPO89Tnq279PM8fsRXWVmZduzYoYSEhJpzdrtdCQkJ2rx5c533bN68udb1kjRx4sRLXt+SXEl7JamwsFAdO3ZUXFzcdybT7sydn+3VGDRokKKjozVhwgRt2rTJ6nKuWF5eniQpNDT0ktd40jOuT3slz/j5rays1HvvvaeioiKNGjWqzms86dnWp72SZzzbWbNmacqUKRc9u7p40jNG86CfRz/vQu78bK+WJ/T16OfVzRN+funn1c0Tnq279PM8PvjKzc1VZWWlIiMja52PjIy85Nz3zMzMBl3fklxJe3v27Kk33nhD//73v7VkyRK5XC6NHj1aJ06caI6Sm9Wlnm1+fr7OnTtnUVVNJzo6Wq+++qqWLl2qpUuXKi4uTuPGjVNiYqLVpTWYy+XSnDlzNGbMGPXr1++S17nzz++F6tted//53bNnjwICAuTr66sHHnhAy5cvV58+feq81hOebUPa6+7PVpLee+89JSYmatGiRfW63hOeMZoX/TwT/TxTa+vnSZ7T16OfVzd3//mln0c/70JWPmOvJv8OaPFGjRpVK4kePXq0evfurddee01PPvmkhZXhavXs2VM9e/aseT169GgdPXpUzz//vN5++20LK2u4WbNmae/evdq4caPVpTSL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rV69WuPHj9esWbP03HPPNXq9AAAAnoa+HoCWijW+ALQIW7Zsueh17969JUm9e/fWrl27VFRUVPP1TZs2yW63q2fPngoMDFSnTp20du3aq6ohPDxcM2bM0JIlS/TCCy/oL3/5y1W9HwAAAEz09QBYhRFfAJpFaWmpMjMza53z8vKqWVT0n//8p4YNG6ZrrrlG77zzjrZt26a//e1vkqS77rpLjz/+uGbMmKHf/va3ysnJ0UMPPaR77rlHkZGRkqTf/va3euCBBxQREaGbbrpJBQUF2rRpkx566KF61ffYY49p6NCh6tu3r0pLS/XRRx/VdMYAAABwefT1ALRUBF8AmsWqVasUHR1d61zPnj114MABSeYuPO+9955+/vOfKzo6Wv/4xz/Up08fSZK/v78+/fRTPfzwwxo+fLj8/f112223afHixTXvNWPGDJWUlOj555/X//zP/ygsLEzf//73612fj4+P5s+fr2+++UZ+fn669tpr9d577zVCywEAADwffT0ALZXNMAzD6iIAtG42m03Lly/XtGnTrC4FAAAAjYy+HgArscYXAAAAAAAAPBLBFwAAAAAAADwSUx0BAAAAAADgkRjxBQAAAAAAAI9E8AUAAAAAAACPRPAFAAAAAAAAj0TwBQAAAAAAAI9E8AUAAAAAAACPRPAFAAAAAAAAj0TwBQAAAAAAAI9E8AUAAAAAAACP9P8BnwG50ZFpV7sAAAAASUVORK5CYII=\n"},"metadata":{}}],"source":["from helper_functions import plot_loss_curves\n","plot_loss_curves(vit_results)"]},{"cell_type":"code","execution_count":35,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"SDnvkUxO8G7F","executionInfo":{"status":"ok","timestamp":1721477366882,"user_tz":-60,"elapsed":5526,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"88b10a7b-cada-4a01-b0fd-87317007775b"},"outputs":[{"output_type":"stream","name":"stdout","text":["[INFO] Saving model to: models/vit.pth\n"]}],"source":["from going_modular.going_modular import utils\n","utils.save_model(model=vit,\n"," target_dir=\"models\",\n"," model_name=\"vit.pth\")"]},{"cell_type":"code","execution_count":36,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"4Eb3gajF8G7G","executionInfo":{"status":"ok","timestamp":1721477366883,"user_tz":-60,"elapsed":52,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"65d7321f-241a-4f2f-dc08-ac4fe7d8966a"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["327"]},"metadata":{},"execution_count":36}],"source":["from pathlib import Path\n","vit_size = Path(\"models/vit.pth\").stat().st_size // (1024**2)\n","vit_size"]},{"cell_type":"code","execution_count":37,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"_eD-yDmF8G7O","executionInfo":{"status":"ok","timestamp":1721477366883,"user_tz":-60,"elapsed":50,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"b0a78d2e-b6d1-4117-dfd0-e09f9b4d4fd0"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["85800963"]},"metadata":{},"execution_count":37}],"source":["# count number of parameters in vit\n","vit_total_params = sum(torch.numel(param) for param in vit.parameters())\n","vit_total_params"]},{"cell_type":"code","execution_count":38,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"QG4L-CwM8G7O","executionInfo":{"status":"ok","timestamp":1721477366884,"user_tz":-60,"elapsed":47,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"245816d7-d866-450d-df04-ceaa2725794a"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["{'test loss': 0.08605407848953561,\n"," 'test acc': 0.9568181818181818,\n"," 'number of params': 85800963,\n"," 'model size (MB)': 327}"]},"metadata":{},"execution_count":38}],"source":["# putting everything in a dict\n","vit_dict = {\n"," \"test loss\" : vit_results['test_loss'][-1],\n"," \"test acc\" : vit_results['test_acc'][-1],\n"," \"number of params\" : vit_total_params,\n"," \"model size (MB)\":vit_size\n","}\n","vit_dict"]},{"cell_type":"markdown","metadata":{"id":"i2dDUNcb8G7P"},"source":["# 5.Making predictions with our trained models and timing them"]},{"cell_type":"code","execution_count":39,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"_8rjpmGr8G7P","executionInfo":{"status":"ok","timestamp":1721477366884,"user_tz":-60,"elapsed":43,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"ad3a2ff6-aa20-430b-e172-9370f96c775b"},"outputs":[{"output_type":"stream","name":"stdout","text":["[INFO] Finding all filepaths ending with '.jpg' in directory ;data/pizza_steak_sushi_20_percent/test\n"]},{"output_type":"execute_result","data":{"text/plain":["[PosixPath('data/pizza_steak_sushi_20_percent/test/steak/3479599.jpg'),\n"," PosixPath('data/pizza_steak_sushi_20_percent/test/steak/2716791.jpg')]"]},"metadata":{},"execution_count":39}],"source":["from pathlib import Path\n","\n","# Get all test data paths\n","print(f\"[INFO] Finding all filepaths ending with '.jpg' in directory ;{test_dir}\" )\n","test_data_path = list(Path(test_dir).glob('*/*.jpg'))\n","test_data_path[:2]"]},{"cell_type":"markdown","metadata":{"id":"LkkvqiwC8G7Q"},"source":["## 5.1 Creating a function to make predictions across the test dataset"]},{"cell_type":"code","execution_count":65,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"0Sh5jbCi8G7Q","executionInfo":{"status":"ok","timestamp":1721479454744,"user_tz":-60,"elapsed":276,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"533ce8d2-21a0-4c42-b440-ad575841f9ea"},"outputs":[{"output_type":"stream","name":"stdout","text":["Overwriting going_modular/going_modular/predictions.py\n"]}],"source":["%%writefile going_modular/going_modular/predictions.py\n","import pathlib\n","import torch\n","\n","from PIL import Image\n","from timeit import default_timer as timer\n","from tqdm.auto import tqdm\n","from typing import List, Dict\n","\n","# 1. Create a function to return a list of dictionaries with sample, truth label, prediction, prediction probability and prediction time\n","def pred_and_store(paths: List[pathlib.Path],\n"," model: torch.nn.Module,\n"," transform: torchvision.transforms,\n"," class_names: List[str],\n"," device: str = \"cuda\" if torch.cuda.is_available() else \"cpu\") -> List[Dict]:\n","\n"," # 2. Create an empty list to store prediction dictionaires\n"," pred_list = []\n","\n"," # 3. Loop through target paths\n"," for path in tqdm(paths):\n","\n"," # 4. Create empty dictionary to store prediction information for each sample\n"," pred_dict = {}\n","\n"," # 5. Get the sample path and ground truth class name\n"," pred_dict[\"image_path\"] = path\n"," class_name = path.parent.stem\n"," pred_dict[\"class_name\"] = class_name\n","\n"," # 6. Start the prediction timer\n"," start_time = timer()\n","\n"," # 7. Open image path\n"," img = Image.open(path)\n","\n"," # 8. Transform the image, add batch dimension and put image on target device\n"," transformed_image = transform(img).unsqueeze(0).to(device)\n","\n"," # 9. Prepare model for inference by sending it to target device and turning on eval() mode\n"," model.to(device)\n"," model.eval()\n","\n"," # 10. Get prediction probability, predicition label and prediction class\n"," with torch.inference_mode():\n"," pred_logit = model(transformed_image) # perform inference on target sample\n"," pred_prob = torch.softmax(pred_logit, dim=1) # turn logits into prediction probabilities\n"," pred_label = torch.argmax(pred_prob, dim=1) # turn prediction probabilities into prediction label\n"," pred_class = class_names[pred_label.cpu()] # hardcode prediction class to be on CPU\n","\n"," # 11. Make sure things in the dictionary are on CPU (required for inspecting predictions later on)\n"," pred_dict[\"pred_prob\"] = round(pred_prob.unsqueeze(0).max().cpu().item(), 4)\n"," pred_dict[\"pred_class\"] = pred_class\n","\n"," # 12. End the timer and calculate time per pred\n"," end_time = timer()\n"," pred_dict[\"time_for_pred\"] = round(end_time-start_time, 4)\n","\n"," # 13. Does the pred match the true label?\n"," pred_dict[\"correct\"] = class_name == pred_class\n","\n"," # 14. Add the dictionary to the list of preds\n"," pred_list.append(pred_dict)\n","\n"," # 15. Return list of prediction dictionaries\n"," return pred_list"]},{"cell_type":"markdown","metadata":{"id":"IiMzEhb78G7R"},"source":["## 5.2 Making and Timing predictions with EffNetB2"]},{"cell_type":"code","execution_count":68,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":49,"referenced_widgets":["21abb49c87ad4248b8fc84399273a91d","29abf09204aa40c78be582ebe640755a","da9d5b12a4ad46d5b4b0d190d6f50dca","6afcd558a7584cba93be744438286c22","4930550d8b0d4ebb92f0ee37e16c7276","da6f360a1d104538ab47c094f914de0c","516c5e7b877f40fdacc4e78103170ff2","88e106c1211e40bdb9558d6400c1145c","19965f5e676e47de9dbd3b5529e69a42","ebbcffb6ec1b4ebfb260e174967155dd","dd4f5857e44a433fa8bb8914231b8404"]},"id":"EAD6Xw3x8G7R","executionInfo":{"status":"ok","timestamp":1721479556768,"user_tz":-60,"elapsed":26106,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"8426c774-a893-46d7-e93f-736657cce1e9"},"outputs":[{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/150 [00:00\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
image_pathclass_namepred_probpred_classtime_for_predcorrect
0data/pizza_steak_sushi_20_percent/test/steak/3...steak0.9521steak0.3333True
1data/pizza_steak_sushi_20_percent/test/steak/2...steak0.9046steak0.2761True
2data/pizza_steak_sushi_20_percent/test/steak/8...steak0.9985steak0.1574True
3data/pizza_steak_sushi_20_percent/test/steak/4...steak0.9530steak0.1513True
4data/pizza_steak_sushi_20_percent/test/steak/2...steak0.9991steak0.1455True
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","\n","
\n"," \n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"effnetb2_test_pred_df","summary":"{\n \"name\": \"effnetb2_test_pred_df\",\n \"rows\": 150,\n \"fields\": [\n {\n \"column\": \"image_path\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 150,\n \"samples\": [\n \"data/pizza_steak_sushi_20_percent/test/sushi/1994748.jpg\",\n \"data/pizza_steak_sushi_20_percent/test/steak/3553838.jpg\",\n \"data/pizza_steak_sushi_20_percent/test/pizza/482858.jpg\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"class_name\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"steak\",\n \"sushi\",\n \"pizza\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"pred_prob\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.1421521680897532,\n \"min\": 0.389,\n \"max\": 1.0,\n \"num_unique_values\": 113,\n \"samples\": [\n 0.9642,\n 0.9991,\n 0.6623\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"pred_class\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"steak\",\n \"pizza\",\n \"sushi\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"time_for_pred\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.04046847600155142,\n \"min\": 0.1333,\n \"max\": 0.3333,\n \"num_unique_values\": 131,\n \"samples\": [\n 0.1555,\n 0.2321,\n 0.1422\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"correct\",\n \"properties\": {\n \"dtype\": \"boolean\",\n \"num_unique_values\": 2,\n \"samples\": [\n false,\n true\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"}},"metadata":{},"execution_count":44}],"source":["import pandas as pd\n","effnetb2_test_pred_df = pd.DataFrame(effnetb2_test_pred_dict)\n","effnetb2_test_pred_df.head(5)"]},{"cell_type":"code","execution_count":45,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"BrnIb7DX8G7T","executionInfo":{"status":"ok","timestamp":1721477500487,"user_tz":-60,"elapsed":5,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"7d03b19b-2e1c-4681-f0a1-88e9559ccb66"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["correct\n","True 142\n","False 8\n","Name: count, dtype: int64"]},"metadata":{},"execution_count":45}],"source":["# Check number of coorect predicitions\n","effnetb2_test_pred_df[\"correct\"].value_counts()"]},{"cell_type":"code","execution_count":46,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"HTE2cwA08G7T","executionInfo":{"status":"ok","timestamp":1721477502531,"user_tz":-60,"elapsed":265,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"9c7465b7-a5c5-426c-d3b0-478036526d7a"},"outputs":[{"output_type":"stream","name":"stdout","text":["EffNetB2 average time per prediction: 0.1759 seconds\n"]}],"source":["# find the average time per prediction\n","effnet_avg_time_per_pred = round(effnetb2_test_pred_df.time_for_pred.mean(),4)\n","print(f\"EffNetB2 average time per prediction: {effnet_avg_time_per_pred} seconds\")"]},{"cell_type":"code","execution_count":47,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"jt5cf4iQ8G7U","executionInfo":{"status":"ok","timestamp":1721477503579,"user_tz":-60,"elapsed":5,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"eacc2652-e0f8-4688-892a-db4eb04660e7"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["{'test loss': 0.1567613050341606,\n"," 'test acc': 0.947159090909091,\n"," 'number of params': 7705221,\n"," 'model size (MB)': 29,\n"," 'time_per_pred_cpu': 0.1759}"]},"metadata":{},"execution_count":47}],"source":["# Add Effnetb2 average predictions time to stats dictionary\n","effnetb2_dict['time_per_pred_cpu'] = effnet_avg_time_per_pred\n","effnetb2_dict"]},{"cell_type":"markdown","metadata":{"id":"RAJV6O4e8G7U"},"source":["## 5.3 Making and timing predictions with ViT"]},{"cell_type":"code","execution_count":50,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":49,"referenced_widgets":["9a06aaa3b7764406b945c4e88a6de5cd","d5fd449083ff493daa23fdfa4a7068bb","340ee3acbad9469b9a739a79c3b88389","f07ab56bda8f483fada22923f9fdb064","ce4f8e14852d4b3d8a39219dfe2762ce","e54172f506204a91865b2f91659b6d17","a378a866b761404d99312f9d9219c8e4","5468f74c8b7b48238b8e484f46f33fa1","8771f445c691409fb74bfce50560ed22","ada0165a101747a89494098100e20b29","4feb730a00b1428592881e762a2c1a1c"]},"id":"_t2IA0tN8G7V","executionInfo":{"status":"ok","timestamp":1721477653657,"user_tz":-60,"elapsed":140491,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"faf21a59-12e5-4092-b04d-3e088de2f540"},"outputs":[{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/150 [00:00\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
image_pathclass_namepred_probpred_classtime_for_predcorrect
0data/pizza_steak_sushi_20_percent/test/steak/3...steak0.9886steak0.8528True
1data/pizza_steak_sushi_20_percent/test/steak/2...steak0.9999steak1.0089True
2data/pizza_steak_sushi_20_percent/test/steak/8...steak1.0000steak1.2402True
3data/pizza_steak_sushi_20_percent/test/steak/4...steak0.9999steak1.2346True
4data/pizza_steak_sushi_20_percent/test/steak/2...steak0.9994steak1.0447True
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","\n","
\n"," \n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"vit_test_pred_df","summary":"{\n \"name\": \"vit_test_pred_df\",\n \"rows\": 150,\n \"fields\": [\n {\n \"column\": \"image_path\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 150,\n \"samples\": [\n \"data/pizza_steak_sushi_20_percent/test/sushi/1994748.jpg\",\n \"data/pizza_steak_sushi_20_percent/test/steak/3553838.jpg\",\n \"data/pizza_steak_sushi_20_percent/test/pizza/482858.jpg\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"class_name\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"steak\",\n \"sushi\",\n \"pizza\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"pred_prob\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.06859221713144073,\n \"min\": 0.6124,\n \"max\": 1.0,\n \"num_unique_values\": 36,\n \"samples\": [\n 0.6124,\n 0.8081,\n 0.9462\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"pred_class\",\n \"properties\": {\n \"dtype\": \"category\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"steak\",\n \"sushi\",\n \"pizza\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"time_for_pred\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.22279938023200904,\n \"min\": 0.7747,\n \"max\": 1.8337,\n \"num_unique_values\": 142,\n \"samples\": [\n 0.8228,\n 0.786,\n 1.1784\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"correct\",\n \"properties\": {\n \"dtype\": \"boolean\",\n \"num_unique_values\": 2,\n \"samples\": [\n false,\n true\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"}},"metadata":{},"execution_count":52}],"source":["import pandas as pd\n","vit_test_pred_df = pd.DataFrame(vit_test_pred_dict)\n","vit_test_pred_df.head(5)"]},{"cell_type":"code","execution_count":53,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"xH_wNHiI8G7W","executionInfo":{"status":"ok","timestamp":1721477653658,"user_tz":-60,"elapsed":31,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"e9df93b5-8572-41ad-be61-ea093e6e33cf"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["correct\n","True 144\n","False 6\n","Name: count, dtype: int64"]},"metadata":{},"execution_count":53}],"source":["# Check number of coorect predicitions\n","vit_test_pred_df['correct'].value_counts()"]},{"cell_type":"code","execution_count":54,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"XCrzwvGQ8G7W","executionInfo":{"status":"ok","timestamp":1721477653658,"user_tz":-60,"elapsed":25,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"64180496-5fb4-4434-a83a-a7473bbae731"},"outputs":[{"output_type":"stream","name":"stdout","text":["EffNetB2 average time per prediction: 0.9323 seconds\n"]}],"source":["# find the average time per prediction\n","vit_avg_time_per_pred = round(vit_test_pred_df.time_for_pred.mean(),4)\n","print(f\"EffNetB2 average time per prediction: {vit_avg_time_per_pred} seconds\")"]},{"cell_type":"code","execution_count":55,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"eP39WaIM8G7X","executionInfo":{"status":"ok","timestamp":1721477653659,"user_tz":-60,"elapsed":21,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"cb0a60ad-cac3-4d46-8d49-13e544d68d73"},"outputs":[{"output_type":"execute_result","data":{"text/plain":["{'test loss': 0.08605407848953561,\n"," 'test acc': 0.9568181818181818,\n"," 'number of params': 85800963,\n"," 'model size (MB)': 327,\n"," 'time_per_pred_cpu': 0.9323}"]},"metadata":{},"execution_count":55}],"source":["# Add Effnetb2 average predictions time to stats dictionary\n","vit_dict['time_per_pred_cpu'] = vit_avg_time_per_pred\n","vit_dict"]},{"cell_type":"markdown","metadata":{"id":"DE0gSqMw8G7X"},"source":["# 6. Comparing model results , prediction time and size"]},{"cell_type":"code","execution_count":56,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":125},"id":"nwW4rETM8G7X","executionInfo":{"status":"ok","timestamp":1721477653659,"user_tz":-60,"elapsed":18,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"5e4ce372-3337-4b3e-b101-96eaed32470a"},"outputs":[{"output_type":"execute_result","data":{"text/plain":[" test loss test acc number of params model size (MB) time_per_pred_cpu \\\n","0 0.156761 0.947159 7705221 29 0.1759 \n","1 0.086054 0.956818 85800963 327 0.9323 \n","\n"," models test_acc \n","0 effnetb2 94.72 \n","1 ViT_16 95.68 "],"text/html":["\n","
\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
test losstest accnumber of paramsmodel size (MB)time_per_pred_cpumodelstest_acc
00.1567610.9471597705221290.1759effnetb294.72
10.0860540.956818858009633270.9323ViT_1695.68
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n"," \n","\n","\n","\n"," \n","
\n","\n","
\n"," \n"," \n"," \n","
\n","\n","
\n","
\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","variable_name":"df","summary":"{\n \"name\": \"df\",\n \"rows\": 2,\n \"fields\": [\n {\n \"column\": \"test loss\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.049997559368597795,\n \"min\": 0.08605407848953561,\n \"max\": 0.1567613050341606,\n \"num_unique_values\": 2,\n \"samples\": [\n 0.08605407848953561,\n 0.1567613050341606\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"test acc\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.006830008681915427,\n \"min\": 0.947159090909091,\n \"max\": 0.9568181818181818,\n \"num_unique_values\": 2,\n \"samples\": [\n 0.9568181818181818,\n 0.947159090909091\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"number of params\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 55222028,\n \"min\": 7705221,\n \"max\": 85800963,\n \"num_unique_values\": 2,\n \"samples\": [\n 85800963,\n 7705221\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"model size (MB)\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 210,\n \"min\": 29,\n \"max\": 327,\n \"num_unique_values\": 2,\n \"samples\": [\n 327,\n 29\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"time_per_pred_cpu\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.5348555692895046,\n \"min\": 0.1759,\n \"max\": 0.9323,\n \"num_unique_values\": 2,\n \"samples\": [\n 0.9323,\n 0.1759\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"models\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"ViT_16\",\n \"effnetb2\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"test_acc\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.6788225099390912,\n \"min\": 94.72,\n \"max\": 95.68,\n \"num_unique_values\": 2,\n \"samples\": [\n 95.68,\n 94.72\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"}},"metadata":{},"execution_count":56}],"source":["# Turn stat dict into dataframe\n","df=pd.DataFrame([effnetb2_dict , vit_dict])\n","\n","# add column for model names\n","df['models'] = ['effnetb2','ViT_16']\n","\n","# Convert accuracy to percentages\n","df['test_acc'] = round(df[\"test acc\"]*100 ,2)\n","df"]},{"cell_type":"code","execution_count":57,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":81},"id":"DTkx2aeW8G7Y","executionInfo":{"status":"ok","timestamp":1721477653659,"user_tz":-60,"elapsed":17,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"677925f1-e5b1-484e-c901-44dfca239fb9"},"outputs":[{"output_type":"execute_result","data":{"text/plain":[" test loss test acc number of params model size (MB) \\\n","ViT to EffNetb2 ratio 0.54895 1.010198 11.135432 11.275862 \n","\n"," time_per_pred_cpu test_acc \n","ViT to EffNetb2 ratio 5.300171 1.010135 "],"text/html":["\n","
\n","
\n","\n","\n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n"," \n","
test losstest accnumber of paramsmodel size (MB)time_per_pred_cputest_acc
ViT to EffNetb2 ratio0.548951.01019811.13543211.2758625.3001711.010135
\n","
\n","
\n","\n","
\n"," \n","\n"," \n","\n"," \n","
\n","\n","\n","
\n","
\n"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"dataframe","summary":"{\n \"name\": \"columns= ['ViT to EffNetb2 ratio'] )\",\n \"rows\": 1,\n \"fields\": [\n {\n \"column\": \"test loss\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": null,\n \"min\": 0.5489497454157016,\n \"max\": 0.5489497454157016,\n \"num_unique_values\": 1,\n \"samples\": [\n 0.5489497454157016\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"test acc\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": null,\n \"min\": 1.0101979604079183,\n \"max\": 1.0101979604079183,\n \"num_unique_values\": 1,\n \"samples\": [\n 1.0101979604079183\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"number of params\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": null,\n \"min\": 11.135431806563368,\n \"max\": 11.135431806563368,\n \"num_unique_values\": 1,\n \"samples\": [\n 11.135431806563368\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"model size (MB)\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": null,\n \"min\": 11.275862068965518,\n \"max\": 11.275862068965518,\n \"num_unique_values\": 1,\n \"samples\": [\n 11.275862068965518\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"time_per_pred_cpu\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": null,\n \"min\": 5.300170551449687,\n \"max\": 5.300170551449687,\n \"num_unique_values\": 1,\n \"samples\": [\n 5.300170551449687\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"test_acc\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": null,\n \"min\": 1.0101351351351353,\n \"max\": 1.0101351351351353,\n \"num_unique_values\": 1,\n \"samples\": [\n 1.0101351351351353\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"}},"metadata":{},"execution_count":57}],"source":["# compare ViT vs EffNetB2 across different characteristics\n","pd.DataFrame(data=(df.set_index('models').loc[\"ViT_16\"] / df.set_index('models').loc['effnetb2'] ),\n","columns= ['ViT to EffNetb2 ratio'] ).T"]},{"cell_type":"markdown","metadata":{"id":"PhVR99RQ8G7Y"},"source":["## 6.1 Visulize speed vs performance tradeoff"]},{"cell_type":"code","execution_count":58,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":732},"id":"cUkuDLTE8G7Z","executionInfo":{"status":"ok","timestamp":1721477655503,"user_tz":-60,"elapsed":1859,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"7d778daf-2667-4719-ede3-c9ac208d1ba8"},"outputs":[{"output_type":"display_data","data":{"text/plain":["
"],"image/png":"iVBORw0KGgoAAAANSUhEUgAABAcAAALLCAYAAACFPuu3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACrTUlEQVR4nOzdd3gU5d7G8XvTQ0JIaJFQIlIjRYoQmhQhgCA2mgoEBFRUsCKcoCggKhoFGyDSixg4SLNRRFDpgqAigoUSCL0koaRn3j94d06WbEJYEkic7+e6uDQzzzPzm3lmN9l7p9gMwzAEAAAAAAAsy+1GFwAAAAAAAG4swgEAAAAAACyOcAAAAAAAAIsjHAAAAAAAwOIIBwAAAAAAsDjCAQAAAAAALI5wAAAAAAAAiyMcAAAAAADA4ggHAAAAAACwOMIBAP8Ko0aNks1mU+vWrQtk+TabTTabTevWrcuX5d18882y2WyaNWtWviyvKDtw4IC5fw8cOJCvy163bp257MLozJkzevrpp1WlShV5e3ubtcbHx9/o0gCneO+6vn777Tf16NFD5cqVk4eHh2w2m+rVq3ejywLwL0U4AFiQ/YN0Xv4VZY8++qhsNptKlSqllJSUPPerVq2abDab7rnnngKsrmjq16+fw/GxefPmK/apXbt2kTymsoYWBfFBKCMjQ23bttWHH36offv2ycvLS8HBwQoODpabG7+eb7QtW7Zo4MCBCgsLU/HixeXt7a2KFSvq9ttvV//+/TVr1iwdOnToRpeJa+Dsd56bm5tKlCihBg0aaNiwYYqNjb1h9e3fv1/NmzfXf//7Xx07dkwlSpRQcHCwSpcufcNqAvDv5nGjCwBwYwUHB9/oEgrMgAEDNG3aNJ05c0bLli1Tjx49rtjn+++/199//232t6tRo4YkqVixYvlSW5UqVeTj46MSJUrky/JulJkzZ6pJkyY5zt+yZYt+//33XJfh6elp7l9PT898ra9YsWLmsgub1atXa+fOnfL09NR3332nFi1a3OiSIMkwDD333HN6//33zWk2m02BgYE6efKkDh8+rO3bt2vmzJnq27cv36D/C/j5+cnf31/SpdDu1KlT2rFjh3bs2KHJkydrwYIF6tSp03Wva8qUKTp37pyqVq2qdevWqXz58te9BgDWwlcTgMUdO3Ys139FWZMmTXTrrbdKuvQhNi/s7YKDg9W5c2dz+p49e7Rnzx41btw4X2pbs2aN9uzZo/vvvz9flne9VapUSTabTQsWLFBSUlKO7ez78+abb86xTfny5c39m99//DZu3NhcdmHz22+/SZLq1q1LMFCITJgwwQwG7r33Xm3cuFHJyck6c+aMkpOTtW/fPk2fPl0dO3aUu7v7Da4W+WHo0KHm77yTJ08qMTFRH3/8sYoXL67z58+rZ8+eOn78+HWvy/4ece+99xIMALguCAcA/KvZv/1ftWqV4uLicm177tw5LVq0SJIUGRkpDw9OrspJ5cqV1bJlSyUkJOjzzz932iYpKUkxMTGy2WyKjIy8zhUWfhcvXpQk8xtL3HiGYWj8+PGSpI4dO2rp0qVq2rSpvLy8zDaVK1dW//799c033+ijjz66UaWiABUvXlyPP/64JkyYIEk6f/78DTlDhPcIANcb4QCAq5KcnKz33ntPzZo1U1BQkHx8fBQaGqrIyEjt3Lnziv0XL16su+++W8HBweY11nfffbeWLFlyxb7ffPONIiIiFBgYKH9/f9122216++23lZaWlmOfPn36yNPTU5mZmVf8427BggW6cOGCJKl///4O83K7IeHZs2f1yiuvqEGDBgoICJCXl5duuukm1a1bV4MGDdKaNWuy9bnSTb0yMjI0Y8YM3XnnnSpdurS8vb1Vvnx5de/ePdebIrZu3Vo2m02jRo2SYRiaOnWqwsPDFRAQoOLFi6tp06aaN29ervshrx555BFJOZ+V8fnnnyshIUGtW7dW5cqVc1xObjckvPyGgn///bf69++vihUrytvbWxUqVNCjjz6aY/BTkDckzDqGqampio6O1m233SY/Pz+VKFFCd955p1asWJGtn/2+DaNGjZJ06VKWrNc826dn9dVXX6lr164qX768vL29FRQUpJYtW2ry5MlKTU11Wl/WYyEtLU3vvvuubr/9dgUGBjo9lnft2qXHHntM1apVU7FixeTv76+6devqpZde0qlTp5yu4/Ibga5Zs0adO3dWmTJl5OPjo7CwMI0ePVrJycm57svTp09rzJgxCg8PV8mSJeXj46Obb75Z7du31+TJk5WQkOC0nys15+bUqVPmsZSXe474+vpmm2Yf3379+skwDH388cdq3LixAgICFBAQoBYtWmj+/PlXXPaBAwf07LPPqlatWvL391exYsVUs2ZNPfPMM1e8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m56erh9//NFp38zMzDwl8z4+Pnr44YclSXPmzHH41u/uu+82r4m8Vh4eHmrbtq2++uoreXt7yzAMffvtt3nqa9/etWvXmqdYXm7Pnj3mH/BZ99WNdM8996hUqVLmH+f5eSNCq7JfB2w/s6Ug17F9+/brcrO3rOyX8GRkZOibb77Jc78bWbOdu7u7fHx8JCnHy522bduW7eandn///bf5oS3rtc72bTt27JjDvVfy4uabbzZPL//iiy+uqm/WOr7//vscv6H94YcfXLrfQFb2EHbv3r366aefzP9mnZcXxYsX18MPP2zehPH48eMON8ItKPYx+vbbb/N0WUtBqVy5snkpRW6/l+2/e0qVKuX0koIb7dChQ5IuBew53Wcnr78/r5b9PehqX2+F5RgACgLhAIA8efDBByVJmzZt0qpVq7LNT09P15gxYyRJtWvXVu3atc15Xbt2lYeHh5KTk/XWW285Xf4bb7yhlJQUeXp6qmvXrub0unXrKiwsTJL0+uuvO/3APGPGjCt+025nv7Tg6NGjeu2118w/Jl39MJuSkpLjPG9vb/N0zZz+6LmcfT/HxcVp2rRpTtvY73ReunTpXG9EdT15eXnp/fff1wsvvKBhw4bp7rvvvtElFXmPPfaYpEtP/5g8eXKubS9cuODSt6bdu3dXYGCg0tLS9Pzzz+d62m5mZqbi4+Oveh05qVq1qlq2bCnp0pMo8nJfBalga05NTTWfupGbL774wryxWoMGDZy2SUpK0jvvvON03tixYyVduoFbRESEOb1NmzaqWrWqJOm555674phefoM1+80Rp0+frh07dlxV3549e0qSYmNjzaeNZJWZmWnWfS2qV69u3gRxzpw55lkDtWvXVv369bO1v9I+sJ/BIeX9ffZa9O/fXx4eHjp16pT5hJ6cpKam5hgQXSubzWaO2ZQpU5x+u37kyBFNmTJFksyndxQ29ptP/vbbb05fy998802BnZbfpk0b8waKeXm92RWWYwAoCIQDAPKka9eu5h90PXr00Pz5882b++zfv19du3bVpk2bJElvv/22Q9/y5cvrmWeekSSNGzdOr776qvkHe3x8vEaOHKno6GhJlx7BVa5cOYf+r7/+uqRL36Y//PDDZhCQnJysjz/+WIMHDzYvF7iSBg0aqF69epL+90jAcuXKqVOnTnndFQ5CQ0MVFRWlzZs3OwQFf//9t3r16qWLFy+ap8PmRePGjc1wZMiQIfroo4/MmxkdO3ZMjz76qPkYsNdee8389rIw6NWrl9555x299dZbOT5GDXnXqlUr83KNp556Ss8995z27dtnzk9JSdHmzZs1bNgwhYaG5nhzytwEBgbqvffek3Tpuu/OnTtry5YtZgiXmZmpP/74Q++++65q1aqV72cxvP/++/Lx8dFff/2l5s2ba8WKFeb7SkZGhn766ScNGjTI4ZvDgqw5NTVVd955pxo0aKDx48fr119/Na8vzszM1MGDBzV69GgzxAsICMjxkYMlSpTQa6+9pjfffFPnzp2TdOkSimeeecb88D1y5EiH17CHh4c+/vhjeXh4aP369WrZsqXWrFnjcCO1ffv26eOPP1ajRo00adIkh3W+8MILqlOnjpKTk9WmTRt99NFHDpcBxMfH65tvvlFkZGS2p7+Eh4ebj3x74oknNHXqVPM9LTY2Vj179tSmTZtUrFixPO/PnNjvRxITE2PeeyCne5Rs3LhRdevW1YQJE/THH3+Y42wYhjZu3KgnnnhC0qUb79WtW/eaa7uSKlWqmI90fPvttxUZGaldu3aZ89PT07Vz506NGTNGVatW1c6dOwuslhEjRigwMFBnzpxRu3btzLvvS5fuqN+uXTvFx8erZMmSOT5G+Ebr2LGjJOn333/XU089ZYZWFy5c0JQpU9StW7ds933IL+7u7vroo49ks9m0fv16tW3bVuvXrzePsdTUVK1bt069e/c2H6ksFa5jAMh3BgDLefXVVw1JxtW+BRw+fNioVauW2dfLy8sIDAw0f3ZzczPef/99p31TUlKMHj16OLQNCgoy3NzczGkPPfSQkZqa6rT/Sy+9ZLaTZAQFBRkeHh6GJOOOO+4woqKiDElGq1atrrgdH374ocOy/vOf/1yxj73t2rVrnU7Puk0+Pj7mNJvNZkyYMCHb8kJDQw1JxsyZM7PNi4+PN1q1amUuw8PDwwgKCjJsNps5bejQoU7rtPd79dVXc9wW+/jnZV9drm/fvi71nTlzZo7H3P79+815+/fvd5i3du3aPB2rOY1PXvs7k7UuZ+OU2xja2fdX3759s83LyzikpKQYAwcOdDjO/P39s712JBmHDx926JuXY8Fu8uTJhpeXl7ksb29vo1SpUoanp6fDOubNm3fV23ClMVi5cqVRokQJs42np2e2dS9ZsiTfas7NhQsXDHd3d4f+7u7uRsmSJbMtt2zZssYPP/yQbRlZx7xnz57mMi5/DUdGRhoZGRlO61iyZIlRvHjxbPvE29vboYaxY8dm6xsXF2c0adLE4T0oMDDQCAgIcOhbtWrVbH1PnTpl3HbbbQ7rtb/H22w2Y+LEiXk67q/k1KlTDmPn5uZmxMXFOW2b9fjJui/s7/+SjICAAKdjcSX2/nl5jWSVmZlpjBw50mE8fX19jVKlSmU7ftavX+/QN7f3hMvl5TW8bt06h9ePn5+f4efnZ/4cGBjodN/k9r6bVV7eQ+3v76GhoTm2ye294sEHH3TYZ4GBgeZ+bNiwofk729ny87I/r1Tf7NmzHV5b9veSrMfYjh07HPpcyzEAFGacOQAgz8qXL69t27Zp/PjxatKkiXx9fXXx4kVVrFhRffr00fbt2/X000877evl5aUFCxZo0aJFuuuuu1SqVCmdO3dOpUqV0l133aXFixdr/vz5OX7jPHbsWH355Ze68847FRAQoJSUFIWFhWncuHFas2bNVT0vulevXg7f1l3L9fGrVq1SVFSU7rjjDlWsWNF8tFjVqlX1yCOP6KefftKzzz57VcssUaKE1qxZo+nTp6t169YqXry4zp8/r5tuukldu3bV2rVrzTMt8O/m5eWlqVOnauPGjerXr5+qVKmijIwMnT9/XmXLllXr1q31yiuv6Ndff73io/NyM2jQIO3du1dDhw7VbbfdJm9vb8XHx8vf31+33367hgwZotWrVxfIqcnt27fXX3/9pZdeekn169eXr6+vLly4oPLly6tDhw6aMmWK7rzzzutSc7FixXT8+HHNmTNHAwcOVMOGDVWiRAklJCTI3d1dFSpUMG+K99dff2X79v1yn332mSZNmqT69esrPT1dfn5+atq0qebMmaPZs2fneBr8fffdp7///luvvvqqGjduLH9/f8XHx8vb21u33XabBg4cqCVLlujFF1/M1jckJETr16/XZ599pnvuuUflypXTxYsXlZqaqptvvlldunTRe++9px9++CFb31KlSmnjxo0aPXq0atasKTc3N3l4eKhjx45avXq1nnzyyTzvy9yUKlXK4Wyttm3bms+iv1yjRo20cOFCPfHEE2rYsKFKly6txMRE+fj4qF69eho2bJj++OOPK45FfrLZbBozZox+/fVXPfnkkwoLC5O7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MAAAAAAAAAovl8KB2bNnq2HDhjpy5IjT+UeOHFHDhg01f/78ayoOAAAAAAAUPJfCgVmzZsnLy0shISFO54eEhMjX11fTp0+/puIAAAAAAEDBcykc2L17t+rXr59rm3r16mn37t0uFQUAAAAAAK4fl8KBhIQEBQUF5domICBAZ8+edakoAAAAAABw/bgUDoSEhGjnzp25tvnll18UHBzsyuIBAAAAAMB15FI40K5dO61cuVKrV692On/VqlVasWKFOnTocE3FAQAAAACAgufhSqeoqCgtWLBAnTp1Up8+fRQREaHy5csrLi5Oq1at0rx58xQQEKCoqKj8rhcAAAAAAOQzl8KBypUr66uvvtKDDz6oWbNmafbs2eY8wzBUoUIFLVy4UJUrV863QgEAAAAAQMFwKRyQpBYtWmjfvn1atmyZtm7dqoSEBAUGBqpx48a655575OXllZ91AgAAAACAAuJyOCBJXl5e6t69u7p3755f9QAAAAAAgOvMpRsSAgAAAACAf49rOnPg8OHDWrt2rY4cOaKUlJRs8202m0aOHHktqwAAAAAAAAXM5XDgxRdf1Pvvv6+MjAxzmmEYstlsDv9POAAAAAAAQOHm0mUFU6dO1bvvvqs2bdpo0aJFMgxDffv21WeffaZBgwbJw8ND3bt313fffZff9QIAAAAAgHzm0pkDn3zyiW6++WZ98803cnO7lC/cfPPN6tmzp3r27KkePXooIiKCGxUCAAAAAFAEuHTmwJ49e9SxY0czGJCk9PR08/9btWqlzp0765133rn2CgEAAAAAQIFy+WkFgYGB5v/7+fnp9OnTDvNr1Kih33//3eXCAAAAAADA9eFSOFC+fHkdPnzY/LlKlSrasmWLQ5tdu3bJz8/v2qoDAAAAAAAFzqVwoHnz5tq8ebP587333qsdO3bo8ccf11dffaWoqCh98803atmyZb4VCgAAAAAACoZLNyTs06ePjhw5ooMHDyo0NFQvvviivvzyS02dOlXTpk2TYRi6+eabFR0dnd/1AgAAAACAfOZSONC6dWu1bt3a/Nnf31+bN2/WsmXL9M8//yg0NFRdunThsgIAAAAAAIoAl8KBH374QQEBAapXr545zdPTU926dcuvugAAAAAAwHXi0j0H2rRpo08++SS/awEAAAAAADeAS+FA2bJl5ePjk9+1AAAAAACAG8ClcCAi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wgEAAAAAACyOcAAAAAAAYBk//fSTBg8erFq1asnPz0+VKlVSjx499Oeff2Zru337dnXs2FEBAQEqXry42rdvr507d17/oq8DjxtdAAAAAAAA18tbb72lDRs2qHv37qpbt66OHTumjz76SA0aNNDmzZtVu3ZtSdLPP/+sFi1aqGLFinr11VeVmZmpSZMmqVWrVtq6datq1Khxg7ckfxEOAAAAAAAs4/nnn9f8+fPl5eVlTuvZs6fq1KmjcePGad68eZKkkSNHytfXV5s2bVKpUqUkSb1791b16tU1YsQIff755zek/oJCOAAAAAAAKFAZGRnavn27Nm3apOPHjys4OFhNmzZVw4YN5e7ufl1radasWbZp1apVU61atfTHH3+Y03788Ud17NjRDAYkqVy5cmrVqpW+/PJLnT9/Xv7+/tel5uuBcAAAAAAAUGAyMjI0d+5crVy5UhkZGfLz89Pff/+tzZs3q0OHDurTp891DwguZxiGjh8/rlq1apnTUlJS5Ovrm61tsWLFlJqaql27dqlJkybXs8wCRTgAAAAAACgw27dv18qVK1W2bFkFBQWZ08+ePauVK1fq1ltvVePGjW9ghdKnn36quLg4jRkzxpxWo0YNbd68WRkZGWZ4kZqaqi1btkiS4uLibkitBYWnFQAAAAAACsymTZuUkZHhEAxIUlBQkDIyMrR58+YbVNkle/bs0VNPPaWmTZuqb9++5vQnn3xSf/75pwYMGKDdu3dr165dioyM1NGjRyVJSUlJN6rkAkE4AAAAAAAoMMePH5efn5/TeX5+fjp+/Ph1ruh/jh07ps6dO6tEiRJatGiRw+UNgwYN0ogRIzR//nzVqlVLderU0T///KNhw4ZJ0r/qfgMS4QAAAAAAoAAFBwfrwoULTudduHBBwcHB17miSxISEnTXXXcpPj5eK1asUEhISLY2r7/+uo4fP64ff/xRv/76q3766SdlZmZKkqpXr369Sy5QhAMAAAAAgALTtGlTubu76+zZsw7Tz549K3d39xtyU7/k5GR16dJFf/75p7788kvdeuutObYNCgpSixYtVKdOHUnSt99+qwoVKqhmzZrXq9zrghsSAgAAAAAKTMOGDdWhQwetXLlSR48elZ+fny5cuCB3d3d16NBBDRs2vK71ZGRkqGfPntq0aZOWLVumpk2b5rnvggUL9NNPP+mdd96R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x6FV5/bt22LMmDHCyclJSKVSrddW9yhDffsgRNX5U78PnjzeQgiRlZUlZs+eLXx9fYVcLhd2dnYiICBAvPbaayIxMbFW+6HOW3FxsZg/f75o3bq1sLCwEP7+/mLVqlU6j6ZTO3DggIiMjBTOzs5CJpOJli1biuDgYLFkyRKtR8E97XGtrLpHGerLYXWPw9T3/iwsLBRz584Vnp6eQi6XC19fX7FkyRJRVlZWZT7OnTsnwsPDRbNmzYStra2IiIgQly5dEkOGDBEAxJ9//qnzmtoeq+oUFxcLhUIhIiIitNpv3rwpFixYILp37y5cXFyEhYWF8PDwECNGjBCnTp3S29e2bdtE//79RfPmzYVMJhPu7u4iNDRUrFixQudRqCqVSvzv//6v6N69u7CxsRHW1tbC19dXvPHGGzqxp6eniylTpghXV1dhbm4uXF1dxZQpU0R6erpODNV9XlSVx7y8PDFt2jTh7OwsLC0tRdeuXcXOnTv1vse2bt0qxowZI9q2bSusra2Fvb296NSpk1i2bJkoLCzU2WZoaKhwcXERZWVlemMiInrWSIR4YiAXERERUR2Ehobi6NGjOmPFqfYqKirQtm1bFBcXP9WEnU9r0aJF+PTTT3H9+nXNsAiqu99//x3+/v5YvHixzrAFIqJnFeccICIiImog5eXlep888OmnnyIjI8Pkt6TPnz8fCoWi1o8kpdr56KOP4OrqqnkMJBFRY8A5B4iIiIgayMOHD+Hu7o5XXnkFfn5+UCqVSEpKwq+//gpXV1csXrzYpNu3tbXF5s2bcfbsWVRUVGie8EGGUyqV8Pf3R0xMDGxsbBo6HCKiWuOwAiIiIjIqDiuovbKyMsyZMweHDh3CrVu3UFJSAldXV0RERGDRokVwd3dv6BCJiKiJYHGAiIiIiIiIqInjnANERERERERETRyLA0RERERERERNHIsDRERERERERE0ciwNERERERERETRyLA0RERERERERNHIsDRERERERERE0ciwNERERERERETRyLA0RERERERERN3P8DAcYIzoRO8EQAAAAASUVORK5CYII=\n"},"metadata":{}}],"source":["# 1. Create a plot from model comparison DataFrame\n","import os\n","fig, ax = plt.subplots(figsize=(12, 8))\n","scatter = ax.scatter(data=df,\n"," x=\"time_per_pred_cpu\",\n"," y=\"test acc\",\n"," c=[\"blue\", \"orange\"], # what colours to use?\n"," s=\"model size (MB)\") # size the dots by the model sizes\n","\n","# 2. Add titles, labels and customize fontsize for aesthetics\n","ax.set_title(\"FoodVision Mini Inference Speed vs Performance\", fontsize=18)\n","ax.set_xlabel(\"Prediction time per image (seconds)\", fontsize=14)\n","ax.set_ylabel(\"Test accuracy (%)\", fontsize=14)\n","ax.tick_params(axis='both', labelsize=12)\n","ax.grid(True)\n","\n","# 3. Annotate with model names\n","for index, row in df.iterrows():\n"," ax.annotate(text=row[\"models\"], # note: depending on your version of Matplotlib, you may need to use \"s=...\" or \"text=...\", see: https://github.com/faustomorales/keras-ocr/issues/183#issuecomment-977733270\n"," xy=(row[\"time_per_pred_cpu\"]+0.0006, row[\"test_acc\"]+0.03),\n"," size=12)\n","\n","# 4. Create a legend based on model sizes\n","handles, labels = scatter.legend_elements(prop=\"sizes\", alpha=0.5)\n","model_size_legend = ax.legend(handles,\n"," labels,\n"," loc=\"lower right\",\n"," title=\"Model size (MB)\",\n"," fontsize=12)\n","\n","# Save the figure\n","!mkdir images/\n","\n","plt.savefig(\"images/09-foodvision-mini-inference-speed-vs-performance.jpg\")\n","\n","# Show the figure\n","plt.show()"]},{"cell_type":"markdown","metadata":{"id":"rQ3SDUAz8G7Z"},"source":["# 7. Bringing FoodVision Mini to life by Createing a gradio Demo"]},{"cell_type":"code","execution_count":59,"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":347},"id":"L5SVueA58G7Z","executionInfo":{"status":"ok","timestamp":1721477685170,"user_tz":-60,"elapsed":29678,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"c99d90bc-0c7d-4966-c994-d4f528d82f64"},"outputs":[{"output_type":"stream","name":"stdout","text":["\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m12.4/12.4 MB\u001b[0m \u001b[31m44.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m857.8/857.8 kB\u001b[0m \u001b[31m44.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m92.2/92.2 kB\u001b[0m \u001b[31m8.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m318.1/318.1 kB\u001b[0m \u001b[31m23.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m75.6/75.6 kB\u001b[0m \u001b[31m6.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m141.1/141.1 kB\u001b[0m \u001b[31m13.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.1/10.1 MB\u001b[0m \u001b[31m43.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.8/62.8 kB\u001b[0m \u001b[31m5.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m129.9/129.9 kB\u001b[0m \u001b[31m10.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m77.9/77.9 kB\u001b[0m \u001b[31m8.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m58.3/58.3 kB\u001b[0m \u001b[31m5.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m71.9/71.9 kB\u001b[0m \u001b[31m6.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m307.7/307.7 kB\u001b[0m \u001b[31m27.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m341.4/341.4 kB\u001b[0m \u001b[31m25.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.4/3.4 MB\u001b[0m \u001b[31m75.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.2/1.2 MB\u001b[0m \u001b[31m56.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25h Building wheel for ffmpy (setup.py) ... \u001b[?25l\u001b[?25hdone\n"]},{"output_type":"execute_result","data":{"text/plain":["'4.38.1'"],"application/vnd.google.colaboratory.intrinsic+json":{"type":"string"}},"metadata":{},"execution_count":59}],"source":["# installing and impoering gradio\n","try:\n"," import gradio as gr\n","except:\n"," !pip -q install gradio\n"," import gradio as gr\n","gr.__version__"]},{"cell_type":"code","source":["vit.to(\"cpu\")\n","#check the device\n","next(iter(vit.parameters())).device"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"15QNqgLp-3zN","executionInfo":{"status":"ok","timestamp":1721477685171,"user_tz":-60,"elapsed":15,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"11914616-0908-417c-ddc7-be4c8d6a08f5"},"execution_count":60,"outputs":[{"output_type":"execute_result","data":{"text/plain":["device(type='cpu')"]},"metadata":{},"execution_count":60}]},{"cell_type":"code","source":["# Creating a function that replicate the previous workoflow of prediction\n","from typing import Tuple, Dict\n","\n","def predict(img) -> Tuple[Dict, float]:\n"," \"\"\"Transforms and performs a prediction on img and returns prediction and time taken.\n"," \"\"\"\n"," # Start the timer\n"," start_time = timer()\n","\n"," # Transform the target image and add a batch dimension\n"," img = vit_transform(img).unsqueeze(0)\n","\n"," # Put model into evaluation mode and turn on inference mode\n"," effnetb2.eval()\n"," with torch.inference_mode():\n"," # Pass the transformed image through the model and turn the prediction logits into prediction probabilities\n"," pred_probs = torch.softmax(vit(img), dim=1)\n","\n"," # Create a prediction label and prediction probability dictionary for each prediction class (this is the required format for Gradio's output parameter)\n"," pred_labels_and_probs = {num_classes[i]: float(pred_probs[0][i]) for i in range(len(num_classes))}\n","\n"," # Calculate the prediction time\n"," pred_time = round(timer() - start_time, 5)\n","\n"," # Return the prediction dictionary and prediction time\n"," return pred_labels_and_probs, pred_time\n","\n","################################################################################\n","from timeit import default_timer as timer\n","# try prediciton\n","import random\n","from PIL import Image\n","# Get a list of all test image file paths\n","test_data_paths = list(Path(test_dir).glob('*/*.jpg'))\n","\n","# randomly select an image\n","random_image_path = random.sample(test_data_paths, 1)[0]\n","\n","# open image target\n","image = Image.open(random_image_path)\n","print(f\"[INFO] Predict on image at path : {random_image_path} \\n\")\n","\n","# predict on the target image and print out the outputs\n","pred_dict,pred_time = predict(img=image)\n","print(f\"[INFO] Prediction label and probability dictionary : \\n {pred_dict}\")\n","print(f\"[INFO] Prediction time : {pred_time} s \")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"L81zseRGEtzx","executionInfo":{"status":"ok","timestamp":1721477685888,"user_tz":-60,"elapsed":727,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"b8321ae6-0387-43ad-f817-224c0394d6b5"},"execution_count":61,"outputs":[{"output_type":"stream","name":"stdout","text":["[INFO] Predict on image at path : data/pizza_steak_sushi_20_percent/test/sushi/389730.jpg \n","\n","[INFO] Prediction label and probability dictionary : \n"," {'pizza': 0.00011764598457375541, 'steak': 4.380743575893575e-06, 'sushi': 0.9998779296875}\n","[INFO] Prediction time : 0.97051 s \n"]}]},{"cell_type":"markdown","source":["# 7.3 Creating a list of exemple images"],"metadata":{"id":"O61zOC1SIv45"}},{"cell_type":"code","source":["exemple_list=[[str(filepath)] for filepath in random.sample(test_data_paths , k=3)]\n","exemple_list"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"nra3pmfkH3i3","executionInfo":{"status":"ok","timestamp":1721477686272,"user_tz":-60,"elapsed":390,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"fd879dd3-f282-4e42-cd4b-2a889a86e164"},"execution_count":62,"outputs":[{"output_type":"execute_result","data":{"text/plain":["[['data/pizza_steak_sushi_20_percent/test/sushi/1203702.jpg'],\n"," ['data/pizza_steak_sushi_20_percent/test/pizza/2111981.jpg'],\n"," ['data/pizza_steak_sushi_20_percent/test/steak/3173402.jpg']]"]},"metadata":{},"execution_count":62}]},{"cell_type":"markdown","source":["# 7.4 Building a Gradio interface"],"metadata":{"id":"ECqsD7OmJMq_"}},{"cell_type":"code","source":["import gradio as gr\n","title=\"FoodVision\"\n","description=\"EffNetB2 feature extractor computer vision model\"\n","article=\"Created\"\n","\n","# Create gradio demo\n","demo = gr.Interface(fn=predict, # mapping function from input to output\n"," inputs=gr.Image(type=\"pil\"), # what are inputs\n"," outputs=[gr.Label(num_top_classes = len(num_classes) , label=\"Prediction\"), # what are the output\n"," gr.Number(label=\"Prediction time (s)\")], # our fn has two outputs , therefore we have two outputs\n"," examples=exemple_list,\n"," title=title,\n"," description=description,\n"," article=article\n"," )\n","\n","# Launch the demo\n","demo.launch(debug=False, # print error locally ?\n"," share=True) # generate a publically shareable URL ?"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":610},"id":"ToJTnoCMzT9B","executionInfo":{"status":"ok","timestamp":1721478506408,"user_tz":-60,"elapsed":2095,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"b2a9c9d2-b20a-4cdf-cd49-987484ccb7b8"},"execution_count":63,"outputs":[{"output_type":"stream","name":"stdout","text":["Colab notebook detected. To show errors in colab notebook, set debug=True in launch()\n","Running on public URL: https://ca7b8255305c03e0b1.gradio.live\n","\n","This share link expires in 72 hours. For free permanent hosting and GPU upgrades, run `gradio deploy` from Terminal to deploy to Spaces (https://huggingface.co/spaces)\n"]},{"output_type":"display_data","data":{"text/plain":[""],"text/html":["
"]},"metadata":{}},{"output_type":"execute_result","data":{"text/plain":[]},"metadata":{},"execution_count":63}]},{"cell_type":"markdown","source":["# 8. Turning our foodvision mini gradio demo into a deployable app"],"metadata":{"id":"9QY1yBcUJ-Lu"}},{"cell_type":"markdown","source":["## 8.1. What is hugging face space"],"metadata":{"id":"X4LwsqocKMz6"}},{"cell_type":"markdown","source":["## 8.2. Deployed Gradio app structure"],"metadata":{"id":"TlOCX7CEKqo8"}},{"cell_type":"markdown","source":["## 8.3. Creating a demos folder to store our foodvision mini app files"],"metadata":{"id":"cCE7741ELm08"}},{"cell_type":"code","source":["import shutil\n","from pathlib import Path\n","# Create foodvision mini demo path\n","foodvision_mini_demo_path = Path('demo/foodvision_mini')\n","\n","# Remove files that might already exists there and create new directory\n","if foodvision_mini_demo_path.exists():\n"," shutil.rmtree(foodvision_mini_demo_path)\n"," foodvision_mini_demo_path.mkdir(parents=True # make the parent folders ?\n"," , exist_ok=True) # creeate it even if it already exists ?\n","else:\n"," # if the file doesn't exists , create it anyway\n"," foodvision_mini_demo_path.mkdir(parents=True\n"," , exist_ok=True)\n","# check what's in the folder\n","!ls demo/foodvision_mini/"],"metadata":{"id":"LBieTrEkHV0L","executionInfo":{"status":"ok","timestamp":1721479927557,"user_tz":-60,"elapsed":410,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}}},"execution_count":71,"outputs":[]},{"cell_type":"markdown","source":["## 8.4. Creating a folder of exemple images to use with our foodvision mini demo"],"metadata":{"id":"72cq0uCcMz8a"}},{"cell_type":"code","source":["# 1. Create an exemple directory\n","foodvision_mini_examples_path = foodvision_mini_demo_path / \"examples\"\n","foodvision_mini_examples_path.mkdir(parents=True, exist_ok=True)\n","\n","# 2. Collect three random test dataset image paths\n","foodvision_mini_examples = [Path('data/pizza_steak_sushi_20_percent/test/pizza/1001116.jpg'),\n"," Path('data/pizza_steak_sushi_20_percent/test/steak/100274.jpg'),\n"," Path('data/pizza_steak_sushi_20_percent/test/sushi/1203702.jpg'),]\n","\n","# 3. Copy the three random images to the exemples directory\n","for example in foodvision_mini_examples:\n"," destination = foodvision_mini_examples_path / example.name\n"," print(f\"[INFO] Copying {example} to {destination}\")\n"," shutil.copy2(src=example,\n"," dst=destination)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Oih_rYuFKH2S","executionInfo":{"status":"ok","timestamp":1721480370701,"user_tz":-60,"elapsed":353,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"9b42fc4f-3279-41e1-b772-b7f44e63b78d"},"execution_count":72,"outputs":[{"output_type":"stream","name":"stdout","text":["[INFO] Copying data/pizza_steak_sushi_20_percent/test/pizza/1001116.jpg to demo/foodvision_mini/examples/1001116.jpg\n","[INFO] Copying data/pizza_steak_sushi_20_percent/test/steak/100274.jpg to demo/foodvision_mini/examples/100274.jpg\n","[INFO] Copying data/pizza_steak_sushi_20_percent/test/sushi/1203702.jpg to demo/foodvision_mini/examples/1203702.jpg\n"]}]},{"cell_type":"code","source":["import os\n","\n","# Get example filepaths in a list of lists\n","example_list = [[\"examples/\" + example] for example in os.listdir(foodvision_mini_examples_path)]\n","example_list"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"eXyIHm7POWZl","executionInfo":{"status":"ok","timestamp":1721480372231,"user_tz":-60,"elapsed":3,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"a72b742b-c3a6-47f6-aebb-e48a00c4d53d"},"execution_count":73,"outputs":[{"output_type":"execute_result","data":{"text/plain":["[['examples/1203702.jpg'], ['examples/100274.jpg'], ['examples/1001116.jpg']]"]},"metadata":{},"execution_count":73}]},{"cell_type":"markdown","source":["## 8.5. Moving our trained EffNetB2 model to our foodvision mini demo directory"],"metadata":{"id":"jW0fEKlbOffw"}},{"cell_type":"code","source":["import shutil\n","# Create a source path for our target model\n","effnetb2_foodvision_mini_path = \"models/effnetb2.pth\"\n","\n","# Create a destination path for our target model\n","effnetb2_foodvision_mini_destination = foodvision_mini_demo_path\n","\n","# try to move the file\n","try:\n"," print(f\"[INFO] Attempting to move {effnetb2_foodvision_mini_destination}\")\n"," # move the model\n"," shutil.move(src=effnetb2_foodvision_mini_path ,\n"," dst=effnetb2_foodvision_mini_destination)\n"," print(f\"[INFO] Model move completly\")\n","\n","# if the model has already been moved , check if it exists\n","except:\n"," print(f'[INFO] no model found at {effnetb2_foodvision_mini_path}, perhaps moved ?')\n"," print(f'[INFO] model found at {effnetb2_foodvision_mini_destination} : {effnetb2_foodvision_mini_destination.exists()} ')"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"At5a04AbOd2l","executionInfo":{"status":"ok","timestamp":1721480921685,"user_tz":-60,"elapsed":5,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"8eb62068-357a-4179-f2c1-7e94c30a501c"},"execution_count":75,"outputs":[{"output_type":"stream","name":"stdout","text":["[INFO] Attempting to move demo/foodvision_mini\n","[INFO] no model found at models/effnetb2.pth, perhaps moved ?\n","[INFO] model found at demo/foodvision_mini : True \n"]}]},{"cell_type":"markdown","source":["## 8.6. Turning our effnetb2 model into python script (model.py)"],"metadata":{"id":"RL3FYdgKQnbM"}},{"cell_type":"code","source":["%%writefile demo/foodvision_mini/model.py\n","import torch\n","import torchvision\n","from torch import nn\n","def create_effnetb2_model(num_classes : int = 3,\n"," seed : int=42):\n"," \"\"\"\n"," Create an EffNetB2 feature extractor model and move it to the target device.\n"," Args:\n"," num_classes (int, optional): number of classes in the classifier head.\n"," Defaults to 3.\n"," seed (int, optional): random seed value. Defaults to 42.\n","\n"," Returns:\n"," model (torch.nn.Module): EffNetB2 feature extractor model.\n"," transforms (torchvision.transforms): EffNetB2 image transforms.\n"," \"\"\"\n"," # Create EffNetB2 pretrained weights , transforms and model\n"," weights = torchvision.models.EfficientNet_B2_Weights.DEFAULT\n"," transforms = weights.transforms()\n"," model = torchvision.models.efficientnet_b2(weights)\n","\n"," # Freeze all layers in base model\n"," for param in model.parameters():\n"," param.requires_grad = False\n"," # change classifier head with random seed for reproducilityù\n"," torch.manual_seed(seed)\n"," model.classifier = nn.Sequential(\n"," nn.Dropout(p=0.2, inplace=True),\n"," nn.Linear(in_features=1408, out_features=len(num_classes), bias=True)\n"," )\n"," return model, transforms"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"LA34mcE8Qhjc","executionInfo":{"status":"ok","timestamp":1721482470104,"user_tz":-60,"elapsed":362,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"dc8b62bc-08b8-4d56-8bdd-dc1474680ed1"},"execution_count":77,"outputs":[{"output_type":"stream","name":"stdout","text":["Overwriting demo/foodvision_mini/model.py\n"]}]},{"cell_type":"markdown","source":["## 8.7 Turning our foodvision mini gradio app into a python script(app.py)"],"metadata":{"id":"Jlx_RPjDWfgl"}},{"cell_type":"code","source":["%%writefile demo/foodvision_mini/app.py\n","# 1. Imports and class names setup\n","import gradio as gr\n","import os\n","import torch\n","\n","from model import create_effnetb2_model\n","from timeit import default_timer as timer\n","from typing import Tuple , Dict\n","\n","# Setup class names\n","class_names = ['pizza','steak','sushi']\n","\n","# Model and transforms preparation\n","# Create EffNetB2 model\n","effnetb2 , effnetb2_transforms = create_effnetb2_model(num_classes=len(class_names))\n","\n","# load and save weights\n","effnetb2.load_state_dict(torch.load(\"models/effnetb2.pth\"))\n","\n","# Predict function\n","def predict(img):\n"," \"\"\"\n"," Transforms and performs a prediction on img and returns prediction and time taken.\n"," \"\"\"\n"," # Start timer\n"," start_time = timer()\n","\n"," # transform the target image and add a batch dimension\n"," img = effnetb2_transforms(img).unsqueeze(0)\n","\n"," # put model into evaluation mode and turn on inference mode\n"," effnetb2.eval()\n"," with torch.inference_mode():\n"," # pass the transformed image through the model and turn the pred logits into prediction probabilities\n"," pred_probs = torch.softmax(effnetb2(img), dim=1)\n"," # create a prediction label and prediction probability dictionary\n"," pred_labels_and_probs = {class_names[i]: float(pred_probs[0][i]) for i in range(len(class_names))}\n"," # calculate time\n"," pred_time = round(timer() - start_time , 5)\n"," # return the prediction dictionary\n"," return pred_labels_and_probs, pred_time\n","\n","## Gradio app\n","\n","# Create title, description and article strings\n","title = \"FoodVision Mini 🍕🥩🍣\"\n","description = \"An EfficientNetB2 feature extractor computer vision model to classify images of food as pizza, steak or sushi.\"\n","article = \"Created \"\n","\n","# Create examples list from \"examples/\" directory\n","example_list = [[\"examples/\" + example] for example in os.listdir(\"examples\")]\n","\n","# Create the Gradio demo\n","demo = gr.Interface(fn=predict, # mapping function from input to output\n"," inputs=gr.Image(type=\"pil\"), # what are the inputs?\n"," outputs=[gr.Label(num_top_classes=3, label=\"Predictions\"), # what are the outputs?\n"," gr.Number(label=\"Prediction time (s)\")], # our fn has two outputs, therefore we have two outputs\n"," # Create examples list from \"examples/\" directory\n"," examples=example_list,\n"," title=title,\n"," description=description,\n"," article=article)\n","\n","# Launch the demo!\n","demo.launch()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"Obv-3N0-Wd8x","executionInfo":{"status":"ok","timestamp":1721483249070,"user_tz":-60,"elapsed":457,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"af60e043-414a-4ca8-9971-c5c49d7c0218"},"execution_count":79,"outputs":[{"output_type":"stream","name":"stdout","text":["Overwriting demo/foodvision_mini/app.py\n"]}]},{"cell_type":"markdown","source":["## 8.8 Creating a requirements file for foodvision mini (requirements.txt)"],"metadata":{"id":"KdLaxzYoZd3t"}},{"cell_type":"code","source":["%%writefile demo/foodvision_mini/requirements.txt\n","gradio==3.21.0\n","torch==1.13.1\n","torchvision==0.14.1"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"0ovmaIUfXiKA","executionInfo":{"status":"ok","timestamp":1721483342407,"user_tz":-60,"elapsed":409,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"f6d3b38b-1a05-4fe4-c9d5-ebbbbdfcf685"},"execution_count":80,"outputs":[{"output_type":"stream","name":"stdout","text":["Writing demo/foodvision_mini/requirements.txt\n"]}]},{"cell_type":"markdown","source":["# 9.Deploying our foodvision mini app to huggingface spaces"],"metadata":{"id":"4bOImCm4Z0Pg"}},{"cell_type":"markdown","source":["## 9.1. Downloading our foodvision mini app files"],"metadata":{"id":"tFBiPbpzHXkf"}},{"cell_type":"code","source":["!ls demo/foodvision_mini/"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"ltUjR94sZy1c","executionInfo":{"status":"ok","timestamp":1721495325745,"user_tz":-60,"elapsed":9,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"6952ff94-18aa-41b0-dd81-e02f127f72ba"},"execution_count":1,"outputs":[{"output_type":"stream","name":"stdout","text":["ls: cannot access 'demo/foodvision_mini/': No such file or directory\n"]}]},{"cell_type":"code","source":["from google.colab import drive\n","drive.mount('/content/drive')"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"lKkocAEurH-p","executionInfo":{"status":"ok","timestamp":1721521469634,"user_tz":-60,"elapsed":27344,"user":{"displayName":"Mohammed Amine","userId":"16875208182183703939"}},"outputId":"148d72a9-5dc7-420a-d43a-1ecab625fc67"},"execution_count":1,"outputs":[{"output_type":"stream","name":"stdout","text":["Mounted at /content/drive\n"]}]},{"cell_type":"code","source":[],"metadata":{"id":"PjaRP9S3HdRa"},"execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","name":"python3"},"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.11.0"},"colab":{"provenance":[]},"widgets":{"application/vnd.jupyter.widget-state+json":{"1e1e297b4df64febaed870acc55bc315":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_7516c61d217242d7a6de8d8bdca0aa50","IPY_MODEL_8c61840f835c4eb89cd586ac62921e17","IPY_MODEL_52c9c452e4384c578da4decb76fb9c60"],"layout":"IPY_MODEL_43924b8842364e259db6dcc98fd135bf"}},"7516c61d217242d7a6de8d8bdca0aa50":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_b9754b4aecac4e1c86f1563ca8cdd1ab","placeholder":"​","style":"IPY_MODEL_d3529fd788a145e9b94e2719e2d19399","value":"100%"}},"8c61840f835c4eb89cd586ac62921e17":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_671d7ee4bd4f4769af39a8d44c84d31f","max":5,"min":0,"orientation":"horizontal","style":"IPY_MODEL_9bd61d9847414ab7948f2b075a06771a","value":5}},"52c9c452e4384c578da4decb76fb9c60":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_0ff43ca1e5c840f3bf272ab8181cedf1","placeholder":"​","style":"IPY_MODEL_9adf1545759b4373a8c5fe8426685022","value":" 5/5 [15:24<00:00, 184.04s/it]"}},"43924b8842364e259db6dcc98fd135bf":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b9754b4aecac4e1c86f1563ca8cdd1ab":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d3529fd788a145e9b94e2719e2d19399":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"671d7ee4bd4f4769af39a8d44c84d31f":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"9bd61d9847414ab7948f2b075a06771a":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"0ff43ca1e5c840f3bf272ab8181cedf1":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"9adf1545759b4373a8c5fe8426685022":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"ae9aed73eb3a4b9d9f8453d51672fbeb":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_3e7f0490f44849f986ebb8d43a6e20a9","IPY_MODEL_6809c340c9e448f3a74b388574ce285d","IPY_MODEL_58ae193430364fba8fa0e2cc8cb1310d"],"layout":"IPY_MODEL_c09205772dac4398a37cff41d519581c"}},"3e7f0490f44849f986ebb8d43a6e20a9":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_9e8668c476734fc1a202339437d31afc","placeholder":"​","style":"IPY_MODEL_78603cda90bb4199b9e57bdb332f41ff","value":"100%"}},"6809c340c9e448f3a74b388574ce285d":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_74f83a41532e450fbaee170113bd2ac0","max":5,"min":0,"orientation":"horizontal","style":"IPY_MODEL_ac15ed9ca1404c5bb94feb4976fc26cd","value":5}},"58ae193430364fba8fa0e2cc8cb1310d":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_8ec81b39a1b5433493034b1c44c9129b","placeholder":"​","style":"IPY_MODEL_45dcc621c82f4c8c8be32767703d59ee","value":" 5/5 [42:18<00:00, 507.02s/it]"}},"c09205772dac4398a37cff41d519581c":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"9e8668c476734fc1a202339437d31afc":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"78603cda90bb4199b9e57bdb332f41ff":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"74f83a41532e450fbaee170113bd2ac0":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ac15ed9ca1404c5bb94feb4976fc26cd":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"8ec81b39a1b5433493034b1c44c9129b":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"45dcc621c82f4c8c8be32767703d59ee":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"21abb49c87ad4248b8fc84399273a91d":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_29abf09204aa40c78be582ebe640755a","IPY_MODEL_da9d5b12a4ad46d5b4b0d190d6f50dca","IPY_MODEL_6afcd558a7584cba93be744438286c22"],"layout":"IPY_MODEL_4930550d8b0d4ebb92f0ee37e16c7276"}},"29abf09204aa40c78be582ebe640755a":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_da6f360a1d104538ab47c094f914de0c","placeholder":"​","style":"IPY_MODEL_516c5e7b877f40fdacc4e78103170ff2","value":"100%"}},"da9d5b12a4ad46d5b4b0d190d6f50dca":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_88e106c1211e40bdb9558d6400c1145c","max":150,"min":0,"orientation":"horizontal","style":"IPY_MODEL_19965f5e676e47de9dbd3b5529e69a42","value":150}},"6afcd558a7584cba93be744438286c22":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_ebbcffb6ec1b4ebfb260e174967155dd","placeholder":"​","style":"IPY_MODEL_dd4f5857e44a433fa8bb8914231b8404","value":" 150/150 [00:25<00:00,  4.58it/s]"}},"4930550d8b0d4ebb92f0ee37e16c7276":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"da6f360a1d104538ab47c094f914de0c":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"516c5e7b877f40fdacc4e78103170ff2":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"88e106c1211e40bdb9558d6400c1145c":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"19965f5e676e47de9dbd3b5529e69a42":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"ebbcffb6ec1b4ebfb260e174967155dd":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"dd4f5857e44a433fa8bb8914231b8404":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"9a06aaa3b7764406b945c4e88a6de5cd":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_d5fd449083ff493daa23fdfa4a7068bb","IPY_MODEL_340ee3acbad9469b9a739a79c3b88389","IPY_MODEL_f07ab56bda8f483fada22923f9fdb064"],"layout":"IPY_MODEL_ce4f8e14852d4b3d8a39219dfe2762ce"}},"d5fd449083ff493daa23fdfa4a7068bb":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_e54172f506204a91865b2f91659b6d17","placeholder":"​","style":"IPY_MODEL_a378a866b761404d99312f9d9219c8e4","value":"100%"}},"340ee3acbad9469b9a739a79c3b88389":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_5468f74c8b7b48238b8e484f46f33fa1","max":150,"min":0,"orientation":"horizontal","style":"IPY_MODEL_8771f445c691409fb74bfce50560ed22","value":150}},"f07ab56bda8f483fada22923f9fdb064":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_ada0165a101747a89494098100e20b29","placeholder":"​","style":"IPY_MODEL_4feb730a00b1428592881e762a2c1a1c","value":" 150/150 [02:20<00:00,  1.00s/it]"}},"ce4f8e14852d4b3d8a39219dfe2762ce":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"e54172f506204a91865b2f91659b6d17":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a378a866b761404d99312f9d9219c8e4":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"5468f74c8b7b48238b8e484f46f33fa1":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"8771f445c691409fb74bfce50560ed22":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"ada0165a101747a89494098100e20b29":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"4feb730a00b1428592881e762a2c1a1c":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}}}}},"nbformat":4,"nbformat_minor":0} \ No newline at end of file