OK, that was I was looking for. If you use nn.Conv2d over sentences, e.g., sequences of word vectors, then there are constraints on the kernel size: if your embedding vectors have as size of embed_size, then kernel_size=(x,embed_size) where x is the only value you can adjust. The issue is that it makes no semantic sense to convolve over the embedding dimension; see this older post of mine 1.
So if your 100 is the size of your embedding vectors, then kernel_size=(5,100) is valid while kernel_size=(5,5) is not.
By the way, what happens when you give the embeddings directly to the RNN(s), thus skipping the CNN part. I can’t intuitively tell what the CNN layer(s) are suppose to do.