给定一个日期帧(m,n),其中每个m是一个时间步长,n是特征的数量。对于非语言时间序列LSTM,序列长度的合适数字是多少?当2D矩阵转换为[Batch Size,Sequence Length,Features]的3D矩阵时,是否存在某种经验法则来选择序列长度,因为特征是恒定的,而批大小取决于序列长度。
2D转3D功能
def splitter(seql,traindf,ytrue):
m,n = traindf.shape
timestep = m
X_Train = []
Y_Train = []
for i in range(seql,timestep):
X_Train.append(traindf[i-seql:i])
Y_Train.append(ytrue[i][0])
X_Train,Y_Train = np.array(X_Train),np.array(Y_Train)
return X_Train,Y_Train
我能想到的最好的选择是对序列长度进行超参数调整,看起来序列长度越小,测试结果越好,但问题是不同的序列长度值会得到不同大小的测试矩阵,这使得比较序列长度超参数之间结果的重要性变得困难。
1条答案
按热度按时间xxhby3vn1#
序列长度通常是你搜索的超参数但是,您可以根据您的时态数据和您的领域知识来确定该搜索的相对范围。例如,如果您根据经验知道7天前的销售额似乎根本无法预测当前的销售额,则您可以将序列长度限制为7。此外,您还应固定测试集,使其不会'例如,你可能有1000个例子,所有例子的时间步长都是你的上限,然后让你的数据加载器总是返回两个TensorX -〉(batch_size,seq_len,features)和Y -〉(batch_size,n_targets)。