Machine Learning: TensorFlow 2.11 vollendet die Keras-Optimierer-Migration
Neben der Migration der Keras-Optimizer-API kann das neue Release einen experimentellen StructuredTensor vorweisen. Python 3.7 fällt bald aus dem Support.
Google hat Version 2.11 seines Machine-Learning-Frameworks TensorFlow veröffentlicht. Das Minor Release bringt einen neuen Gruppennormalisierungs-Layer, Neuerungen für TensorFlow Decision Forests sowie einen experimentellen StructuredTensor und stabilisiert die Keras-Optimizer-API. Mit Python 3.7 lässt sich TensorFlow bald nicht mehr verwenden: In der nächsten Version soll aufgrund der Aktualisierung der Python-Bibliothek NumPy und einer damit einhergehenden Inkompatibilität der Support dafür entfallen.
Keras-Optimizer-API entwächst dem experimentellen Status
Die mit TensorFlow 2.9 zunächst als experimentell eingeführte Keras-Optimizer-API tf.keras.optimizers.experimental
hat den stabilen Status erreicht. Hinter ihrer EinfĂĽhrung stand das Ziel, einen einheitlicheren und erweiterten Katalog integrierter Optimierer zu bieten, die sich einfacher anpassen und erweitern lassen.
Die alten Keras-Optimierer-APIs sind weiterhin vorhanden und unter tf.keras.optimizers.legacy
zu finden. Sie sollen laut Google dauerhaft bestehen bleiben: "These will never be deleted." Neue Features sollen sie jedoch nicht mehr erhalten. Neue Optimierer werden auf der neuen Basisklasse tf.keras.optimizers.Optimizer
aufbauen. Diese Änderung soll nur wenige Nutzer betreffen. Sollte es aber zu fehlschlagenden Workflows kommen, können Entwicklerinnen und Entwickler die Release Notes und die API-Dokumentation zu Rate ziehen.
Experimenteller Umgang mit strukturierten Daten
Die experimentelle Klasse tf.experimental.StructuredTensor
hat in TensorFlow 2.11 Einzug gehalten. Sie soll eine flexible und TensorFlow-native Möglichkeit zum Enkodieren strukturierter Daten bieten, darunter Protocol Buffers oder Pandas DataFrames. StructuredTensor erlaubt das Schreiben lesbaren Codes, der sich mit tf.function, Keras und tf.data nutzen lässt. Dieser kann beispielsweise wie folgt aussehen, wie der TensorFlow-Blog zeigt:
documents = tf.constant([
"Hello world",
"StructuredTensor is cool"])
@tf.function
def parse_document(documents):
tokens = tf.strings.split(documents)
token_lengths = tf.strings.length(tokens)
ext_tokens = tf.experimental.StructuredTensor.from_fields_and_rank(
{"tokens":tokens,
"length":token_lengths}, rank=documents.shape.rank + 1)
return tf.experimental.StructuredTensor.from_fields_and_rank({
"document":documents,
"tokens":ext_tokens}, rank=documents.shape.rank)
st = parse_document(documents)
Der Zugriff auf einen StructuredTensor ist via Index oder Feldname möglich. Details zum Umgang mit der experimentellen Klasse bietet ihre Dokumentation.
Gruppennormalisierung und Entscheidungsbäume
Der neue Gruppennormalisierungs-Layer keras.layers.GroupNormalization
steht nun in TensorFlow bereit. Gruppennormalisierung teilt Channel in Gruppen und berechnet in jeder Gruppe den Mittelwert und die Varianz zur Normalisierung. Dieses Vorgehen soll unter Umständen eine stabilere Genauigkeit erzielen als Batch-Normalisierung. Das TensorFlow-Team zeigt verschiedene Normalisierungstechniken:
Neuerungen gibt es auch fĂĽr TensorFlow Decision Forests (TF-DF), die im letzten Release Version 1.0 erreichten: TensorFlow Serving bietet nun nativen Support fĂĽr TF-DF-Modelle. Bei TensorFlow Serving, kurz TF Serving, handelt es sich um ein Tool zur Online-AusfĂĽhrung von TensorFlow-Modellen in groĂźen Produktions-Settings mittels einer RPC- oder REST-API.
TensorFlow Lite, eine mobile Library zum Deployen von Modellen auf Mobilgeräten, Mikrocontrollern und weiteren Edge-Geräten, hat ebenfalls Features hinzugewonnen. Dazu zählen die neuen Operationen tf.unsorted_segment_min
, tf.atan2
und tf.sign
.
Diese und weitere Ă„nderungen beschreiben ein TensorFlow-Blogeintrag und die Release Notes auf GitHub im Detail.
(mai)