import paddle
import paddle.nn as nn
from paddle.vision.models import vgg16, resnet50
import os
class Resnet(nn.Layer):
def __init__(self):
super(Resnet, self).__init__()
self.net = resnet50(pretrained=True)
self.layer0 = nn.Sequential(
self.net.conv1,
self.net.bn1,
self.net.relu,
self.net.maxpool,
)
self.layer1 = self.net.layer1
self.layer2 = self.net.layer2
self.layer3 = self.net.layer3
self.layer4 = self.net.layer4
def forward(self, x):
C0 = self.layer0(x)
C1 = self.layer1(C0)
C2 = self.layer2(C1)
C3 = self.layer3(C2)
C4 = self.layer4(C3)
return C0, C1, C2, C3, C4
class VGG16(nn.Layer):
def __init__(self):
super(VGG16, self).__init__()
net = vgg16(pretrained=True)
self.stage1 = nn.Sequential(*[net.features[layer] for layer in range(0, 5)])
self.stage2 = nn.Sequential(*[net.features[layer] for layer in range(5, 10)])
self.stage3 = nn.Sequential(*[net.features[layer] for layer in range(10, 17)])
self.stage4 = nn.Sequential(*[net.features[layer] for layer in range(17, 24)])
self.stage5 = nn.Sequential(*[net.features[layer] for layer in range(24, 31)])
def forward(self, x):
C1 = self.stage1(x)
C2 = self.stage2(C1)
C3 = self.stage3(C2)
C4 = self.stage4(C3)
C5 = self.stage5(C4)
return C1, C2, C3, C4, C5