下面是我目前对一个简单的卷积神经网络的定义。
class CNNnet(nn.Module)
def __init__(self):
self.conv1 = nn.Conv1d(2000, 200, (1,2), stride=10)
self.pool = nn.MaxPool1d(kernel_size = (1, 2), stride = 2)
self.fc1 = nn.Linear(64, 30)
self.fc2 = nn.Linear(30, 7)
def forward(self, x):
x = x.view(64, 2000, 1)
x = F.relu(self.conv1(x))
x = self.pool(x)
x = F.relu(self.fc1(x))
x = self.fc2(x)
return x
尝试训练此模型会产生以下错误:
“ RuntimeError:4维权重的预期4维输入 200 2000 1 2,但获得尺寸为[64,2000,1]的3维输入 代替”。
我对为什么期望使用4D 200x2000x1x2 矩阵感到困惑(输出通道的数量与输入无关吗?为什么末尾有2?)。 / p>
我的问题是,在处理一维数据时,编写CNN(特别是卷积层)的正确语法或方法是什么?任何帮助将不胜感激。
答案 0 :(得分:1)
因此,在一维情况下的内核大小仅仅是一个向量。因此,如果您要使用大小为“ 1X2”的内核,则需要指定“ 2” 在二维情况下2表示内核大小为“ 2X2”。
您给了2个值的元组,因此您使用2种内核类型将各自创建自己的通道