Aktivační funkce vrstev

Použití aktivace

Aktivaci lze použít buď prostřednictvím vrstvy Activation, nebo prostřednictvím argumentu activation, který podporují všechny dopředné vrstvy:

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

Toto odpovídá:

Všechny vestavěné aktivace lze také předat prostřednictvím jejich řetězcového identifikátoru:

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

Dostupné aktivace

funkce relu

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

Použije rektifikovanou lineární aktivační funkci jednotky.

S výchozími hodnotami vrací standardní aktivaci ReLU:max(x, 0), elementární maximum 0 a vstupní tenzor.

Úprava výchozích parametrů umožňuje použít nenulové prahové hodnoty,změnit maximální hodnotu aktivace a použít nenulový násobek vstupu pro hodnoty pod prahem.

Například:

Argumenty

  • x: Vstup tensor nebo variable.
  • alfa: float, který řídí sklon pro hodnoty nižší než prahová hodnota.
  • max_value: float, který nastavuje práh nasycení (největší hodnotu, kterou funkce vrátí).
  • threshold: A float udávající prahovou hodnotu aktivační funkce, pod kterou budou hodnoty tlumeny nebo nastaveny na nulu.

Vrací

A Tensor představující vstupní tenzor,transformovaný aktivační funkcí relu.Tenzor bude mít stejný tvar a typ d vstupu x.

sigmoidní funkce

tf.keras.activations.sigmoid(x)

Sigmoidní aktivační funkce, sigmoid(x) = 1 / (1 + exp(-x)).

Použije sigmoidní aktivační funkci. Pro malé hodnoty (<-5),sigmoid vrací hodnotu blízkou nule a pro velké hodnoty (>5)se výsledek funkce blíží 1.

Sigmoid je ekvivalentní dvouprvkovému Softmaxu, kde se předpokládá, že druhý prvek je nulový. Funkce sigmoid vždy vrací hodnotu mezi0 a 1.

Například:

Argumenty

  • x:

Vrací

  • tenzor s aktivací sigmoidy: 1 / (1 + exp(-x)).

funkce softmax

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

Softmax převádí reálný vektor na vektor kategoriálních pravděpodobností.

Prvky výstupního vektoru jsou v rozsahu (0, 1) a jejich součet je 1.

Každý vektor se zpracovává nezávisle. Argument axis nastavuje, podél které osy vstupu se funkce aplikuje.

Softmax se často používá jako aktivace pro poslední vrstvu klasifikační sítě, protože výsledek lze interpretovat jako rozdělení pravděpodobnosti.

Softmax každého vektoru x se vypočítá jakoexp(x) / tf.reduce_sum(exp(x)).

Vstupní hodnoty v jsou logaritmy výsledné pravděpodobnosti.

Argumenty

  • x : Vstupní tenzor.
  • osa: Celé číslo, osa, podél které je aplikována normalizace softmax.

Vrací

Tenzor, výstup transformace softmax (všechny hodnoty jsou nezáporné a jejich součet je 1).

Raises

  • ValueError: V případě dim(x) == 1.

softplus funkce

tf.keras.activations.softplus(x)

aktivační funkce softplus, softplus(x) = log(exp(x) + 1).

Příklad použití:

Argumenty

  • x:

Vrací

  • Aktivace softplus: log(exp(x) + 1).

funkce softsign

tf.keras.activations.softsign(x)

Aktivační funkce softsign, softsign(x) = x / (abs(x) + 1).

Příklad použití:

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

Argumenty

  • x:

Vrací

  • Aktivace softsign: x / (abs(x) + 1).

funkce tanh

tf.keras.activations.tanh(x)

Hyperbolická aktivační funkce tangens.

Například:

Argumenty

  • x:

Vrací

  • tenzor stejného tvaru a typu d vstupu x, s aktivací tanh:tanh(x) = sinh(x)/cosh(x) = ((exp(x) - exp(-x))/(exp(x) + exp(-x))).

funkce selu

tf.keras.activations.selu(x)

Scaled Exponential Linear Unit (SELU).

Aktivační funkce SELU (Scaled Exponential Linear Unit) je definována jako:

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

kde alpha a scale jsou předem definované konstanty(alpha=1.67326324 a scale=1.05070098).

V podstatě aktivační funkce SELU násobí scale (> 1) svýstupem funkce tf.keras.activations.elu, aby zajistila sklon většínež jedna pro kladné vstupy.

Hodnoty alpha a scale jsouvoleny tak, že střední hodnota a rozptyl vstupů jsou zachoványmezi dvěma po sobě jdoucími vrstvami, pokud jsou váhy inicializoványsprávně (viz inicializátor tf.keras.initializers.LecunNormal)a počet vstupních jednotek je „dostatečně velký“(více informací viz referenční dokument).

Příklad použití:

Argumenty

  • x:

Vrací

  • Škálovanou exponenciální jednotkovou aktivaci: scale * elu(x, alpha).

Notes: – Používá se společně s inicializátorem tf.keras.initializers.LecunNormal. – Používá se společně s variantou vysazení tf.keras.layers.AlphaDropout (ne s běžným vysazením).

Reference: – Klambauer et al., 2017

funkce elu

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

Exponenciální lineární jednotka.

Exponenciální lineární jednotka (ELU) s alpha > 0 je:x pokud x > 0 aalpha * (exp(x) - 1) pokud x < 0Hiperparametr ELU alpha řídí hodnotu, na kterou se ELU nasytí pro záporné čisté vstupy. ELU snižují efekt klesajícího gradientu.

ELU mají záporné hodnoty, což posouvá střední hodnotu aktivacíblíže k nule.střední hodnoty aktivací, které jsou blíže nule, umožňují rychlejší učení, protože přibližují gradient přirozenému gradientu.ELU se nasytí na zápornou hodnotu, když se argument zmenší. nasycení znamená malou derivaci, která snižuje variacia informaci, která se šíří do další vrstvy.

Příklad použití:

Argumenty

  • x:
  • alfa: Vstupní tenzor: Skalár, sklon záporného řezu. alpha řídí hodnotu, na kterou se ELU nasytí pro záporné vstupy sítě.

Vrací

  • Aktivační funkce exponenciální lineární jednotky (ELU): x pokud x > 0 aalpha * (exp(x) - 1) pokud x < 0.

Reference: Rychlé a přesné učení hlubokých sítí pomocí exponenciálních lineárních jednotek (ELU) (Clevert et al, 2016)

exponenciální funkce

tf.keras.activations.exponential(x)

Exponenciální aktivační funkce.

Například:

Argumenty

  • x:

Vrací

  • tenzor s exponenciální aktivací: exp(x).

Vytváření vlastních aktivací

Jako aktivaci lze také použít volání TensorFlow(v tomto případě by mělo přijmout tenzor a vrátit tenzor stejného tvaru a dtypu):

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

O „pokročilých aktivačních“ vrstvách

Aktivace, které jsou složitější než jednoduchá funkce TensorFlow (např. učitelné aktivace, které udržují stav)jsou k dispozici jako pokročilé aktivační vrstvy a najdete je v modulu tf.keras.layers.advanced_activations. Patří mezi ně PReLU a LeakyReLU. pokud potřebujete vlastní aktivaci, která vyžaduje stav, měli byste ji implementovat jako vlastní vrstvu.

Všimněte si, že byste neměli předávat instance aktivačních vrstev jako argument activation vrstvy. jsou určeny k použití stejně jako běžné vrstvy, například:

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

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.