PyTorch中的火车时间序列

时间:2019-05-30 07:24:44

标签: deep-learning pytorch

我希望训练RNN模型,以便可以预测时间序列模型中的T步。到目前为止,我所看到的大多数示例都围绕文本。

我的玩具示例是预测3个正弦波,如下所示:

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的形状为600,3。但是,为了使LSTM接受它,输入的形状必须为(seq_len, batch, input_size)。我想知道pytorch中是否有将它们转换为所需格式的函数。假设就我​​而言,我想要seq_len=50batch_size=32

machinelearningmastery中的代码段是我找到的唯一代码段。

# 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)

pad_packed_sequence还是在pytorch中类似的东西本来就是这样做的。

如果有人感兴趣,这是我的LSTM模型:

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)

[可选问题]对于我最终得到的任何解决方案,是否有办法确保我可以进行有状态的培训?

0 个答案:

没有答案