Thank you for your help. I think I’m starting to get it. Sorry if I’m difficult to get through to!
Yes, the time-series data made more sense to me as a beginner than the text data because I could think in terms of ‘samples’ and ‘variables’  I’ll try tackling text data next.
Follow up 1: Is there any reason I couldn’t have input_size > 1? What if my time series data has more than just a passengers variable? For instance each point in time might also have an average weather, or some such thing. Can I not use multiple variables to predict a single time series outcome?



 vdw:

Don’t think for rows or columns. The output of an LSTM gives you the hidden states for each data point in a sequence, for all sequences in a batch. You only have 1 sequence, it comes with 12 data points, each data point has 3 features (since this is the size of the LSTM layer). Maybe this image helps a bit:


follow up 2: Okay, so LSTM layer outputs/hidden aren’t worth trying to interpret? All of that data is transient and unit-less, not meant for human consumption? At least I understand the shape of it now!



 vdw:

No! The linear layer expects an input shape of (batch_size, "something") . Since your batch size is 1, out after flattening need to be of shape (1, "something") , but you have (12, "something") . Note that self.fc doesn’t care, it just sees a batch of size 12 and does process it. In your simple case, a quick fix would be out = out.view(1, -1)


follow up 3: I’m wondering why .view(-1, self.hidden_size) was used here, in this Udacity notebook 6 in their .forward() method?
I thought that .forward(-1, hidden_size) would give me exactly (batch_size, hidden_size), and it appears to have worked. Perhaps a lucky accident:
image711×468 41.5 KB
I didn’t understand the stackabuse way which was to do out.view(len(input), -1)