Le tutoriel qui sert de référence pour celui-ci est Preparing features and labels de Sequences, Time Series and Prediction (Coursera/Semaine 2).
Les données sont préparées de la façon suivante :
def windowed_dataset(series, window_size, batch_size, shuffle_buffer):
dataset = tf.data.Dataset.from_tensor_slices(series)
dataset = dataset.window(window_size + 1, shift=1, drop_remainder=True)
dataset = dataset.flat_map(lambda window: window.batch(window_size + 1))
dataset = dataset.shuffle(shuffle_buffer).map(lambda window: (window[:-1], window[-1]))
dataset = dataset.batch(batch_size).prefetch(1)
return dataset
Tout d’abord on crée le dataset. Voir cet article pour tensor_slice.
dataset = tf.data.Dataset.from_tensor_slices(series)
Ensuite on window les données. Le +1 c’est pour le label.
dataset = dataset.window(window_size + 1, shift=1, drop_remainder=True)
Ensuite on applique un flat_map. Le but est de modifier la structure des données afin qu’elle soit compatible avec les réseaux de neurones.
dataset = dataset.flat_map(lambda window: window.batch(window_size + 1))
Puis on shuffle les données et on les split pour avoir les labels.
dataset = dataset.shuffle(shuffle_buffer).map(lambda window: (window[:-1], window[-1]))
et on termine par créer des batchs.
dataset = dataset.batch(batch_size).prefetch(1)
Creates a Dataset
whose elements are slices of the given tensors