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.

In Pocket speichern vorlesen Druckansicht

(Bild: sdecoret/Shutterstock.com)

Lesezeit: 3 Min.
Von
  • Maika Möbus
Inhaltsverzeichnis

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.

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.

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.

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:

Unterschiede zwischen verschiedenen Normalisierungstechniken

(Bild: Google)

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)