[ADD] first prune atempts
This commit is contained in:
parent
b423e24ce3
commit
5b7578af22
180
Pruning_LeNet.ipynb
Normal file
180
Pruning_LeNet.ipynb
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import torch.nn as nn"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 5,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import torch\n",
|
||||||
|
"import torchvision"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 8,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import torch.functional as F"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 6,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 9,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"class LeNet(nn.Module):\n",
|
||||||
|
" def __init__(self):\n",
|
||||||
|
" super(LeNet, self).__init__()\n",
|
||||||
|
" # 1 input image channel, 6 output channels, 3x3 square conv kernel\n",
|
||||||
|
" self.conv1 = nn.Conv2d(1, 6, 3)\n",
|
||||||
|
" self.conv2 = nn.Conv2d(6, 16, 3)\n",
|
||||||
|
" self.fc1 = nn.Linear(16 * 5 * 5, 120) # 5x5 image dimension\n",
|
||||||
|
" self.fc2 = nn.Linear(120, 84)\n",
|
||||||
|
" self.fc3 = nn.Linear(84, 10)\n",
|
||||||
|
" \n",
|
||||||
|
" def forward(self, x):\n",
|
||||||
|
" x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))\n",
|
||||||
|
" x = F.max_pool2d(F.relu(self.conv2(x)), 2)\n",
|
||||||
|
" x = x.view(-1, int(x.nelement() / x.shape[0]))\n",
|
||||||
|
" x = F.relu(self.fc1(x))\n",
|
||||||
|
" x = F.relu(self.fc2(x))\n",
|
||||||
|
" x = self.fc3(x)\n",
|
||||||
|
" return x"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 10,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"model = LeNet().to(device=device)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 11,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"[('weight', Parameter containing:\n",
|
||||||
|
"tensor([[[[ 0.0854, 0.1762, -0.0814],\n",
|
||||||
|
" [-0.0859, -0.2473, -0.3291],\n",
|
||||||
|
" [-0.2670, -0.0962, -0.2002]]],\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
" [[[-0.2353, 0.2884, -0.0267],\n",
|
||||||
|
" [-0.2879, 0.0165, -0.2282],\n",
|
||||||
|
" [-0.2628, -0.0222, 0.2331]]],\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
" [[[ 0.1070, 0.2683, 0.2301],\n",
|
||||||
|
" [ 0.1637, 0.2600, 0.1026],\n",
|
||||||
|
" [ 0.3013, -0.2336, 0.0121]]],\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
" [[[-0.2488, 0.2017, -0.1913],\n",
|
||||||
|
" [-0.0723, 0.0911, -0.2306],\n",
|
||||||
|
" [-0.0578, 0.3193, 0.1617]]],\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
" [[[-0.0321, 0.1383, 0.2564],\n",
|
||||||
|
" [-0.1842, -0.3065, 0.1342],\n",
|
||||||
|
" [ 0.0815, -0.0757, 0.2290]]],\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
" [[[ 0.1121, -0.2876, -0.1017],\n",
|
||||||
|
" [ 0.2958, 0.3092, -0.2187],\n",
|
||||||
|
" [ 0.3065, 0.1924, 0.2755]]]], device='cuda:0', requires_grad=True)), ('bias', Parameter containing:\n",
|
||||||
|
"tensor([-0.1582, -0.0629, -0.1216, -0.3196, 0.2949, 0.2759], device='cuda:0',\n",
|
||||||
|
" requires_grad=True))]\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"module = model.conv1\n",
|
||||||
|
"print(list(module.named_parameters()))"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 12,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"[]\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"print(list(module.named_buffers()))"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 14,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import torch.nn.utils.prune as prune"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"prune.random_unstructured"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Python 3",
|
||||||
|
"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.7.7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 4
|
||||||
|
}
|
282
Pruning_VGG16.ipynb
Normal file
282
Pruning_VGG16.ipynb
Normal file
@ -0,0 +1,282 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 2,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import torch\n",
|
||||||
|
"import torchvision\n",
|
||||||
|
"from torchvision import models"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 3,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stderr",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"Downloading: \"https://download.pytorch.org/models/vgg16-397923af.pth\" to /home/eddie/.cache/torch/checkpoints/vgg16-397923af.pth\n",
|
||||||
|
"100.0%\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"vgg16 = models.vgg16(pretrained=True)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 4,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"VGG(\n",
|
||||||
|
" (features): Sequential(\n",
|
||||||
|
" (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (1): ReLU(inplace=True)\n",
|
||||||
|
" (2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (3): ReLU(inplace=True)\n",
|
||||||
|
" (4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
|
||||||
|
" (5): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (6): ReLU(inplace=True)\n",
|
||||||
|
" (7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (8): ReLU(inplace=True)\n",
|
||||||
|
" (9): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
|
||||||
|
" (10): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (11): ReLU(inplace=True)\n",
|
||||||
|
" (12): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (13): ReLU(inplace=True)\n",
|
||||||
|
" (14): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (15): ReLU(inplace=True)\n",
|
||||||
|
" (16): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
|
||||||
|
" (17): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (18): ReLU(inplace=True)\n",
|
||||||
|
" (19): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (20): ReLU(inplace=True)\n",
|
||||||
|
" (21): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (22): ReLU(inplace=True)\n",
|
||||||
|
" (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
|
||||||
|
" (24): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (25): ReLU(inplace=True)\n",
|
||||||
|
" (26): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (27): ReLU(inplace=True)\n",
|
||||||
|
" (28): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (29): ReLU(inplace=True)\n",
|
||||||
|
" (30): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
|
||||||
|
" )\n",
|
||||||
|
" (avgpool): AdaptiveAvgPool2d(output_size=(7, 7))\n",
|
||||||
|
" (classifier): Sequential(\n",
|
||||||
|
" (0): Linear(in_features=25088, out_features=4096, bias=True)\n",
|
||||||
|
" (1): ReLU(inplace=True)\n",
|
||||||
|
" (2): Dropout(p=0.5, inplace=False)\n",
|
||||||
|
" (3): Linear(in_features=4096, out_features=4096, bias=True)\n",
|
||||||
|
" (4): ReLU(inplace=True)\n",
|
||||||
|
" (5): Dropout(p=0.5, inplace=False)\n",
|
||||||
|
" (6): Linear(in_features=4096, out_features=1000, bias=True)\n",
|
||||||
|
" )\n",
|
||||||
|
")\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"print(vgg16)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 8,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"odict_items([('0', Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))), ('1', ReLU(inplace=True)), ('2', Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))), ('3', ReLU(inplace=True)), ('4', MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)), ('5', Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))), ('6', ReLU(inplace=True)), ('7', Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))), ('8', ReLU(inplace=True)), ('9', MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)), ('10', Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))), ('11', ReLU(inplace=True)), ('12', Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))), ('13', ReLU(inplace=True)), ('14', Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))), ('15', ReLU(inplace=True)), ('16', MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)), ('17', Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))), ('18', ReLU(inplace=True)), ('19', Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))), ('20', ReLU(inplace=True)), ('21', Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))), ('22', ReLU(inplace=True)), ('23', MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)), ('24', Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))), ('25', ReLU(inplace=True)), ('26', Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))), ('27', ReLU(inplace=True)), ('28', Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))), ('29', ReLU(inplace=True)), ('30', MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False))])\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"print(vgg16.features._modules.items())"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 11,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"Layer: 0\n",
|
||||||
|
"Name: 0\n",
|
||||||
|
"Module: Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
"Layer: 2\n",
|
||||||
|
"Name: 2\n",
|
||||||
|
"Module: Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
"Layer: 5\n",
|
||||||
|
"Name: 5\n",
|
||||||
|
"Module: Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
"Layer: 7\n",
|
||||||
|
"Name: 7\n",
|
||||||
|
"Module: Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
"Layer: 10\n",
|
||||||
|
"Name: 10\n",
|
||||||
|
"Module: Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
"Layer: 12\n",
|
||||||
|
"Name: 12\n",
|
||||||
|
"Module: Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
"Layer: 14\n",
|
||||||
|
"Name: 14\n",
|
||||||
|
"Module: Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
"Layer: 17\n",
|
||||||
|
"Name: 17\n",
|
||||||
|
"Module: Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
"Layer: 19\n",
|
||||||
|
"Name: 19\n",
|
||||||
|
"Module: Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
"Layer: 21\n",
|
||||||
|
"Name: 21\n",
|
||||||
|
"Module: Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
"Layer: 24\n",
|
||||||
|
"Name: 24\n",
|
||||||
|
"Module: Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
"Layer: 26\n",
|
||||||
|
"Name: 26\n",
|
||||||
|
"Module: Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
"Layer: 28\n",
|
||||||
|
"Name: 28\n",
|
||||||
|
"Module: Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"for layer, (name, module) in enumerate(vgg16.features._modules.items()):\n",
|
||||||
|
" if isinstance(module, torch.nn.modules.conv.Conv2d):\n",
|
||||||
|
" print(\"Layer: {}\".format(layer))\n",
|
||||||
|
" print(\"Name: {}\".format(name))\n",
|
||||||
|
" print(\"Module: {}\".format(module))"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 12,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"<generator object Module.parameters at 0x7f99d03001d0>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 12,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"vgg16.features.parameters()"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 14,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"<bound method VGG.forward of VGG(\n",
|
||||||
|
" (features): Sequential(\n",
|
||||||
|
" (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (1): ReLU(inplace=True)\n",
|
||||||
|
" (2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (3): ReLU(inplace=True)\n",
|
||||||
|
" (4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
|
||||||
|
" (5): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (6): ReLU(inplace=True)\n",
|
||||||
|
" (7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (8): ReLU(inplace=True)\n",
|
||||||
|
" (9): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
|
||||||
|
" (10): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (11): ReLU(inplace=True)\n",
|
||||||
|
" (12): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (13): ReLU(inplace=True)\n",
|
||||||
|
" (14): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (15): ReLU(inplace=True)\n",
|
||||||
|
" (16): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
|
||||||
|
" (17): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (18): ReLU(inplace=True)\n",
|
||||||
|
" (19): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (20): ReLU(inplace=True)\n",
|
||||||
|
" (21): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (22): ReLU(inplace=True)\n",
|
||||||
|
" (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
|
||||||
|
" (24): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (25): ReLU(inplace=True)\n",
|
||||||
|
" (26): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (27): ReLU(inplace=True)\n",
|
||||||
|
" (28): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
|
||||||
|
" (29): ReLU(inplace=True)\n",
|
||||||
|
" (30): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
|
||||||
|
" )\n",
|
||||||
|
" (avgpool): AdaptiveAvgPool2d(output_size=(7, 7))\n",
|
||||||
|
" (classifier): Sequential(\n",
|
||||||
|
" (0): Linear(in_features=25088, out_features=4096, bias=True)\n",
|
||||||
|
" (1): ReLU(inplace=True)\n",
|
||||||
|
" (2): Dropout(p=0.5, inplace=False)\n",
|
||||||
|
" (3): Linear(in_features=4096, out_features=4096, bias=True)\n",
|
||||||
|
" (4): ReLU(inplace=True)\n",
|
||||||
|
" (5): Dropout(p=0.5, inplace=False)\n",
|
||||||
|
" (6): Linear(in_features=4096, out_features=1000, bias=True)\n",
|
||||||
|
" )\n",
|
||||||
|
")>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 14,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"vgg16.forward"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Python 3",
|
||||||
|
"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.7.7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 4
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user