Files changed (1) hide show
  1. vgg16.py +0 -72
vgg16.py DELETED
@@ -1,72 +0,0 @@
1
- import torch.nn as nn
2
- import torchvision.models as models
3
-
4
- """ VGG_16 Architecture
5
- VGG(
6
- (features): Sequential(
7
- (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
8
- (1): ReLU(inplace=True)
9
- (2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
10
- (3): ReLU(inplace=True)
11
- (4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
12
- (5): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
13
- (6): ReLU(inplace=True)
14
- (7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
15
- (8): ReLU(inplace=True)
16
- (9): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
17
- (10): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
18
- (11): ReLU(inplace=True)
19
- (12): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
20
- (13): ReLU(inplace=True)
21
- (14): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
22
- (15): ReLU(inplace=True)
23
- (16): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
24
- (17): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
25
- (18): ReLU(inplace=True)
26
- (19): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
27
- (20): ReLU(inplace=True)
28
- (21): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
29
- (22): ReLU(inplace=True)
30
- (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
31
- (24): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
32
- (25): ReLU(inplace=True)
33
- (26): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
34
- (27): ReLU(inplace=True)
35
- (28): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
36
- (29): ReLU(inplace=True)
37
- (30): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
38
- )
39
- (avgpool): AdaptiveAvgPool2d(output_size=(7, 7))
40
- (classifier): Sequential(
41
- (0): Linear(in_features=25088, out_features=4096, bias=True)
42
- (1): ReLU(inplace=True)
43
- (2): Dropout(p=0.5, inplace=False)
44
- (3): Linear(in_features=4096, out_features=4096, bias=True)
45
- (4): ReLU(inplace=True)
46
- (5): Dropout(p=0.5, inplace=False)
47
- (6): Linear(in_features=4096, out_features=1000, bias=True)
48
- )
49
- )
50
- """
51
-
52
- class VGG_16(nn.Module):
53
- def __init__(self):
54
- super(VGG_16, self).__init__()
55
- self.model = models.vgg16(weights=models.VGG16_Weights.IMAGENET1K_V1).features[:30]
56
-
57
- for i, _ in enumerate(self.model):
58
- if i in [4, 9, 16, 23]:
59
- self.model[i] = nn.AvgPool2d(kernel_size=2, stride=2, padding=0)
60
-
61
- def forward(self, x):
62
- features = []
63
- for i, layer in enumerate(self.model):
64
- x = layer(x)
65
- if i in [0, 5, 10, 17, 24]:
66
- features.append(x)
67
- return features
68
-
69
-
70
- if __name__ == '__main__':
71
- model = VGG_16()
72
- print(model)