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
ellervariable
. - alfa: Inmatning
tensor
ellervariable
. - 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): Enfloat
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 < 0
Hyperparametern 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
omx > 0
ochalpha * (exp(x) - 1)
omx < 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)