Lagaktiveringsfunktioner

Brug af aktiveringer

Aktiveringer kan enten bruges via et Activation lag eller via activation argumentet, der understøttes af alle fremadrettede lag:

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

Dette svarer til:

Alle indbyggede aktiveringer kan også overføres via deres string-identifikator:

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

Afailable activations

relu-funktion

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

Anvender den rektificerede lineære enhedsaktiveringsfunktion.

Med standardværdier returnerer dette den standard ReLU-aktiveringsfunktion:max(x, 0), det elementvise maksimum af 0 og inputtenoren.

Modificering af standardparametre giver dig mulighed for at bruge tærskelværdier, der ikke er nul, ændre aktiveringens maks. værdi og bruge et multiplum af input, der ikke er nul, for værdier under tærskelværdien.

For eksempel:

Argumenter

  • x: Indtastning tensor eller variable.
  • alpha: En float, der styrer hældningen for værdier, der er lavere end tærsklen.
  • max_value: En float, der fastsætter mætningstærsklen (den største værdi, som funktionen returnerer).
  • tærskel: En float, der angiver aktiveringsfunktionens tærskelværdi, under hvilken værdierne vil blive dæmpet eller sat til nul.

Returnerer

En Tensor, der repræsenterer den indgangstensor,transformeret af relu-aktiveringsfunktionen.Tensor vil have samme form og dtype som input x.

sigmoidfunktion

tf.keras.activations.sigmoid(x)

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

Anvender sigmoidaktiveringsfunktionen. For små værdier (<-5) giver sigmoid en værdi tæt på nul, og for store værdier (>5)kommer resultatet af funktionen tæt på 1.

Sigmoid svarer til en 2-element Softmax, hvor det andet element antages at være nul. Sigmoid-funktionen returnerer altid en værdi mellem0 og 1.

For eksempel:

Argumenter

  • x: Indgangstensor.

Returnerer

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

softmax-funktion

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

Softmax konverterer en reel vektor til en vektor af kategoriske sandsynligheder.

Elementerne i udgangsvektoren er i intervallet (0, 1) og summerer til 1.

Hver vektor behandles uafhængigt af hinanden. axis-argumentet angiver, hvilken akse af inputfunktionen der anvendes langs.

Softmax anvendes ofte som aktivering for det sidste lag i et klassificeringsnetværk, fordi resultatet kan fortolkes som en sandsynlighedsfordeling.

Softmax for hver vektor x beregnes somexp(x) / tf.reduce_sum(exp(x)).

Inputværdierne i er log-odds for den resulterende sandsynlighed.

Argumenter

  • x : Input tensor.
  • axis: Heltal, akse, langs hvilken softmax-normaliseringen anvendes.

Returnerer

Tensor, output af softmax-transformationen (alle værdier er ikke-negative og summerer til 1).

Raviser

  • ValueError: I tilfælde dim(x) == 1.

softplus-funktion

tf.keras.activations.softplus(x)

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

Eksempel Anvendelse:

Argumenter

  • x: Indgangstensor.

Returnerer

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

softsign-funktion

tf.keras.activations.softsign(x)

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

Eksempel Anvendelse:

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

Argumenter

  • x: Indgangstensor.

Returnerer

  • Aktivering af softsign: x / (abs(x) + 1).

tanh-funktionen

tf.keras.activations.tanh(x)

Hyperbolisk tangent aktiveringsfunktion.

For eksempel:

Argumenter

  • x: Indgangstensor.

Returnerer

  • Tensor med samme form og d-type 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 Scaled Exponential Linear Unit (SELU) er defineret som:

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

hvor alpha og scale er foruddefinerede konstanter(alpha=1.67326324 og scale=1.05070098).

Grundlæggende multiplicerer SELU-aktiveringsfunktionen scale (> 1) med output af tf.keras.activations.elu-funktionen for at sikre en hældning større end 1 for positive input.

Værdierne af alpha og scale er valgt således, at middelværdien og variansen af indgangene bevares mellem to på hinanden følgende lag, så længe vægtene er initialiseret korrekt (se tf.keras.initializers.LecunNormal initialisator)og antallet af indgangsenheder er “stort nok” (se referencepapiret for yderligere oplysninger).

Eksempel på brug:

Argumenter

  • x: En tensor eller variabel, som aktiveringsfunktionen skal beregnes for.

Returnerer

  • Den skalerede eksponentielle enhedsaktivering: scale * elu(x, alpha).

Notes: – Skal bruges sammen med initialisatoren tf.keras.initializers.LecunNormal. – Skal anvendes sammen med udfaldsvarianten tf.keras.layers.AlphaDropout (ikke almindelig udfald).

Referencer: – Klambauer et al., 2017

elu-funktion

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

Eksponentiel lineær enhed.

Den eksponentielle lineære enhed (ELU) med alpha > 0 er:x hvis x > 0 ogalpha * (exp(x) - 1) hvis x < 0Den ELU-hyperparameter alpha styrer den værdi, til hvilken enELU mætter for negative nettoinput. ELU’er mindsker den aftagende gradientvirkning.

ELU’er har negative værdier, hvilket skubber middelværdien af aktiveringerne tættere på nul.Gennemsnitlige aktiveringer, der er tættere på nul, muliggør hurtigere indlæring, da de bringer gradienten tættere på den naturlige gradient.ELU’er mættes til en negativ værdi, når argumentet bliver mindre.Mætning betyder en lille afledning, hvilket mindsker variationenog den information, der overføres til det næste lag.

Eksempel på anvendelse:

Argumenter

  • x: Input tensor.
  • alpha: En skalar, hældning af negativt snit. alpha styrer den værdi, som en ELU mætter for negative netindgange.

Returnerer

  • Den eksponentielle lineære enhed (ELU) aktiveringsfunktion: x hvis x > 0 ogalpha * (exp(x) - 1) hvis x < 0.

Reference: x hvis x > 0 ogalpha * (exp(x) - 1) hvis x < 0.

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

eksponentiel funktion

tf.keras.activations.exponential(x)

Eksponentiel aktiveringsfunktion.

For eksempel:

Argumenter

  • x: Indgangstensor.

Returnerer

  • Tensor med eksponentiel aktivering: exp(x).

Oprettelse af brugerdefinerede aktiveringer

Du kan også bruge en TensorFlow callable som en aktivering(i dette tilfælde skal den tage en tensor og returnere en tensor af samme form og dtype):

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

Om “avancerede aktiveringslag”

Aktiveringer, der er mere komplekse end en simpel TensorFlow-funktion (f.eks. lærbare aktiveringer, som opretholder en tilstand) er tilgængelige som avancerede aktiveringslag og kan findes i modulet tf.keras.layers.advanced_activations. Disse omfatter PReLU og LeakyReLU.Hvis du har brug for en brugerdefineret aktivering, der kræver en tilstand, skal du implementere den som et brugerdefineret lag.

Bemærk, at du ikke skal videregive aktiveringslaginstanser som activation-argumentet for et lag.De skal bruges ligesom almindelige lag, f.eks.:

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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.