写一个多个卷积层和多个全联接层的CNN网络
时间: 2024-04-11 07:29:00 浏览: 101
verilog实现卷积神经网络CNN,包括卷积层,Relu激活层,FC全连接层,pool池化层
5星 · 资源好评率100%
当你构建一个包含多个卷积层和多个全连接层的CNN网络时,你可以使用PyTorch的`nn.Module`类来定义你的网络。下面是一个示例:
```python
import torch
import torch.nn as nn
class MyCNN(nn.Module):
def __init__(self, num_classes):
super(MyCNN, self).__init__()
self.conv1 = nn.Conv2d(in_channels=3, out_channels=16, kernel_size=3, stride=1, padding=1)
self.relu = nn.ReLU()
self.pool = nn.MaxPool2d(kernel_size=2, stride=2)
self.conv2 = nn.Conv2d(in_channels=16, out_channels=32, kernel_size=3, stride=1, padding=1)
self.fc1 = nn.Linear(in_features=32 * 8 * 8, out_features=128)
self.fc2 = nn.Linear(in_features=128, out_features=num_classes)
def forward(self, x):
x = self.conv1(x)
x = self.relu(x)
x = self.pool(x)
x = self.conv2(x)
x = self.relu(x)
x = self.pool(x)
x = x.view(x.size(0), -1) # 将张量展平为向量
x = self.fc1(x)
x = self.relu(x)
x = self.fc2(x)
return x
# 创建模型实例
model = MyCNN(num_classes=10)
# 创建输入数据(batch_size=1)
input_data = torch.randn(1, 3, 32, 32) # 32x32 RGB图像
# 运行模型进行预测
output = model(input_data)
# 打印预测结果
print(output)
```
在这个示例中,我们定义了一个名为`MyCNN`的自定义CNN类。它包含两个卷积层(`self.conv1`和`self.conv2`)和两个全连接层(`self.fc1`和`self.fc2`)。每个卷积层后面都跟着ReLU激活函数和最大池化层。
在`forward`方法中,我们按照定义的顺序将输入数据传递给各个层,并使用ReLU激活函数进行非线性变换。在第二个卷积层后,我们使用`view`方法将张量展平为向量,以便将其输入到全连接层。最后,我们返回最后一个全连接层的输出结果。
你可以根据你的任务和数据集的要求调整网络结构、卷积核的参数和全连接层的维度。希望这个示例能够帮助你构建多个卷积层和多个全连接层的CNN网络。
阅读全文