Vue d'ensemble

TensorFlow 2.10, publié le 7 septembre 2022, améliore le noyau Keras et introduit le bucketing pour un entraînement plus efficace.

Fonctionnalités principales

Keras core amélioré

Le noyau Keras bénéficie de refactorisations internes pour de meilleures performances et une API plus cohérente entre les backends.

python
import tensorflow as tf

model = tf.keras.Sequential([
    tf.keras.layers.Dense(256, activation='relu'),
    tf.keras.layers.Dropout(0.3),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(10, activation='softmax'),
])

model.compile(
    optimizer='adam',
    loss='sparse_categorical_crossentropy',
    metrics=['accuracy'],
)

Bucketing

Le bucketing regroupe les exemples de taille similaire dans les mêmes batches, réduisant le padding et accélérant l'entraînement sur les séquences.

python
import tensorflow as tf

# Bucketing pour séquences de longueur variable
dataset = tf.data.Dataset.from_generator(
    lambda: ({'text': tf.random.uniform([l], maxval=100, dtype=tf.int32)}
             for l in range(5, 50)),
    output_signature={'text': tf.TensorSpec([None], tf.int32)},
)

# Regrouper par taille similaire
bucketed = dataset.bucket_by_sequence_length(
    lambda x: tf.shape(x['text'])[0],
    bucket_boundaries=[10, 20, 30],
    bucket_batch_sizes=[8, 4, 2, 1],
)

Sources