{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tensor(0.8943)\n" ] } ], "source": [ "import torch\n", "import torch.nn as nn\n", "import torch.nn.functional as F\n", "\n", "# 假設有3個類別\n", "num_classes = 3\n", "batch_size = 4\n", "\n", "# 模擬模型輸出 (未經softmax)\n", "# 輸出形狀應為 [batch_size, num_classes]\n", "predictions = torch.randn(batch_size, num_classes)\n", "\n", "# 模擬真實標籤,假設為one-hot編碼\n", "# 形狀為 [batch_size, num_classes]\n", "targets_one_hot = torch.tensor([\n", " [1, 0, 0],\n", " [0, 1, 0],\n", " [0, 0, 1],\n", " [0, 1, 0]\n", "], dtype=torch.float32)\n", "\n", "# 將one-hot編碼的標籤轉換為類別索引\n", "# 形狀為 [batch_size]\n", "targets = torch.argmax(targets_one_hot, dim=1)\n", "\n", "# 定義損失函數\n", "criterion = nn.CrossEntropyLoss()\n", "\n", "# 計算損失\n", "loss = criterion(predictions, targets)\n", "print(loss)\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "tensor([[-0.2698, 0.7174, -0.2358],\n", " [ 1.4976, -1.1554, 3.3826],\n", " [-0.8067, 1.1254, 1.9788],\n", " [ 1.3467, 0.7573, -1.5764]])" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "predictions" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "tensor([0, 1, 2, 1])" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "targets" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " at 0x7fd0786385f0>\n" ] } ], "source": [ "print(x for x in range(1, 76))" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "import torch\n", "import torch.nn as nn\n", "import torch.optim as optim\n", "import torchvision.transforms as transforms\n", "from torchvision import models\n", "import timm\n", "\n", "\n", "class ModifiedXception(nn.Module):\n", " def __init__(self, num_classes):\n", " super(ModifiedXception, self).__init__()\n", " \n", " # 加載 Xception 預訓練模型,去掉最後一層 (fc 層)\n", " self.base_model = timm.create_model(\n", " 'xception', \n", " pretrained=True, \n", " features_only=True, # 只保留特徵提取部分\n", " out_indices=[3] # 選擇特徵層索引(根據模型結構)\n", " )\n", " \n", " # 自定義分類頭\n", " self.custom_head = nn.Sequential(\n", " nn.AdaptiveAvgPool2d(1), # Global Average Pooling,\n", " nn.Flatten(),\n", " nn.Linear(728, 368), # Xception 輸出特徵維度為2048\n", " nn.ReLU(), # 可選激活函數\n", " nn.Linear(368, num_classes),\n", " nn.Sigmoid()\n", " )\n", "\n", " # self.base_model.fc = nn.Identity() # 移除原來的 fully connected 層\n", " \n", " # # 新增全局平均池化層、隱藏層和輸出層\n", " # self.global_avg_pool = nn.AdaptiveAvgPool2d(1) # 全局平均池化\n", " # self.hidden_layer = nn.Linear(2048, 1370) # 隱藏層,輸入大小取決於 Xception 的輸出大小\n", " # self.output_layer = nn.Linear(1370, 2) # 輸出層,依據分類數目設定\n", " \n", " # # 激活函數與 dropout\n", " # self.relu = nn.ReLU()\n", " # self.dropout = nn.Dropout(0.6)\n", "\n", " def forward(self, x):\n", " x = self.base_model(x) # Xception 主體\n", " return x\n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/opt/conda/lib/python3.11/site-packages/timm/models/_factory.py:126: UserWarning: Mapping deprecated model name xception to current legacy_xception.\n", " model = create_fn(\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'num_chs': 64, 'reduction': 2, 'module': 'act2', 'index': 0}\n", "{'num_chs': 128, 'reduction': 4, 'module': 'block2.rep.0', 'index': 1}\n", "{'num_chs': 256, 'reduction': 8, 'module': 'block3.rep.0', 'index': 2}\n", "{'num_chs': 728, 'reduction': 16, 'module': 'block12.rep.0', 'index': 3}\n", "{'num_chs': 2048, 'reduction': 32, 'module': 'act4', 'index': 4}\n" ] } ], "source": [ "def construct_model():\n", " '''決定我這次訓練要用哪個model'''\n", " cnn_model = ModifiedXception(3)\n", "\n", " if torch.cuda.device_count() > 1:\n", " cnn_model = nn.DataParallel(cnn_model)\n", "\n", " cnn_model = cnn_model.to(torch.device('cuda' if torch.cuda.is_available() else 'cpu'))\n", " return cnn_model\n", "\n", "model = construct_model()\n", "a = model.base_model.feature_info\n", "\n", "for b in a:\n", " print(b)\n", "\n", "# last = a[-1]\n", "# last_conv_name = last['module'] # 這通常是 PyTorch Module 的名稱\n", "\n", "# last_layer = dict(model.base_model.named_modules()).get(last_conv_name)\n", "# print(f\"最後的卷積層: {last_layer}\")\n", "\n", "# print(last_conv_name)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " ModifiedXception(\n", " (base_model): FeatureHookNet(\n", " (body): Xception(\n", " (conv1): Conv2d(3, 32, kernel_size=(3, 3), stride=(2, 2), bias=False)\n", " (bn1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (act1): ReLU(inplace=True)\n", " (conv2): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (act2): ReLU(inplace=True)\n", " (block1): Block(\n", " (skip): Conv2d(64, 128, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (skipbn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (rep): Sequential(\n", " (0): SeparableConv2d(\n", " (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=64, bias=False)\n", " (pointwise): Conv2d(64, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (2): ReLU(inplace=True)\n", " (3): SeparableConv2d(\n", " (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128, bias=False)\n", " (pointwise): Conv2d(128, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (4): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (5): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " )\n", " )\n", " (block2): Block(\n", " (skip): Conv2d(128, 256, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (skipbn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128, bias=False)\n", " (pointwise): Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256, bias=False)\n", " (pointwise): Conv2d(256, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " )\n", " )\n", " (block3): Block(\n", " (skip): Conv2d(256, 728, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (skipbn): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256, bias=False)\n", " (pointwise): Conv2d(256, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " )\n", " )\n", " (block4): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block5): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block6): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block7): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block8): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block9): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block10): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block11): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block12): Block(\n", " (skip): Conv2d(728, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (skipbn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " )\n", " )\n", " (conv3): SeparableConv2d(\n", " (conv1): Conv2d(1024, 1024, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=1024, bias=False)\n", " (pointwise): Conv2d(1024, 1536, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (bn3): BatchNorm2d(1536, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (act3): ReLU(inplace=True)\n", " (conv4): SeparableConv2d(\n", " (conv1): Conv2d(1536, 1536, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=1536, bias=False)\n", " (pointwise): Conv2d(1536, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (bn4): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (act4): ReLU(inplace=True)\n", " (global_pool): SelectAdaptivePool2d(pool_type=avg, flatten=Flatten(start_dim=1, end_dim=-1))\n", " (fc): Identity()\n", " )\n", " )\n", " (custom_head): Sequential(\n", " (0): AdaptiveAvgPool2d(output_size=1)\n", " (1): Flatten(start_dim=1, end_dim=-1)\n", " (2): Linear(in_features=728, out_features=368, bias=True)\n", " (3): ReLU()\n", " (4): Linear(in_features=368, out_features=3, bias=True)\n", " (5): Sigmoid()\n", " )\n", ")\n", "base_model FeatureHookNet(\n", " (body): Xception(\n", " (conv1): Conv2d(3, 32, kernel_size=(3, 3), stride=(2, 2), bias=False)\n", " (bn1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (act1): ReLU(inplace=True)\n", " (conv2): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (act2): ReLU(inplace=True)\n", " (block1): Block(\n", " (skip): Conv2d(64, 128, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (skipbn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (rep): Sequential(\n", " (0): SeparableConv2d(\n", " (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=64, bias=False)\n", " (pointwise): Conv2d(64, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (2): ReLU(inplace=True)\n", " (3): SeparableConv2d(\n", " (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128, bias=False)\n", " (pointwise): Conv2d(128, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (4): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (5): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " )\n", " )\n", " (block2): Block(\n", " (skip): Conv2d(128, 256, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (skipbn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128, bias=False)\n", " (pointwise): Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256, bias=False)\n", " (pointwise): Conv2d(256, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " )\n", " )\n", " (block3): Block(\n", " (skip): Conv2d(256, 728, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (skipbn): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256, bias=False)\n", " (pointwise): Conv2d(256, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " )\n", " )\n", " (block4): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block5): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block6): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block7): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block8): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block9): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block10): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block11): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block12): Block(\n", " (skip): Conv2d(728, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (skipbn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " )\n", " )\n", " (conv3): SeparableConv2d(\n", " (conv1): Conv2d(1024, 1024, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=1024, bias=False)\n", " (pointwise): Conv2d(1024, 1536, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (bn3): BatchNorm2d(1536, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (act3): ReLU(inplace=True)\n", " (conv4): SeparableConv2d(\n", " (conv1): Conv2d(1536, 1536, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=1536, bias=False)\n", " (pointwise): Conv2d(1536, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (bn4): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (act4): ReLU(inplace=True)\n", " (global_pool): SelectAdaptivePool2d(pool_type=avg, flatten=Flatten(start_dim=1, end_dim=-1))\n", " (fc): Identity()\n", " )\n", ")\n", "base_model.body Xception(\n", " (conv1): Conv2d(3, 32, kernel_size=(3, 3), stride=(2, 2), bias=False)\n", " (bn1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (act1): ReLU(inplace=True)\n", " (conv2): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), bias=False)\n", " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (act2): ReLU(inplace=True)\n", " (block1): Block(\n", " (skip): Conv2d(64, 128, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (skipbn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (rep): Sequential(\n", " (0): SeparableConv2d(\n", " (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=64, bias=False)\n", " (pointwise): Conv2d(64, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (2): ReLU(inplace=True)\n", " (3): SeparableConv2d(\n", " (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128, bias=False)\n", " (pointwise): Conv2d(128, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (4): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (5): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " )\n", " )\n", " (block2): Block(\n", " (skip): Conv2d(128, 256, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (skipbn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128, bias=False)\n", " (pointwise): Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256, bias=False)\n", " (pointwise): Conv2d(256, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " )\n", " )\n", " (block3): Block(\n", " (skip): Conv2d(256, 728, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (skipbn): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256, bias=False)\n", " (pointwise): Conv2d(256, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " )\n", " )\n", " (block4): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block5): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block6): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block7): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block8): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block9): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block10): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block11): Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", " )\n", " (block12): Block(\n", " (skip): Conv2d(728, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (skipbn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " )\n", " )\n", " (conv3): SeparableConv2d(\n", " (conv1): Conv2d(1024, 1024, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=1024, bias=False)\n", " (pointwise): Conv2d(1024, 1536, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (bn3): BatchNorm2d(1536, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (act3): ReLU(inplace=True)\n", " (conv4): SeparableConv2d(\n", " (conv1): Conv2d(1536, 1536, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=1536, bias=False)\n", " (pointwise): Conv2d(1536, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (bn4): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (act4): ReLU(inplace=True)\n", " (global_pool): SelectAdaptivePool2d(pool_type=avg, flatten=Flatten(start_dim=1, end_dim=-1))\n", " (fc): Identity()\n", ")\n", "base_model.body.conv1 Conv2d(3, 32, kernel_size=(3, 3), stride=(2, 2), bias=False)\n", "base_model.body.bn1 BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.act1 ReLU(inplace=True)\n", "base_model.body.conv2 Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), bias=False)\n", "base_model.body.bn2 BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.act2 ReLU(inplace=True)\n", "base_model.body.block1 Block(\n", " (skip): Conv2d(64, 128, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (skipbn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (rep): Sequential(\n", " (0): SeparableConv2d(\n", " (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=64, bias=False)\n", " (pointwise): Conv2d(64, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (2): ReLU(inplace=True)\n", " (3): SeparableConv2d(\n", " (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128, bias=False)\n", " (pointwise): Conv2d(128, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (4): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (5): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " )\n", ")\n", "base_model.body.block1.skip Conv2d(64, 128, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", "base_model.body.block1.skipbn BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block1.rep Sequential(\n", " (0): SeparableConv2d(\n", " (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=64, bias=False)\n", " (pointwise): Conv2d(64, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (2): ReLU(inplace=True)\n", " (3): SeparableConv2d(\n", " (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128, bias=False)\n", " (pointwise): Conv2d(128, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (4): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (5): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", ")\n", "base_model.body.block1.rep.0 SeparableConv2d(\n", " (conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=64, bias=False)\n", " (pointwise): Conv2d(64, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block1.rep.0.conv1 Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=64, bias=False)\n", "base_model.body.block1.rep.0.pointwise Conv2d(64, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block1.rep.1 BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block1.rep.2 ReLU(inplace=True)\n", "base_model.body.block1.rep.3 SeparableConv2d(\n", " (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128, bias=False)\n", " (pointwise): Conv2d(128, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block1.rep.3.conv1 Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128, bias=False)\n", "base_model.body.block1.rep.3.pointwise Conv2d(128, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block1.rep.4 BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block1.rep.5 MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", "base_model.body.block2 Block(\n", " (skip): Conv2d(128, 256, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (skipbn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128, bias=False)\n", " (pointwise): Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256, bias=False)\n", " (pointwise): Conv2d(256, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " )\n", ")\n", "base_model.body.block2.skip Conv2d(128, 256, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", "base_model.body.block2.skipbn BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block2.rep Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128, bias=False)\n", " (pointwise): Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256, bias=False)\n", " (pointwise): Conv2d(256, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", ")\n", "base_model.body.block2.rep.0 ReLU()\n", "base_model.body.block2.rep.1 SeparableConv2d(\n", " (conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128, bias=False)\n", " (pointwise): Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block2.rep.1.conv1 Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=128, bias=False)\n", "base_model.body.block2.rep.1.pointwise Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block2.rep.2 BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block2.rep.3 ReLU(inplace=True)\n", "base_model.body.block2.rep.4 SeparableConv2d(\n", " (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256, bias=False)\n", " (pointwise): Conv2d(256, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block2.rep.4.conv1 Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256, bias=False)\n", "base_model.body.block2.rep.4.pointwise Conv2d(256, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block2.rep.5 BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block2.rep.6 MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", "base_model.body.block3 Block(\n", " (skip): Conv2d(256, 728, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (skipbn): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256, bias=False)\n", " (pointwise): Conv2d(256, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " )\n", ")\n", "base_model.body.block3.skip Conv2d(256, 728, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", "base_model.body.block3.skipbn BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block3.rep Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256, bias=False)\n", " (pointwise): Conv2d(256, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", ")\n", "base_model.body.block3.rep.0 ReLU()\n", "base_model.body.block3.rep.1 SeparableConv2d(\n", " (conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256, bias=False)\n", " (pointwise): Conv2d(256, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block3.rep.1.conv1 Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=256, bias=False)\n", "base_model.body.block3.rep.1.pointwise Conv2d(256, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block3.rep.2 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block3.rep.3 ReLU(inplace=True)\n", "base_model.body.block3.rep.4 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block3.rep.4.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block3.rep.4.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block3.rep.5 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block3.rep.6 MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", "base_model.body.block4 Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", ")\n", "base_model.body.block4.rep Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", ")\n", "base_model.body.block4.rep.0 ReLU()\n", "base_model.body.block4.rep.1 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block4.rep.1.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block4.rep.1.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block4.rep.2 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block4.rep.3 ReLU(inplace=True)\n", "base_model.body.block4.rep.4 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block4.rep.4.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block4.rep.4.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block4.rep.5 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block4.rep.6 ReLU(inplace=True)\n", "base_model.body.block4.rep.7 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block4.rep.7.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block4.rep.7.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block4.rep.8 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block5 Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", ")\n", "base_model.body.block5.rep Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", ")\n", "base_model.body.block5.rep.0 ReLU()\n", "base_model.body.block5.rep.1 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block5.rep.1.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block5.rep.1.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block5.rep.2 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block5.rep.3 ReLU(inplace=True)\n", "base_model.body.block5.rep.4 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block5.rep.4.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block5.rep.4.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block5.rep.5 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block5.rep.6 ReLU(inplace=True)\n", "base_model.body.block5.rep.7 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block5.rep.7.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block5.rep.7.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block5.rep.8 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block6 Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", ")\n", "base_model.body.block6.rep Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", ")\n", "base_model.body.block6.rep.0 ReLU()\n", "base_model.body.block6.rep.1 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block6.rep.1.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block6.rep.1.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block6.rep.2 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block6.rep.3 ReLU(inplace=True)\n", "base_model.body.block6.rep.4 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block6.rep.4.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block6.rep.4.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block6.rep.5 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block6.rep.6 ReLU(inplace=True)\n", "base_model.body.block6.rep.7 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block6.rep.7.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block6.rep.7.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block6.rep.8 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block7 Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", ")\n", "base_model.body.block7.rep Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", ")\n", "base_model.body.block7.rep.0 ReLU()\n", "base_model.body.block7.rep.1 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block7.rep.1.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block7.rep.1.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block7.rep.2 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block7.rep.3 ReLU(inplace=True)\n", "base_model.body.block7.rep.4 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block7.rep.4.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block7.rep.4.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block7.rep.5 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block7.rep.6 ReLU(inplace=True)\n", "base_model.body.block7.rep.7 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block7.rep.7.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block7.rep.7.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block7.rep.8 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block8 Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", ")\n", "base_model.body.block8.rep Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", ")\n", "base_model.body.block8.rep.0 ReLU()\n", "base_model.body.block8.rep.1 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block8.rep.1.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block8.rep.1.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block8.rep.2 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block8.rep.3 ReLU(inplace=True)\n", "base_model.body.block8.rep.4 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block8.rep.4.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block8.rep.4.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block8.rep.5 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block8.rep.6 ReLU(inplace=True)\n", "base_model.body.block8.rep.7 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block8.rep.7.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block8.rep.7.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block8.rep.8 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block9 Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", ")\n", "base_model.body.block9.rep Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", ")\n", "base_model.body.block9.rep.0 ReLU()\n", "base_model.body.block9.rep.1 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block9.rep.1.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block9.rep.1.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block9.rep.2 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block9.rep.3 ReLU(inplace=True)\n", "base_model.body.block9.rep.4 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block9.rep.4.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block9.rep.4.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block9.rep.5 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block9.rep.6 ReLU(inplace=True)\n", "base_model.body.block9.rep.7 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block9.rep.7.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block9.rep.7.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block9.rep.8 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block10 Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", ")\n", "base_model.body.block10.rep Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", ")\n", "base_model.body.block10.rep.0 ReLU()\n", "base_model.body.block10.rep.1 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block10.rep.1.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block10.rep.1.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block10.rep.2 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block10.rep.3 ReLU(inplace=True)\n", "base_model.body.block10.rep.4 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block10.rep.4.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block10.rep.4.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block10.rep.5 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block10.rep.6 ReLU(inplace=True)\n", "base_model.body.block10.rep.7 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block10.rep.7.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block10.rep.7.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block10.rep.8 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block11 Block(\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " )\n", ")\n", "base_model.body.block11.rep Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): ReLU(inplace=True)\n", " (7): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (8): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", ")\n", "base_model.body.block11.rep.0 ReLU()\n", "base_model.body.block11.rep.1 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block11.rep.1.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block11.rep.1.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block11.rep.2 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block11.rep.3 ReLU(inplace=True)\n", "base_model.body.block11.rep.4 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block11.rep.4.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block11.rep.4.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block11.rep.5 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block11.rep.6 ReLU(inplace=True)\n", "base_model.body.block11.rep.7 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block11.rep.7.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block11.rep.7.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block11.rep.8 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block12 Block(\n", " (skip): Conv2d(728, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", " (skipbn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (rep): Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", " )\n", ")\n", "base_model.body.block12.skip Conv2d(728, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", "base_model.body.block12.skipbn BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block12.rep Sequential(\n", " (0): ReLU()\n", " (1): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (2): BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (3): ReLU(inplace=True)\n", " (4): SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", " )\n", " (5): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (6): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", ")\n", "base_model.body.block12.rep.0 ReLU()\n", "base_model.body.block12.rep.1 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block12.rep.1.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block12.rep.1.pointwise Conv2d(728, 728, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block12.rep.2 BatchNorm2d(728, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block12.rep.3 ReLU(inplace=True)\n", "base_model.body.block12.rep.4 SeparableConv2d(\n", " (conv1): Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", " (pointwise): Conv2d(728, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.block12.rep.4.conv1 Conv2d(728, 728, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=728, bias=False)\n", "base_model.body.block12.rep.4.pointwise Conv2d(728, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.block12.rep.5 BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.block12.rep.6 MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", "base_model.body.conv3 SeparableConv2d(\n", " (conv1): Conv2d(1024, 1024, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=1024, bias=False)\n", " (pointwise): Conv2d(1024, 1536, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.conv3.conv1 Conv2d(1024, 1024, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=1024, bias=False)\n", "base_model.body.conv3.pointwise Conv2d(1024, 1536, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.bn3 BatchNorm2d(1536, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.act3 ReLU(inplace=True)\n", "base_model.body.conv4 SeparableConv2d(\n", " (conv1): Conv2d(1536, 1536, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=1536, bias=False)\n", " (pointwise): Conv2d(1536, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", ")\n", "base_model.body.conv4.conv1 Conv2d(1536, 1536, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=1536, bias=False)\n", "base_model.body.conv4.pointwise Conv2d(1536, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", "base_model.body.bn4 BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", "base_model.body.act4 ReLU(inplace=True)\n", "base_model.body.global_pool SelectAdaptivePool2d(pool_type=avg, flatten=Flatten(start_dim=1, end_dim=-1))\n", "base_model.body.global_pool.pool AdaptiveAvgPool2d(output_size=1)\n", "base_model.body.global_pool.flatten Flatten(start_dim=1, end_dim=-1)\n", "base_model.body.fc Identity()\n", "custom_head Sequential(\n", " (0): AdaptiveAvgPool2d(output_size=1)\n", " (1): Flatten(start_dim=1, end_dim=-1)\n", " (2): Linear(in_features=728, out_features=368, bias=True)\n", " (3): ReLU()\n", " (4): Linear(in_features=368, out_features=3, bias=True)\n", " (5): Sigmoid()\n", ")\n", "custom_head.0 AdaptiveAvgPool2d(output_size=1)\n", "custom_head.1 Flatten(start_dim=1, end_dim=-1)\n", "custom_head.2 Linear(in_features=728, out_features=368, bias=True)\n", "custom_head.3 ReLU()\n", "custom_head.4 Linear(in_features=368, out_features=3, bias=True)\n", "custom_head.5 Sigmoid()\n" ] } ], "source": [ "for c in model.named_modules():\n", " print(c)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Conv2d(1536, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.base_model.body.conv4.pointwise" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[(array([0, 2, 3, 4, 5, 6]), array([1, 7])), (array([0, 1, 2, 4, 5, 7]), array([3, 6])), (array([0, 1, 3, 4, 6, 7]), array([2, 5])), (array([0, 1, 2, 3, 5, 6, 7]), array([4])), (array([1, 2, 3, 4, 5, 6, 7]), array([0]))]\n", "0 [0 2 3 4 5 6] [1 7]\n", "1 [0 1 3 4 6 7] [2 5]\n", "2 [1 2 4 5 6 7] [0 3]\n", "3 [0 1 2 3 5 6 7] [4]\n", "4 [0 1 2 3 4 5 7] [6]\n" ] } ], "source": [ "from sklearn.model_selection import KFold\n", "\n", "k = KFold(n_splits = 5, shuffle = True)\n", "a = [1, 2, 3, 4 ,5, 6,7, 8]\n", "\n", "for d, (b, c) in enumerate(k.split(a)):\n", " print(d, b, c)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from torch.utils.data import Subset, DataLoader, Dataset\n", "\n", "class ListDataset(Dataset):\n", " def __init__(self, data_list, labels_list, status):\n", " self.data = data_list\n", " self.labels = labels_list\n", " self.status = status\n", "\n", " def __len__(self):\n", " return len(self.data)\n", "\n", " def __getitem__(self, idx):\n", " sample = self.data[idx] \n", "\n", " if self.status:\n", " from Image_Process.Image_Generator import Image_generator\n", " ImageGenerator = Image_generator(\"\", \"\", 12)\n", " Transform = ImageGenerator.Generator_Content(5)\n", " sample = Transform(sample)\n", "\n", " label = self.labels[idx]\n", " return sample, label\n", "\n", "k = KFold(n_splits = 5, shuffle = True)\n", "a = [1, 2, 3, 4 ,5, 6,7, 8]\n", "label = [10, 20, 30, 40, 50,60, 70, 80]\n", "\n", "f = ListDataset(a, label, True)\n", "\n", "for d, (b, c) in enumerate(k.split(a)):\n", " # Create training and validation subsets for this fold\n", " train_subset = torch.utils.data.Subset(training_dataset, train_idx)\n", " val_subset = torch.utils.data.Subset(training_dataset, val_idx)\n", "\n" ] } ], "metadata": { "kernelspec": { "display_name": "base", "language": "python", "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.11" } }, "nbformat": 4, "nbformat_minor": 2 }