I looked through your code a bit and it seems that you are making a tensor of shape (batch_size, channels, samples, 1) for the 2D convolution.
Since your sample size is greater than one, the convolution differs from a fully connected layer because at each input channel the kernel weight is the same for all five samples. This is a constraint that a fully connected layer would not have allowing the fully connected layer to learn more complex functions. So here the full size of your first convolutional kernel would be (input_channels_output channels, 1, 1) while the full size of the weight on your fully connected layer would be (input_channels,output_channels, samples, 1).
This sort of explains why a (samplesx1) convolutional layer would be equivalent to the fully connected layer here as the (samplesx1) kernel size would be (input channels, output_channels, samples, 1) like the fully connected layer.
I am also fairly new to PyTorch so do not take what I say as gospel, but there is a fundamental difference between the convolutional layer and fully connected layer here.