Let’s say you have a hidden state of size (1, N, H) where N is the batch size and H is the number of hidden units.The 1 is there because I assumed you have 1 layer and no bidirectionality.
So in your case you have 2 of these hidden states, one for each LSTM, and they may differ only in the value of H. Call H1 the dimensionality of the first LSTM and H2 the dimensionality of the second LSTM.
You can obtain a single stacked hidden state of size (1, N, H1+H2) with this code:
stacked_hidden = torch.cat( (hidden1, hidden2), dim=2)

Instead, if you want to sum or average the hidden states you have to set H1 = H2 and then you can simply use the usual sum or average operations.
In all these cases you can squeeze your result to remove the zero-th dimension with value 1 and feed the tensor to the fully connected network. By the way this network should have input_size = H1+H2 (if you use concatenation) or H (if you use sum or average).