class MyConvNet(nn.Module): def __init__(self): super(MyConvNet,self).__init__() ## 定义第一个卷积层 self.conv1 = nn.Sequential( nn.Conv2d( in_channels = 1,## 输入的feature map out_channels = 32,## 输出的feature map kernel_size = 3, ##卷积核尺寸 stride=1, ##卷积核步长 padding=1, # 进行填充 ), ## 卷积后: (1*28*28) ->(16*28*28) nn.ReLU(), # 激活函数 nn.AvgPool2d( kernel_size = 2,## 平均值池化层,使用 2*2 stride=2, ## 池化步长为2 ), ## 池化后:(16*28*28)->(16*14*14) ) ## 定义第二个卷积层 self.conv2 = nn.Sequential( nn.Conv2d(32,68,3,1,0), ## 卷积操作(16*14*14)->(32*12*12) nn.ReLU(), # 激活函数 nn.AvgPool2d(2,2) ## 最大值池化操作(32*12*12)->(32*6*6) ) self.classifier = nn.Sequential( nn.Linear(68*6*6,256), nn.ReLU(), nn.Linear(256,128), nn.ReLU(), nn.Linear(128,64), nn.ReLU(), nn.Linear(64,10) ) ## 定义网络的向前传播路径 def forward(self, x): x = self.conv1(x) x = self.conv2(x) x = x.view(x.size(0), -1) # 展平多维的卷积图层 output = self.classifier(x) return output ## 输出我们的网络结构 myconvnet = MyConvNet() print(myconvnet)
时间: 2024-02-10 17:21:12 浏览: 117
Residual-Networks.zip_-baijiahao_47W_python residual_python残差网络
这段代码定义了一个名为 MyConvNet 的类,它继承了 nn.Module 类。该类包含了两个卷积层和一个分类器,其中第一个卷积层使用了 32 个卷积核,大小为 3*3,步长为 1,填充为 1,使用了 ReLU 激活函数和平均值池化层进行下采样。第二个卷积层使用了 68 个卷积核,大小为 3*3,步长为 1,没有进行填充,同样使用了 ReLU 激活函数和平均值池化层进行下采样。分类器部分使用了四个全连接层,分别包含了 256,128,64 和 10 个神经元,并且使用了 ReLU 激活函数。forward 函数实现了网络的向前传播。最后,代码创建了一个 MyConvNet 的实例 myconvnet,并打印了该网络的结构。
阅读全文