Schicht-Aktivierungsfunktionen

Verwendung von Aktivierungen

Aktivierungen können entweder über eine Activation-Schicht oder über das activation-Argument verwendet werden, das von allen Vorwärtsschichten unterstützt wird:

model.add(layers.Dense(64, activation=activations.relu))

Das entspricht:

Alle eingebauten Aktivierungen können auch über ihren String-Bezeichner übergeben werden:

model.add(layers.Dense(64, activation='relu'))

Verfügbare Aktivierungen

relu-Funktion

tf.keras.activations.relu(x, alpha=0.0, max_value=None, threshold=0)

Wendet die gleichgerichtete lineare Einheitsaktivierungsfunktion an.

Mit Standardwerten gibt dies die Standard-ReLU-Aktivierung zurück:max(x, 0), das elementweise Maximum von 0 und den Eingabetensor.

Durch Ändern der Standardparameter können Sie Schwellenwerte ungleich Null verwenden, den Maximalwert der Aktivierung ändern und ein Vielfaches der Eingabe ungleich Null für Werte unterhalb des Schwellenwerts verwenden.

Beispiel:

Argumente

  • x: Eingabe tensor oder variable.
  • alpha: Ein float, das die Steigung für Werte unterhalb des Schwellenwerts festlegt.
  • max_value: Ein float, der den Sättigungsschwellenwert festlegt (den größten Wert, den die Funktion zurückgibt).
  • threshold: Ein float, der den Schwellenwert der Aktivierungsfunktion angibt, unterhalb dessen Werte gedämpft oder auf Null gesetzt werden.

Returns

Ein Tensor, der den Eingabetensor darstellt, der durch die Relu-Aktivierungsfunktion transformiert wird.Der Tensor hat die gleiche Form und den gleichen Typ wie die Eingabe x.

Sigmoidfunktion

tf.keras.activations.sigmoid(x)

Sigmoidaktivierungsfunktion, sigmoid(x) = 1 / (1 + exp(-x)).

Wendet die Sigmoidaktivierungsfunktion an. Für kleine Werte (<-5) gibt sigmoid einen Wert nahe Null zurück, und für große Werte (>5) liegt das Ergebnis der Funktion nahe bei 1.

Sigmoid entspricht einer 2-Element-Softmax, wobei das zweite Element als Null angenommen wird. Die Sigmoid-Funktion liefert immer einen Wert zwischen0 und 1.

Beispiel:

Argumente

  • x: Eingabe Tensor.

Returns

  • Tensor mit der sigmoiden Aktivierung: 1 / (1 + exp(-x)).

Softmax-Funktion

tf.keras.activations.softmax(x, axis=-1)

Softmax wandelt einen reellen Vektor in einen Vektor kategorischer Wahrscheinlichkeiten um.

Die Elemente des Ausgabevektors liegen im Bereich (0, 1) und summieren sich zu 1.

Jeder Vektor wird unabhängig behandelt. Das Argument axis legt fest, entlang welcher Achse der Eingabe die Funktion angewendet wird.

Softmax wird oft als Aktivierung für die letzte Schicht eines Klassifikationsnetzes verwendet, da das Ergebnis als Wahrscheinlichkeitsverteilung interpretiert werden kann.

Die Softmax eines jeden Vektors x wird berechnet alsexp(x) / tf.reduce_sum(exp(x)).

Die Eingabewerte in sind die logarithmischen Quoten der resultierenden Wahrscheinlichkeit.

Argumente

  • x : Eingabetensor.
  • axis: Integer, Achse, entlang der die Softmax-Normalisierung angewendet wird.

Returns

Tensor, Ausgabe der Softmax-Transformation (alle Werte sind nicht-negativ und summieren sich zu 1).

Raises

  • ValueError: Im Fall dim(x) == 1.

Softplus-Funktion

tf.keras.activations.softplus(x)

Softplus-Aktivierungsfunktion, softplus(x) = log(exp(x) + 1).

Beispiel Verwendung:

Argumente

  • x: Eingabetensor.

Returns

  • Die Softplus-Aktivierung: log(exp(x) + 1).

Softsign-Funktion

tf.keras.activations.softsign(x)

Softsign-Aktivierungsfunktion, softsign(x) = x / (abs(x) + 1).

Beispiel Verwendung:

>>> a = tf.constant(, dtype = tf.float32)>>> b = tf.keras.activations.softsign(a)>>> b.numpy()array(, dtype=float32)

Argumente

  • x: Input-Tensor.

Returns

  • Die Softsign-Aktivierung: x / (abs(x) + 1).

tanh-Funktion

tf.keras.activations.tanh(x)

Hyperbolische Tangens-Aktivierungsfunktion.

Beispiel:

Argumente

  • x: Eingabe-Tensor.

Returns

  • Tensor der gleichen Form und dtype der Eingabe x, mit tanh-Aktivierung:tanh(x) = sinh(x)/cosh(x) = ((exp(x) - exp(-x))/(exp(x) + exp(-x))).

selu-Funktion

tf.keras.activations.selu(x)

Scaled Exponential Linear Unit (SELU).

Die SELU-Aktivierungsfunktion (Scaled Exponential Linear Unit) ist definiert als:

  • if x > 0: return scale * x
  • if x < 0: return scale * alpha * (exp(x) - 1)

wobei alpha und scale vordefinierte Konstanten sind (alpha=1.67326324 und scale=1.05070098).

Grundsätzlich multipliziert die SELU-Aktivierungsfunktion scale (> 1) mit dem Ausgang der tf.keras.activations.elu-Funktion, um eine Steigung größer als 1 für positive Eingaben zu gewährleisten.

Die Werte von alpha und scale werden so gewählt, dass der Mittelwert und die Varianz der Eingaben zwischen zwei aufeinanderfolgenden Schichten erhalten bleiben, solange die Gewichte korrekt initialisiert werden (siehe tf.keras.initializers.LecunNormal Initialisierer) und die Anzahl der Eingabeeinheiten „groß genug“ ist (siehe Referenzpapier für weitere Informationen).

Beispiel Verwendung:

Argumente

  • x: Ein Tensor oder eine Variable, für die die Aktivierungsfunktion berechnet werden soll.

Returns

  • Die skalierte exponentielle Einheitsaktivierung: scale * elu(x, alpha).

Notes: – Wird zusammen mit dem Initialisierer tf.keras.initializers.LecunNormal verwendet. – Zu verwenden zusammen mit der Dropout-Variante tf.keras.layers.AlphaDropout (nicht regulärer Dropout).

Referenzen: – Klambauer et al., 2017

elu function

tf.keras.activations.elu(x, alpha=1.0)

Exponential Linear Unit.

Die exponentielle lineare Einheit (ELU) mit alpha > 0 ist:x wenn x > 0 undalpha * (exp(x) - 1) wenn x < 0Der ELU-Hyperparameter alpha steuert den Wert, bis zu dem eineELU für negative Nettoeingaben sättigt. ELUs vermindern den Effekt des ansteigenden Gradienten.

ELUs haben negative Werte, die den Mittelwert der Aktivierungen näher an Null bringen.Mittlere Aktivierungen, die näher an Null sind, ermöglichen schnelleres Lernen, da sie den Gradienten näher an den natürlichen Gradienten bringen.ELUs sättigen auf einen negativen Wert, wenn das Argument kleiner wird.Sättigung bedeutet eine kleine Ableitung, die die Variation und die Information, die an die nächste Schicht weitergegeben wird, verringert.

Beispiel Verwendung:

Argumente

  • x: Eingangstensor.
  • alpha: Ein Skalar, Steigung des negativen Abschnitts. alpha steuert den Wert, bis zu dem eine ELU bei negativen Netzeingaben in die Sättigung geht.

Returns

  • Die Aktivierungsfunktion der exponentiellen linearen Einheit (ELU): x wenn x > 0 undalpha * (exp(x) - 1) wenn x < 0.

Referenz: Fast and Accurate Deep Network Learning by Exponential Linear Units (ELUs) (Clevert et al, 2016)

Exponentialfunktion

tf.keras.activations.exponential(x)

Exponentielle Aktivierungsfunktion.

Beispiel:

Argumente

  • x: Eingabe Tensor.

Returns

  • Tensor mit exponentieller Aktivierung: exp(x).

Erstellen von benutzerdefinierten Aktivierungen

Sie können auch eine TensorFlow Callable als Aktivierung verwenden (in diesem Fall sollte sie einen Tensor nehmen und einen Tensor derselben Form und dtype zurückgeben):

model.add(layers.Dense(64, activation=tf.nn.tanh))

Über „fortgeschrittene Aktivierungs“-Schichten

Aktivierungen, die komplexer sind als eine einfache TensorFlow-Funktion (z.B.. lernfähige Aktivierungen, die einen Zustand beibehalten), sind als erweiterte Aktivierungsschichten verfügbar und können im Modul tf.keras.layers.advanced_activations gefunden werden. Dazu gehören PReLU und LeakyReLU.Wenn Sie eine benutzerdefinierte Aktivierung benötigen, die einen Zustand erfordert, sollten Sie sie als benutzerdefinierte Schicht implementieren.

Beachten Sie, dass Sie keine Aktivierungsschichten als activation Argument einer Schicht übergeben sollten.Sie sind dafür gedacht, wie normale Schichten verwendet zu werden, z.B.:

x = layers.Dense(10)(x)x = layers.LeakyReLU()(x)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.