# Reshape time series data for RNNs

This is a crosspost from https://stackoverflow.com/questions/56373603/train-time-series-in-pytorch.

I wish to train a RNN model such that I can predict for T steps ahead in a time series model. Most of the examples that I have seen so far are centred around text.

The toy example that I have is to predict 3 sine waves as shown below:

``````x = torch.arange(0,30,0.05)
y = [torch.sin(x), torch.sin(x-np.pi), torch.sin(x-np.pi/2)]
y = torch.stack(y)
y = y.t()
``````

y is of shape `600,3`. However in order for the LSTM to accept it the input needs to be of shape `(seq_len, batch, input_size)`. I was wondering if there is a function in pytorch that converts them to required format. Suppose that in my case I want `seq_len=50` and `batch_size=32`.

This snippet of code from machinelearningmastery was the only snippet of code I found.

``````# convert an array of values into a dataset matrix
def create_dataset(dataset, look_back=1):
dataX, dataY = [], []
for i in range(len(dataset)-look_back-1):
a = dataset[i:(i+look_back), 0]
dataX.append(a)
dataY.append(dataset[i + look_back, 0])
return numpy.array(dataX), numpy.array(dataY)
``````

Does `pad_packed_sequence` or anything similar in pytorch natively do this.

If anyone is interested, this is my LSTM model:

``````class LSTM(nn.Module):
def __init__(self, n_features, h, num_layers=2):
super().__init__()
self.lstm = nn.LSTM(n_features, h, num_layers)
self.linear = nn.Linear(h, n_features)

def forward(self, input, h=None):
lstm_out, self.hidden = self.lstm(input, h)
return self.linear(lstm_out)
``````

[optional Q] For whatever solution that I end up with, is there a way to ensure that I can do stateful training?