# Codeblock 7a class ZF5_SPPNet(nn.Module): def __init__(self): super().__init__() self.relu = nn.ReLU() self.conv1 = nn.Conv2d(in_channels=3, out_channels=96, kernel_size=7, stride=2, padding=0) #(1) self.norm1 = nn.LocalResponseNorm(size=5) self.pool1 = nn.MaxPool2d(kernel_size=3, stride=2, padding=1) #(2) self.conv2 = nn.Conv2d(in_channels=96, out_channels=256, kernel_size=5, stride=2, padding=1) #(3) self.norm2 = nn.LocalResponseNorm(size=5) self.pool2 = nn.MaxPool2d(kernel_size=3, stride=2, padding=0) #(4) self.conv3 = nn.Conv2d(in_channels=256, out_channels=384, kernel_size=3, stride=1, padding=1) self.conv4 = nn.Conv2d(in_channels=384, out_channels=384, kernel_size=3, stride=1, padding=1) self.conv5 = nn.Conv2d(in_channels=384, out_channels=256, kernel_size=3, stride=1, padding=1) self.spp = SPP() #(4) spp_out_size = 256 * sum([grid**2 for grid in GRIDS]) #(5) self.fc6 = nn.Linear(in_features=spp_out_size, out_features=4096) self.dropout6 = nn.Dropout(p=0.5) #(6) self.fc7 = nn.Linear(in_features=4096, out_features=4096) self.dropout7 = nn.Dropout(p=0.5) #(7) self.fc8 = nn.Linear(in_features=4096, out_features=1000)