CNN 后接 gMLP 的正确实现方法
你的代码有一些问题,包括导入模块的位置以及 gMLP 的调用方式。下面是修正后的代码:
from gmlp import SpatialGatingUnit, gMLPBlock, gMLP
class CNN(nn.Module):
def __init__(self):
super(CNN, self).__init__()
self.conv1 = nn.Sequential(
nn.Conv2d(1, 5, (200, 3), (50, 1), padding=1),
nn.ReLU(),
nn.MaxPool2d(kernel_size=2, padding=1)
)
self.conv2 = nn.Sequential(
nn.Conv2d(5, 10, (20, 2), (4, 1), padding=1),
nn.ReLU(),
nn.MaxPool2d(kernel_size=2)
)
self.gmlp = gMLP(d_model=40, d_ffn=80, seq_len=10, num_layers=6)
def forward(self, x):
x = self.conv1(x)
x = self.conv2(x)
x = x.view(x.size(0), -1)
x = self.gmlp(x)
return x
你需要确保已经正确导入了 gMLP 相关的模块,并且安装了对应的库。在 forward 方法中,将卷积层的输出展平后,再输入到 gMLP 中进行处理。
原文地址: https://www.cveoy.top/t/topic/fUQd 著作权归作者所有。请勿转载和采集!