双分支卷积神经网络源代码
时间: 2023-09-28 09:12:38 浏览: 124
以下是一个使用双分支卷积神经网络的示例源代码:
```python
import torch
import torch.nn as nn
class DoubleBranchCNN(nn.Module):
def __init__(self):
super(DoubleBranchCNN, self).__init__()
self.branch1 = nn.Sequential(
nn.Conv2d(3, 32, kernel_size=3, padding=1),
nn.ReLU(inplace=True),
nn.MaxPool2d(kernel_size=2, stride=2),
nn.Conv2d(32, 64, kernel_size=3, padding=1),
nn.ReLU(inplace=True),
nn.MaxPool2d(kernel_size=2, stride=2)
)
self.branch2 = nn.Sequential(
nn.Conv2d(3, 16, kernel_size=5, padding=2),
nn.ReLU(inplace=True),
nn.MaxPool2d(kernel_size=2, stride=2),
nn.Conv2d(16, 32, kernel_size=5, padding=2),
nn.ReLU(inplace=True), nn.MaxPool2d(kernel_size=2, stride=2)
)
self.fc = nn.Linear(32*8*8 + 32*8*8, 10) # 全连接层
def forward(self, x1, x2):
out1 = self.branch1(x1)
out2 = self.branch2(x2)
out1 = out1.view(out1.size(0), -1)
out2 = out2.view(out2.size(0), -1)
out = torch.cat((out1, out2), dim=1)
out = self.fc(out)
return out
```
上面的代码定义了一个双分支卷积神经网络模型,其中包含两个分支:`branch1`和`branch2`。每个分支由卷积层、ReLU激活函数和最大池化层组成。最后,两个分支的输出被连接起来,并传入一个全连接层进行分类。这个模型可以用于图像分类任务。注意,这只是一个示例代码,具体的模型结构和超参数可能需要根据具体任务进行调整。
阅读全文