Hello,
I am trying to run a CNN that looks like this:
> class MyModel(nn.Module):
> def __init__(self):
> super(MyModel, self).__init__()
> self.conv1 = nn.Conv1d(1, 3, kernel_size=3)
> self.conv2 = nn.Conv1d(3, 6, kernel_size=6)
> self.conv3 = nn.Conv1d(6, 12, kernel_size=12)
> self.conv4 = nn.Conv1d(12,24, kernel_size=24)
> self.conv5 = nn.Conv1d(24,48, kernel_size = 48)
> self.conv_drop = nn.Dropout2d()
> self.conv6_transpose = nn.ConvTranspose1d(48,24, kernel_size = 48)
> self.conv7_transpose = nn.ConvTranspose1d(24,12, kernel_size = 24)
> self.conv8_transpose = nn.ConvTranspose1d(12,6, kernel_size = 12)
> self.conv9_transpose=nn.ConvTranspose1d(6,3, kernel_size = 6)
> self.conv10_transpose = nn.ConvTranspose1d(3,1, kernel_size = 3)
>
>
> self.bn1 = nn.BatchNorm1d(3)
> self.bn2 = nn.BatchNorm1d(6)
> self.bn3 = nn.BatchNorm1d(12)
> self.bn4 = nn.BatchNorm1d(24)
> self.bn5 = nn.BatchNorm1d(48)
> self.bn6 = nn.BatchNorm1d(24)
> self.bn7 = nn.BatchNorm1d(12)
> self.bn8 = nn.BatchNorm1d(6)
> self.bn9 = nn.BatchNorm1d(3)
> self.bn10 = nn.BatchNorm1d(1)
>
>
> def forward(self, x):
>
> #downsample
> out = self.conv1(x)
> out = F.relu(out)
> out = self.bn1(out)
>
> out = self.conv2(out)
> out = F.relu(out)
> out = self.bn2(out)
>
> out = self.conv3(out)
> out = F.relu(out)
> out = self.bn3(out)
>
> out = self.conv4(out)
> out = F.relu(out)
> out = self.bn4(out)
>
> #bottleneck
> out = self.conv5(out)
> out = F.relu(out)
> out = self.bn5(out)
> out = self.conv_drop(out)
>
> #upsample
> out = self.conv6_transpose(out)
> out = self.conv6_drop(out)
> out = F.relu(out)
> out = out.unsqueeze(1)
> out = self.bn6(out)
>
> out = self.conv7_transpose(out)
> out = self.conv_drop(out)
> out = F.relu(out)
> out = out.unsqueeze(1)
> out = self.bn7(out)
>
> out = self.conv8_transpose(out)
> out = self.conv_drop(out)
> out = F.relu(out)
> out = out.unsqueeze(1)
> out = self.bn8(out)
>
> out = self.conv9_transpose(out)
> out = self.conv_drop(out)
> out = F.relu(out)
> out = out.unsqueeze(1)
> out = self.bn9(out)
>
> out = self.conv10_transpose(out)
> out = self.conv_drop(out)
> out = F.relu(out)
> out = out.unsqueeze(1)
> out = self.bn10(out)
>
> return out
>
>
> model = MyModel()
However now I ge the error: Expected 3-dimensional input for 3-dimensional weight [3, 1, 3], but got 2-dimensional input of size [64, 200] instead. Does anybody know what can be done now? I am relatively new to pytorch so help would be welcome
The input data is a tensor that needs to undergo several conv1d’s and transpose conv1d’s to downsample and upsample.