Gebruik van activeringen
Activeringen kunnen worden gebruikt via een Activation
-laag, of via het activation
-argument dat door alle voorwaartse lagen wordt ondersteund:
model.add(layers.Dense(64, activation=activations.relu))
Dit is equivalent aan:
Alle ingebouwde activeringen kunnen ook worden doorgegeven via hun string-identifier:
model.add(layers.Dense(64, activation='relu'))
Beschikbare activeringen
relu-functie
tf.keras.activations.relu(x, alpha=0.0, max_value=None, threshold=0)
Past de gerectificeerde lineaire eenheidsactiveringsfunctie toe.
Met standaardwaarden geeft dit de standaard ReLU-activatie:max(x, 0)
, het element-gewogen maximum van 0 en de invoertensor.
Door de standaardparameters te wijzigen, kunt u drempels zonder nul gebruiken, de maximumwaarde van de activering wijzigen en een veelvoud zonder nul van de invoer gebruiken voor waarden onder de drempel.
Voorbeeld:
Argumenten
- x: Invoer
tensor
ofvariable
. - alpha: Een
float
die de helling regelt voor waarden lager dan de drempel. - max_value: Een
float
die de verzadigingsdrempel bepaalt (de grootste waarde die de functie zal retourneren). - threshold: Een
float
die de drempelwaarde van de activeringsfunctie geeft waaronder waarden zullen worden gedempt of op nul gezet.
Returns
Een Tensor
die de input tensor vertegenwoordigt, getransformeerd door de relu activeringsfunctie.De tensor heeft dezelfde vorm en hetzelfde d-type als de invoer x
.
sigmoid-functie
tf.keras.activations.sigmoid(x)
Sigmoid-activeringsfunctie, sigmoid(x) = 1 / (1 + exp(-x))
.
Realiseert de sigmoid-activeringsfunctie. Voor kleine waarden (<-5), sigmoid
retourneert een waarde dicht bij nul, en voor grote waarden (>5)komt het resultaat van de functie dicht bij 1.
Sigmoid is equivalent aan een 2-element Softmax, waarbij het tweede element wordt verondersteld nul te zijn. De sigmoid-functie retourneert altijd een waarde tussen 0 en 1.
Voorbeeld:
Argumenten
- x: Input tensor.
Returns
- Tensor met de sigmoïde activering:
1 / (1 + exp(-x))
.
softmax-functie
tf.keras.activations.softmax(x, axis=-1)
Softmax converteert een reële vector in een vector van categorische waarschijnlijkheden.
De elementen van de uitgangsvector liggen in het bereik (0, 1) en zijn opgeteld 1.
Elke vector wordt onafhankelijk behandeld. Het argument axis
bepaalt langs welke as van de invoer de functie wordt toegepast.
Softmax wordt vaak gebruikt als activering voor de laatste laag van een classificatienetwerk omdat het resultaat kan worden geïnterpreteerd als een waarschijnlijkheidsverdeling.
De softmax van elke vector x wordt berekend alsexp(x) / tf.reduce_sum(exp(x))
.
De invoerwaarden in zijn de log-odds van de resulterende waarschijnlijkheid.
Argumenten
- x : Invoert tensor.
- as: Integer, as waarlangs de softmax-normalisatie wordt toegepast.
Returns
Tensor, uitvoer van softmax-transformatie (alle waarden zijn niet-negatief en sommeren tot 1).
Raises
- ValueError: In geval
dim(x) == 1
.
softplusfunctie
tf.keras.activations.softplus(x)
Softplus activeringsfunctie, softplus(x) = log(exp(x) + 1)
.
Voorbeeldgebruik:
Argumenten
- x: Input tensor.
Returns
- De softplus activering:
log(exp(x) + 1)
.
softsign functie
tf.keras.activations.softsign(x)
Softsign activeringsfunctie, softsign(x) = x / (abs(x) + 1)
.
Voorbeeld Gebruik:
>>> a = tf.constant(, dtype = tf.float32)>>> b = tf.keras.activations.softsign(a)>>> b.numpy()array(, dtype=float32)
Argumenten
- x: Input tensor.
Returns
- De softsign activering:
x / (abs(x) + 1)
.
tanh functie
tf.keras.activations.tanh(x)
Hyperbolische tangens activeringsfunctie.
Voorbeeld:
Argumenten
- x: Input tensor.
Returns
- Tensor van dezelfde vorm en d-type van input
x
, met tanh activering:tanh(x) = sinh(x)/cosh(x) = ((exp(x) - exp(-x))/(exp(x) + exp(-x)))
.
selu functie
tf.keras.activations.selu(x)
Scaled Exponential Linear Unit (SELU).
De activeringsfunctie voor de geschaalde exponentiële lineaire eenheid (SELU) is gedefinieerd als:
if x > 0: return scale * x
if x < 0: return scale * alpha * (exp(x) - 1)
waar alpha
en scale
vooraf gedefinieerde constanten zijn (alpha=1.67326324
en scale=1.05070098
).
In principe vermenigvuldigt de SELU-activeringsfunctie scale
(> 1) met de uitvoer van de tf.keras.activations.elu
-functie om te zorgen dat de helling groter is dan één voor positieve invoer.
De waarden van alpha
en scale
zijn zo gekozen dat het gemiddelde en de variantie van de ingangen tussen twee opeenvolgende lagen behouden blijven zolang de gewichten correct zijn geïnitialiseerd (zie tf.keras.initializers.LecunNormal
initialisator) en het aantal ingangseenheden “groot genoeg” is (zie referentiedocument voor meer informatie).
Voorbeeld Gebruik:
Argumenten
- x: Een tensor of variabele om de activeringsfunctie voor te berekenen.
Returns
- De geschaalde exponentiële eenheidsactivering:
scale * elu(x, alpha)
.
Notes: – Te gebruiken in combinatie met de tf.keras.initializers.LecunNormal
-initialisator. – Te gebruiken samen met de dropout variant tf.keras.layers.AlphaDropout
(niet reguliere dropout).
Referenties: – Klambauer et al., 2017
elu-functie
tf.keras.activations.elu(x, alpha=1.0)
Exponentiële lineaire eenheid.
De exponentiële lineaire eenheid (ELU) met alpha > 0
is:x
als x > 0
enalpha * (exp(x) - 1)
als x < 0
De ELU-hyperparameter alpha
regelt de waarde tot waar eenELU verzadigt voor negatieve netto-inputs. ELU’s verminderen het gradiënteffect.
ELU’s hebben negatieve waarden waardoor het gemiddelde van de activeringen dichter bij nul wordt gebracht.Gemiddelde activeringen die dichter bij nul liggen maken sneller leren mogelijk omdat zij de gradiënt dichter bij de natuurlijke gradiënt brengen.ELU’s verzadigen naar een negatieve waarde wanneer het argument kleiner wordt. Verzadiging betekent een kleine afgeleide die de variatie vermindert en de informatie die naar de volgende laag wordt doorgegeven.
Exemplaargebruik:
Argumenten
- x: Invoert tensor.
- alpha: Een scalar, helling van negatieve sectie.
alpha
regelt de waarde waarnaar een ELU verzadigt voor negatieve netinputs.
Returns
- De activeringsfunctie van de exponentiële lineaire eenheid (ELU):
x
alsx > 0
enalpha * (exp(x) - 1)
alsx < 0
.
Referentie: Fast and Accurate Deep Network Learning by Exponential Linear Units (ELUs) (Clevert et al, 2016)
exponentiële functie
tf.keras.activations.exponential(x)
Exponentiële activeringsfunctie.
Voorbeeld:
Argumenten
- x: Input tensor.
Returns
- Tensor met exponentiële activering:
exp(x)
.
Op maat gemaakte activaties
U kunt ook een TensorFlow calllable als activatie gebruiken (in dit geval moet deze een tensor nemen en een tensor van dezelfde vorm en dtype retourneren):
model.add(layers.Dense(64, activation=tf.nn.tanh))
Over “geavanceerde activatie”-lagen
Activaties die complexer zijn dan een eenvoudige TensorFlow-functie (bijv. leerbare activeringen, die een toestand behouden) zijn beschikbaar als Geavanceerde activeringslagen, en kunnen worden gevonden in de module tf.keras.layers.advanced_activations
. Deze omvatten PReLU
en LeakyReLU
.Als u een aangepaste activering nodig hebt die een toestand vereist, moet u deze implementeren als een aangepaste laag.
Merk op dat u geen activeringslagen instanties moet doorgeven als het activation
argument van een laag.Ze zijn bedoeld om net als gewone lagen te worden gebruikt, bijvoorbeeld:
x = layers.Dense(10)(x)x = layers.LeakyReLU()(x)