Activeringsfuncties voor lagen

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 of variable.
  • 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 < 0De 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 als x > 0 enalpha * (exp(x) - 1) als x < 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)

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.