构建网络 练习题三道

发布于:2025-04-10 ⋅ 阅读:(39) ⋅ 点赞:(0)

问题

构建网络1:


  1. [_,1,28,28]
    [_,16,14,14]
    [_,32,7,7]
    [_,32,1,1]
    [_,32]
    [_,64]
    [_,10]

  2. 构建网络2:


    [_,1,28,28]
    [_,16,14,14]
    [_,32,7,7]
    [_,32,1,1]
    [_,10,1,1]
    [_,10]

  3. 构建网络3:

[_,1,28,28]

[_16,14,14]

[_,128,14,14]

[_,256,7,7]

[_,256,1,1]

[_,256]

[_,10]

方法

构建网络1:
import torch.nn as nn
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(1, 16, 3, padding=1)
        self.conv2 = nn.Conv2d(16, 32, 3, padding=1)
        self.conv3 = nn.Conv2d(32, 32, 3, padding=1)
        self.conv4 = nn.Conv2d(32, 32, 3, padding=1)
        self.conv5 = nn.Conv2d(32, 64, 3, padding=1)
        self.fc1 = nn.Linear(64, 10)
    def forward(self, x):
        x = nn.functional.relu(self.conv1(x))
        x= nn.functional.max_pool2d(nn.functional.relu
(self.conv2(x)), 2)
        x = nn.functional.relu(self.conv3(x))
        x = nn.functional.max_pool2d(nn.functional.relu
(self.conv4(x)), 2)
        x = nn.functional.max_pool2d(nn.functional.relu
(self.conv5(x)), 2)
        x = x.view(-1, 64)
        x = self.fc1(x)
        return x
构建网络2:
import torch.nn as nn
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(1, 16, 3, padding=1)
        self.conv2 = nn.Conv2d(16, 32, 3, padding=1)
        self.conv3 = nn.Conv2d(32, 32, 3, padding=1)
        self.conv4 = nn.Conv2d(32, 10, 3, padding=1)
        self.fc1 = nn.Linear(10, 10)
    def forward(self, x):
        x = nn.functional.relu(self.conv1(x))
        x = nn.functional.max_pool2d(nn.functional.relu
(self.conv2(x)), 2)
        x = nn.functional.relu(self.conv3(x))
        x = nn.functional.max_pool2d(nn.functional.relu
(self.conv4(x)), 2)
        x = nn.functional.adaptive_avg_pool2d(x, (1, 1))
        x = x.view(-1, 10)
        x = self.fc1(x)
        return x
构建网络3:
import torch.nn as nn
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(1, 16, 3, padding=1)
        self.conv2 = nn.Conv2d(16, 128, 3, padding=1)
        self.conv3 = nn.Conv2d(128, 256, 3, padding=1)
        self.conv4 = nn.Conv2d(256, 256, 3, padding=1)
        self.conv5 = nn.Conv2d(256, 256, 3, padding=1)
        self.fc1 = nn.Linear(256, 10)
    def forward(self, x):
        x = nn.functional.relu(self.conv1(x))
        x = nn.functional.max_pool2d(nn.functional.relu
(self.conv2(x)), 2)
        x = nn.functional.relu(self.conv3(x))
        x = nn.functional.max_pool2d(nn.functional.relu
(self.conv4(x)), 2)
        x = nn.functional.relu(self.conv5(x))
        x = nn.functional.adaptive_avg_pool2d(x, (1, 1))
        x = x.view(-1, 256)
        x = self.fc1(x)
        return x

结语

本次实验我们做了三个练习题,需要的知识在课堂上已经有过演示了。在实际编写代码中我们运用了nn. Conv2d()进行卷积层的构建;利用激活函数nn.ReLU(),使分类效果更好;整体来说是比较简单的,编写过程中也没有遇到什么问题。