【发布时间】:2022-01-05 09:29:50
【问题描述】:
我是使用 LSTM 的新手,甚至难以直观地理解它们。
我将它们用于回归问题,我有大约 6000 个数据集,每个时间步大约 450 个时间步,每个时间步有 11 个特征。目标值是 2d ~ [a,b] 并且它们对于单个数据集是相同的。训练后我想提供时间步长并预测 2d y 值。
示例: 数据集(6000 个中有 1 个)具有约 450 个不同的时间步长,类型为 x = [1,2,3,4,5,6,7,8,9,10,11],目标值 y = [1,2]
我目前遇到的问题是了解 LSTM 在输入之间的相关性方面究竟学到了什么,如果我正在处理多个数据集,我应该准确地提供哪些数据以及以什么顺序提供?我对 batch_size 一词感到困惑,如果我有不同的序列,seq_length 一词会发生什么...我是否将整个 450 个时间步作为序列传递?
我现在所做的是将所有数据合并到一个 csv 文件中并将它们传递给模型。由于内存问题,我无法运行它,所以我将其减少到 5000 个时间步,
下面是我使用的 LSTM 类
''' 类 LSTM(nn.Module):
def __init__(self, num_classes, input_size, hidden_size, num_layers):
super(LSTM, self).__init__()
self.num_classes = num_classes
self.num_layers = num_layers
self.input_size = input_size
self.hidden_size = hidden_size
self.seq_length = seq_length
self.lstm = nn.LSTM(input_size=input_size, hidden_size=hidden_size,
num_layers=num_layers, batch_first=True)
self.fc = nn.Linear(hidden_size, num_classes)
def forward(self, x):
h_0 = Variable(torch.zeros(
self.num_layers, x.size(0), self.hidden_size))
c_0 = Variable(torch.zeros(
self.num_layers, x.size(0), self.hidden_size))
# Propagate input through LSTM
ula, (h_out, _) = self.lstm(x, (h_0, c_0))
h_out = h_out.view(-1, self.hidden_size)
out = self.fc(h_out)
return out, h_out
'''
我真的不需要技术答案.. 我真的很想有人能澄清这种情况下发生了什么以及我应该如何处理它......我已经在网上搜索了几十个帖子,但似乎我只是不明白,或者不完全是我的情况。
【问题讨论】:
标签: python machine-learning pytorch lstm recurrent-neural-network