Aktiveringsfunktioner för lager

Användning av aktiveringar

Aktiveringar kan antingen användas via ett Activation lager eller via activation argumentet som stöds av alla framåtriktade lager:

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

Detta motsvarar:

Alla inbyggda aktiveringar kan också skickas via deras strängidentifierare:

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

Available activations

relu function

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

Använder den rektifierade linjära enhetsaktiveringsfunktionen.

Med standardvärden returnerar detta den vanliga ReLU-aktiveringsfunktionen:max(x, 0), det elementvisa maximumet av 0 och den ingående tensorn.

Modifiera standardparametrarna gör det möjligt att använda tröskelvärden som inte är noll, ändra aktiveringens maxvärde och att använda en multipel av ingången som inte är noll för värden under tröskelvärdet.

Till exempel:

Argument

  • x: tensor eller variable.
  • alfa: Inmatning tensor eller variable.
  • alfa: float som styr lutningen för värden som är lägre än tröskelvärdet.
  • max_value: En float som fastställer mättnadströskeln (det största värdet som funktionen returnerar).
  • tröskel: En float som fastställer mättnadströskeln (det största värdet som funktionen returnerar): En float som anger aktiveringsfunktionens tröskelvärde under vilket värden kommer att dämpas eller sättas till noll.

Returnerar

En Tensor som representerar den inmatade tensorn, transformerad av relu-aktiveringsfunktionen.Tensorn kommer att ha samma form och d-typ som indata x.

Sigmoidfunktion

tf.keras.activations.sigmoid(x)

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

Använder sigmoidaktiveringsfunktionen. För små värden (<-5) ger sigmoid ett värde nära noll, och för stora värden (>5)blir resultatet av funktionen nära 1.

Sigmoid är likvärdigt med en Softmax med två element, där det andra elementet antas vara noll. Sigmoidfunktionen returnerar alltid ett värde mellan0 och 1.

Till exempel:

Argument

  • x:

Returnerar

  • Tensor med sigmoidaktivering: 1 / (1 + exp(-x)).

softmax-funktion

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

Softmax omvandlar en reell vektor till en vektor med kategoriska sannolikheter.

Utgångsvektorns element ligger i intervallet (0, 1) och summerar till 1.

Varje vektor hanteras oberoende. Argumentet axis anger vilken axel av inmatningen som funktionen tillämpas längs.

Softmax används ofta som aktivering för det sista lagret i ett klassificeringsnätverk eftersom resultatet kan tolkas som en sannolikhetsfördelning.

Softmax för varje vektor x beräknas somexp(x) / tf.reduce_sum(exp(x)).

Ingångsvärdena i är log-odds för den resulterande sannolikheten.

Argument

  • x : Ingångstensor.
  • axis: Hela tal, axel längs vilken softmax-normaliseringen tillämpas.

Returnerar

Tensor, utgång från softmax-transformationen (alla värden är icke-negativa och summerar till 1).

Raisar

  • ValueError: I fall dim(x) == 1.

softplus-funktion

tf.keras.activations.softplus(x)

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

Exempel Användning:

Argument

  • x:

Returnerar

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

softsign-funktion

tf.keras.activations.softsign(x)

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

Exempel Användning:

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

Argument

  • x:

Returnerar

  • Aktiveringen av softsign: x / (abs(x) + 1).

tanh-funktionen

tf.keras.activations.tanh(x)

Hyperbolisk tangent aktiveringsfunktion.

Till exempel:

Argument

  • x:

Returnerar

  • Tensor av samma form och d-typ som input x, med tanh-aktivering: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).

Aktiveringsfunktionen för den skalade exponentiella linjära enheten (SELU) definieras som:

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

där alpha och scale är fördefinierade konstanter(alpha=1.67326324 och scale=1.05070098).

Selu-aktiveringsfunktionen multiplicerar scale (> 1) med tf.keras.activations.elu-funktionens utgång för att säkerställa en lutning som är större än ett för positiva ingångar.

Värdena för alpha och scale väljs så att ingångsvärdenas medelvärde och varians bevaras mellan två på varandra följande lager så länge som vikterna initieras korrekt (se tf.keras.initializers.LecunNormal initialiserare)och antalet ingångsenheter är ”tillräckligt stort” (se referensdokumentet för mer information).

Exempel på användning:

Argument

  • x: En tensor eller variabel som aktiveringsfunktionen ska beräknas för.

Returnerar

  • Den skalade exponentiella enhetsaktiveringen: scale * elu(x, alpha).

Notes: – Används tillsammans med initialiseraren tf.keras.initializers.LecunNormal. – Ska användas tillsammans med dropoutvarianten tf.keras.layers.AlphaDropout (inte vanlig dropout).

Referenser: – Klambauer et al., 2017

elu-funktion

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

Exponentiell linjär enhet.

Den exponentiella linjära enheten (ELU) med alpha > 0 är:x om x > 0 ochalpha * (exp(x) - 1) om x < 0Hyperparametern alpha för ELU kontrollerar det värde till vilket enELU mättar för negativa nettoinflöden. ELU:er minskar den avtagande gradienteffekten.

ELU:er har negativa värden, vilket gör att medelvärdet av aktiveringarna närmar sig noll.Medelvärden av aktiveringar som närmar sig noll möjliggör snabbare inlärning eftersom de för gradienten närmare den naturliga gradienten.ELUs mättas till ett negativt värde när argumentet blir mindre.Mättnad innebär en liten derivat vilket minskar variationenoch den information som sprids till nästa lager.

Exempel på användning:

Argument

  • x:
  • alpha: En skalär, lutning med negativ sektion. alpha styr värdet till vilket en ELU mättar för negativa nätingångar.

Returnerar

  • Aktiveringsfunktionen för exponentiell linjär enhet (ELU): x om x > 0 ochalpha * (exp(x) - 1) om x < 0.

Referens:

exponentiell funktion

tf.keras.activations.exponential(x)

Exponentiell aktiveringsfunktion.

Exponentiell aktiveringsfunktion.

Till exempel:

Argument

  • x:

Returnerar

  • Tensor med exponentiell aktivering: exp(x).

Skapa egna aktiveringar

Du kan också använda en TensorFlow-callable som aktivering (i det här fallet ska den ta en tensor och returnera en tensor av samma form och d-typ):

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

Om ”avancerade aktiveringslager”

Aktiveringar som är mer komplexa än en enkel TensorFlow-funktion (t.ex. inlärningsbara aktiveringar som upprätthåller ett tillstånd) är tillgängliga som avancerade aktiveringslager och finns i modulen tf.keras.layers.advanced_activations. Dessa inkluderar PReLU och LeakyReLU.Om du behöver en anpassad aktivering som kräver ett tillstånd bör du implementera den som ett anpassat lager.

Notera att du inte bör skicka aktiveringslagerinstanser som activation-argument för ett lager.De är tänkta att användas precis som vanliga lager, t.ex.:

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

Lämna ett svar

Din e-postadress kommer inte publiceras.