我试图遵循tensorflow的tutorial来进行时间序列预测,我有一些变化很大的温度数据,因此,我实际上并不想预测实际值,只想预测与最后一个元素相比变化了多少。
假设我有一个时间序列训练数据点类型(input,label):([8,7,5,9,11,10],[12]),我想将其转换为一个数据点,其中所有内容都由输入中的最后一个条目规范化。在这个具体的示例中,我希望数据点如下所示:([0.8、0.7、0.5、0.9、1.1、1.0]、[1.2])。
按照教程,我能够从固定间隔收集的原始温度数据创建窗口数据集。这将创建Tensor数据集,但不允许我修改这些Tensor中的值。因此,我不能在创建的数据集中循环所有窗口,然后通过除以输入数组中的最后一个值来归一化。此外,我不能在创建数据集之前规范化数据,因为我需要窗口结构。我如何以这种方式规范化每个窗口的数据?
我的猜测是,它需要在数据集和窗口创建之后才能完成。因此,在这个函数的某个地方,可能是:
def make_dataset(self, data):
data = np.array(data, dtype=np.float32)
ds = tf.keras.utils.timeseries_dataset_from_array(
data=data,
targets=None,
sequence_length=self.total_window_size,
sequence_stride=1,
shuffle=True,
batch_size=32,)
ds = ds.map(self.split_window)
return ds
1条答案
按热度按时间zzlelutf1#
一种方法是使用一个数据生成器,你可以在里面实现你想要的逻辑,比如除以每一批中最大的输入,下面是一个如何实现的例子: