在以数组形式提供的时间序列上创建滑动窗口数据集。
用法
tf.keras.utils.timeseries_dataset_from_array(
data, targets, sequence_length, sequence_stride=1, sampling_rate=1,
batch_size=128, shuffle=False, seed=None, start_index=None, end_index=None
)
参数
-
data
Numpy 数组或包含连续数据点(时间步长)的即刻张量。轴 0 预计是时间维度。 -
targets
目标对应于data
中的时间步长。targets[i]
应该是对应于从索引i
开始的窗口的目标(参见下面的示例 2)。如果没有目标数据,则传递 None(在这种情况下,数据集只会产生输入数据)。 -
sequence_length
输出序列的长度(时间步数)。 -
sequence_stride
连续输出序列之间的周期。对于步幅s
,输出样本将从索引data[i]
,data[i + s]
,data[i + 2 * s]
等开始。 -
sampling_rate
序列中连续的单个时间步之间的周期。对于速率r
,时间步长data[i], data[i + r], ... data[i + sequence_length]
用于创建样本序列。 -
batch_size
每批中的时间序列样本数(可能最后一个除外)。如果None
,数据将不会被批处理(数据集将产生单个样本)。 -
shuffle
是打乱输出样本,还是按时间顺序绘制它们。 -
seed
可选整数;用于洗牌的随机种子。 -
start_index
可选整数;早于(不包含)start_index
的数据点将不会在输出序列中使用。这对于保留部分数据用于测试或验证很有用。 -
end_index
可选整数;比end_index
晚(不包括)的数据点将不会在输出序列中使用。这对于保留部分数据用于测试或验证很有用。
返回
-
一个 tf.data.Dataset 实例。如果
targets
被传递,数据集产生元组(batch_of_sequences, batch_of_targets)
。如果不是,则数据集仅产生batch_of_sequences
。
此函数接受以相等间隔收集的data-points 序列,以及时间序列参数,例如序列/窗口的长度、两个序列/窗口之间的间距等,以生成批次的时间序列输入和目标。
示例 1:
考虑索引 [0, 1, ... 99]
。使用 sequence_length=10, sampling_rate=2, sequence_stride=3
, shuffle=False
,数据集将产生由以下索引组成的序列批次:
First sequence: [0 2 4 6 8 10 12 14 16 18]
Second sequence:[3 5 7 9 11 13 15 17 19 21]
Third sequence: [6 8 10 12 14 16 18 20 22 24]
...
Last sequence: [78 80 82 84 86 88 90 92 94 96]
在这种情况下,最后 3 个数据点被丢弃,因为无法生成包含它们的完整序列(下一个序列将从索引 81 开始,因此其最后一步将超过 99)。
示例 2:时间回归。
考虑一个形状为 (steps,)
的标量值数组 data
。要生成使用过去 10 个时间步来预测下一个时间步的数据集,您可以使用:
input_data = data[:-10]
targets = data[10:]
dataset = tf.keras.preprocessing.timeseries_dataset_from_array(
input_data, targets, sequence_length=10)
for batch in dataset:
inputs, targets = batch
assert np.array_equal(inputs[0], data[:10]) # First sequence:steps [0-9]
assert np.array_equal(targets[0], data[10]) # Corresponding target:step 10
break
示例 3:many-to-many 架构的时间回归。
考虑两个标量值数组 X
和 Y
,它们的形状都是 (100,)
。生成的数据集应包含每个具有 20 个时间戳的样本。样本不应重叠。要生成使用当前时间戳来预测相应目标时间步长的数据集,您可以使用:
X = np.arange(100)
Y = X*2
sample_length = 20
input_dataset = tf.keras.preprocessing.timeseries_dataset_from_array(
X, None, sequence_length=sample_length, sequence_stride=sample_length)
target_dataset = tf.keras.preprocessing.timeseries_dataset_from_array(
Y, None, sequence_length=sample_length, sequence_stride=sample_length)
for batch in zip(input_dataset, target_dataset):
inputs, targets = batch
assert np.array_equal(inputs[0], X[:sample_length])
# second sample equals output timestamps 20-40
assert np.array_equal(targets[1], Y[sample_length:2*sample_length])
break
相关用法
- Python tf.keras.utils.to_categorical用法及代码示例
- Python tf.keras.utils.text_dataset_from_directory用法及代码示例
- Python tf.keras.utils.custom_object_scope用法及代码示例
- Python tf.keras.utils.deserialize_keras_object用法及代码示例
- Python tf.keras.utils.array_to_img用法及代码示例
- Python tf.keras.utils.get_file用法及代码示例
- Python tf.keras.utils.experimental.DatasetCreator用法及代码示例
- Python tf.keras.utils.set_random_seed用法及代码示例
- Python tf.keras.utils.plot_model用法及代码示例
- Python tf.keras.utils.get_custom_objects用法及代码示例
- Python tf.keras.utils.pack_x_y_sample_weight用法及代码示例
- Python tf.keras.utils.img_to_array用法及代码示例
- Python tf.keras.utils.image_dataset_from_directory用法及代码示例
- Python tf.keras.utils.get_registered_object用法及代码示例
- Python tf.keras.utils.SidecarEvaluator用法及代码示例
- Python tf.keras.utils.load_img用法及代码示例
- Python tf.keras.utils.SequenceEnqueuer用法及代码示例
- Python tf.keras.utils.unpack_x_y_sample_weight用法及代码示例
- Python tf.keras.applications.inception_resnet_v2.preprocess_input用法及代码示例
- Python tf.keras.metrics.Mean.merge_state用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.keras.utils.timeseries_dataset_from_array。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。