将tfRecord文件用于具有可变滞后的时间序列

时间:2018-09-22 23:08:43

标签: python tensorflow

我正在使用tensorflow进行时间序列预测。 所使用的时间序列约为每日10,000个数据点,与tf.Dataset API配合使用时效果很好。 要使用日内数据(每5分钟一次),我想知道是否有更有效的方式导入数据,因为每次我重新初始化数据集迭代器时,我都会不断使用feed_dicts(效率低下)指向我的numpy数组培训或验证集。这一点变得越来越重要,因为我通常在每个时期之后运行验证或测试集,这意味着迭代器在每个时期都要重新初始化两次。

我的数据通常是这样导入的:

   dataset = tf.data.Dataset.from_tensor_slices((X, 
   Y)).batch(batch_size)

   iterator = dataset.make_initializable_iterator()
   input, label = iterator.get_next()

其中X和Y是占位符。

目前,我的数据已使用具有numpy数组的简单函数进行了预处理,在其中我设置了滞后次数以解释单个时间步长(例如:标签[3]的[0,1,2]),我也经常改变训练。 因为我正在更改输入数据的滞后,所以没有固定的(功能,标签)对来构造TfRecord文件。

我的问题是,是否值得创建一个功能(原始时间序列)仅一个功能的Tfrecord文件,然后根据我选择的延迟将其修改为(功能,标签)对。 < / p>

我问,因为获得的时间可能并不重要,因为无论如何都应该映射数据集,或者这是其他可能的解决方案(我想到的一个想法是使用dataset.repeat()和{{1} }而不是while循环,尽管我认为它必须与在每个for epoch in range(num_batches):错误之后重新初始化迭代器相同,所以没有收益。

如果值得创建tfrecord文件,可以使用数据集API提供一些实现吗?我试图创建一个类似于此answer的功能文件,但由于无法正确解析数据而没有任何解决方案。

Ps:这很简单,但是最好包含代码以创建我的功能,并按时间序列标注:

Tf.OutOfRangeError

其中def lags(data, t_steps, label=False): data_=[] for i in range(len(data)-t_steps): if label: data_.append(data[i+t_steps]) else: data_.append(data[i:i+t_steps]) return np.array(data_) 定义了要使用的滞后次数。

0 个答案:

没有答案