I didn’t check your calculations, but maybe you can have a look at my code here 13: There are two methods _calc_conv_output_size and _calc_maxpool_output_size to calculate the sizes of the output of the conv layer and the max_pool layers – since I want to be flexible with the sequence lengths, kernel sizes, stride, etc.
Apart from that, nn.Conv1d(90000, 300, 2, padding=0) looks a bit surprising to me. From my understanding the set up is as follow:
nn.Conv1d(in_channels=embedding_dim,
          out_channels=out_channels,
          kernel_size=conv_kernel_size,
          stride=self.common_conv_stride,
          padding=self.common_conv_padding)

So your embedding_dim is 90000? The whole purpose of word embeddings is to get a lower dimensional representation of words. Memory might also be a problem here.
Uh, wait a minute. The number of parameters of a layer is not the same as the number of outputs. i.e., the output dimension. For example, there are bias parameters in the layer that out not reflected in the output dimension. You’re comparing two different numbers here.