I have set up the following CNN class to train sequences of length 2000 and dim = 3.
Now, I need to test this model to predict test sequences, which are of different length = 1950, but same dim = 3. I hard-coded the in_features and out_features in fully-connected layers:
self.fc1 = nn.Linear(2500, 2300)
self.fc2 = nn.Linear(2300, 2100)
self.fc3 = nn.Linear(2100, 2000)
Thus, it doesn’t work if I need to predict sequences of different length, as numbers will be different. Any suggestions how I can make the model work without hard-coding these numbers, so it works for different number of in_features and out_features?
class my_CNN(nn.Module):
def __init__(self):
super(my_CNN, self).__init__()
self.conv1 = nn.Conv2d(1, 10, 2, padding = (1,1))
self.relu1 = nn.ReLU(inplace=True)
self.maxpool1 = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(10, 15, 2, padding = (1,1))
self.relu2 = nn.ReLU(inplace=True)
self.maxpool2 = nn.MaxPool2d(2, 2)
self.fc1 = nn.Linear(2500, 2300)
self.fc2 = nn.Linear(2300, 2100)
self.fc3 = nn.Linear(2100, 2000)
self.relu3 = nn.ReLU(inplace=True)
self.relu4 = nn.ReLU(inplace=True)
def forward(self, x):
out1 = self.relu1(self.conv1(x))
out2 = self.maxpool1(out1)
out3 = self.relu2(self.conv2(out2))
out4 = self.maxpool2(out3)
out = out4.view(out4.size(0), 1, 3, -1)
out = self.relu3(self.fc1(out))
out = self.relu4(self.fc2(out))
out = self.fc3(out)
return out
List item