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
ellervariable
. - 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 < 0
Den 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
hvisx > 0
ogalpha * (exp(x) - 1)
hvisx < 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)