No problem 
So that is about right, but you don’t want to save the outputs and train the fully-connected layer separately, but rather use the fully-connected layer (Linear layer in PyTorch) as a final layer in one full network.
You have T timesteps (‘days’)
your features are of dimension f
your LSTM outputs will be whatever the hidden size of your lstm is, lets call that h
your labels (Y) are dimension o (which is 1)
you need to reduce the dimensionality of each h-dimensional LSTM output to o, for this you use a PyTorch Linear layer with h input dimensions and o output dimensions. In most cases, you can pass a sequence to a Linear layer and it will apply the same linear transformation to all vectors in the sequence. Your LSTM output shape will be [T, h], passing this through a linear layer will give a [T, o] output. Your labels are also [T, o], so it should be fine to use MSE to compute the loss over these vectors. Since the o dimension is just 1, you may have to call .squeeze(-1) on the output before passing it to MSE loss. I’m not exactly sure what shape vectors pytorch MSE expects.
input vector - [T, f]
x1 x2 x3 … xT - f-dimensional inputs to LSTM
LSTM output [T, h]
h1 h2 h3 … hT - h-dimensional outputs of LSTM
Linear layer output [T, o]
l1 l2 l3 … lT - o-dimensional Linear layer output
loss = MSE loss (linear layer output, labels)
backpropagate through the whole network (by calling loss.backward() then optimizer.step())