在以數組形式提供的時間序列上創建滑動窗口數據集。
用法
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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。