Kieran:

out, self.hidden = self.lstm(x, self.init_hidden)


this passes the init_hidden method, you likely want init_hidden() instead. (Why you would need to do this when 0 initial hidden it is implicit in PyTorch, I don’t know.)
Best regards
Thomas