提问人:AGecko 提问时间:11/16/2023 更新时间:11/16/2023 访问量:16
在 Tensorflow 中组合多个时间序列的滑动窗口
Combining Sliding Windows Over Many Time-Series in Tensorflow
问:
我有许多(O(100万))时间序列,每个时间序列大约有 30 个时间步长。时间步长的数量因样本而异。我想在每个时间序列上使用滑动窗口来生成训练样本。目标是立即处理每个窗口的时间步长。将每个滑动窗口的结果存储到一个新数组中会浪费内存,因此我想使用 Tensorflow.Dataset 管道。
例如,我们可以生成 100 个样本,每个样本有 15 个时间步长和 3 个特征。data = np.ones(100,15,3)
def window_data(data):
window_size = 3
n_features = 3
tmp_in = None
tmp_out = None
for i in range(data.shape[0]-window_size):
a = data[np.newaxis,i:i+3]
if tmp_in is None:
tmp_in = a
tmp_out = data[i+window_size]
else:
tmp_in = np.append(tmp_in,a,axis=0)
tmp_out = np.append(tmp_out, data[i+window_size])
return tmp_in, tmp_out.reshape(tmp_out.shape[0]//n_features, n_features)
dataset = tf.data.Dataset.from_tensor_slices(data)
dataset = dataset.map(lambda i: tf.py_function(func=window_data,
inp=[i],
Tout=[tf.float32,
tf.float32]
),
num_parallel_calls=tf.data.AUTOTUNE)
但是,这会导致每个元素都具有形状的数据集,而我需要一个数据集,其中每个元素都是大小窗口(sample_size - window_size, window_size, n_features)
(window_size, n_features)
是否可以在多个时间序列数据集上执行滑动窗口,并将结果有效地组合到 tensorflow 数据集中?
答: 暂无答案
评论