Thank you for your response @vdw. I think that clarifies (1).
Regarding (2):
Yes, the hidden state should be reset after each minibatch. In the first code snippet of the model, nothing is done with the hidden state between two different forward passes.
out_packed_sequence, hidden = self.recurrent_layer(embedded_sents)

I think this means that the hidden state is reset after each forward pass, and therefore reset after each minibatch.
However, I still wonder what happens with the hidden state inside one minibatch of sentences. Suppose we have the following minibatch with two sentences: [ [1, 2, 3] [4, 5, 6] ].
My question is:
Will the hidden state of the third item (3) from sentence 1 be passed into the computation of the first element (4) of sentence two?
If the answer to this is yes, can this be a problem? I ask this based on the fact that the dataset is randomly shuffled before creating minibatches. Therefore I believe the sentences inside each minibatch should not depend on each other.
thanks!