import torch.nn as nn

class MyCNN(nn.Module):
    def __init__(self):
        super(MyCNN, self).__init__()
        
        self.conv1 = nn.Conv2d(3, 96, kernel_size=11, stride=4, padding=2)
        self.relu1 = nn.ReLU(inplace=True)
        self.pool1 = nn.MaxPool2d(kernel_size=3, stride=2)
        
        self.conv2 = nn.Conv2d(96, 256, kernel_size=5, stride=1, padding=2)
        self.relu2 = nn.ReLU(inplace=True)
        self.pool2 = nn.MaxPool2d(kernel_size=3, stride=2)
        
        self.conv3 = nn.Conv2d(256, 384, kernel_size=3, stride=1, padding=1)
        self.relu3 = nn.ReLU(inplace=True)
        
        self.conv4 = nn.Conv2d(384, 384, kernel_size=3, stride=1, padding=1)
        self.relu4 = nn.ReLU(inplace=True)
        
        self.conv5 = nn.Conv2d(384, 256, kernel_size=3, stride=1, padding=1)
        self.relu5 = nn.ReLU(inplace=True)
        self.pool3 = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)
        
        self.fc1 = nn.Linear(6*6*256, 4096)
        self.relu6 = nn.ReLU(inplace=True)
        self.fc2 = nn.Linear(4096, 1000)
        
    def forward(self, x):
        x = self.conv1(x)
        x = self.relu1(x)
        x = self.pool1(x)
        
        x = self.conv2(x)
        x = self.relu2(x)
        x = self.pool2(x)
        
        x = self.conv3(x)
        x = self.relu3(x)
        
        x = self.conv4(x)
        x = self.relu4(x)
        
        x = self.conv5(x)
        x = self.relu5(x)
        x = self.pool3(x)
        
        x = x.view(x.size(0), -1)
        x = self.fc1(x)
        x = self.relu6(x)
        x = self.fc2(x)
        
        return x

注:由于输入的图片大小为224x224,经过第一层卷积核大小为11x11,步长为4,填充为2的卷积后输出为96x55x55,而非题目中给出的96x56x56

请设计一个卷积神经网络CNN。10分该网络执行如下操作:1	第一层: 使用96个大小为11×11、步长为4、填充为2的卷积核将输入3×224×224的图像输出为96×55×55的图像 使用ReLU为激活函数;2	第二层: 大小为3×3、 步长为2、无填充的极大值池化层将96×55×55的图像输出为96×27×27;3	第三层: 使用256个大小为5×5、步长为1、填充为2的卷积核将输入96×27×

原文地址: https://www.cveoy.top/t/topic/eOtZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录