I’m studying some biological trajectories with autoencoders. The trajectories are described using x,y position of a particle every delta t. Given the shape of these trajectories (3000 points for each trajectories) , I thought it would be appropriate to use convolutional networks.
So, given input data as a tensor of (batch_size, 2, 3000), it goes the following layers:
# encoding part self.c1 = nn.Conv1d(2,4,16, stride = 4, padding = 4) self.c2 = nn.Conv1d(4,8,16, stride = 4, padding = 1) self.c3 = nn.Conv1d(8,1,8, stride = 3, padding = 1) self.l1 = nn.Linear(60,20) # decoding part self.l2 = nn.Linear(50,20) self.d1 = nn.ConvTranspose1d(1,8,8,stride = 3, output_padding = 1, padding = 1) self.d2 = nn.ConvTranspose1d(8,4,16, stride = 4, output_padding = 1, padding = 1) self.d3 = nn.ConvTranspose1d(4,2,16, stride = 4, output_padding = 0)
It appears that this architecture doesn’t work very well, since I can’t get the loss below 1.9.
Could anyone shed some light on me as how to handle this case ? I believe that I’m using the convolution parameters (kernel size, padding and stride) in a bad way.