Rétegaktiválási függvények

Az aktiválások használata

Az aktiválások vagy egy Activation rétegen keresztül használhatók, vagy az összes előremenő réteg által támogatott activation argumentumon keresztül:

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

Ez a következővel egyenértékű:

Minden beépített aktiválás átadható a string azonosítójukon keresztül is:

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

A rendelkezésre álló aktiválások

relu függvény

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

Az egyenesített lineáris egység aktiválási függvényt alkalmazza.

Egyértelmezett értékekkel a standard ReLU aktivációt adja vissza:max(x, 0), a 0 és a bemeneti tenzor elemenkénti maximumát.

Az alapértelmezett paraméterek módosítása lehetővé teszi nem nulla küszöbértékek használatát,az aktiválás maximális értékének megváltoztatását,és a bemenet nem nulla többszörösének használatát a küszöbérték alatti értékek esetén.

Például:

Argumentumok

  • x: tensor vagy variable.
  • alpha:
  • max_value: Egy float, amely a küszöbértéknél alacsonyabb értékek meredekségét szabályozza.
  • max_value:
  • threshold: Egy float, amely meghatározza a telítési küszöbértéket (a legnagyobb érték, amelyet a függvény visszaad).
  • threshold: Egy float, amely megadja az aktiválási függvény küszöbértékét, amely alatt az értékeket csillapítja vagy nullára állítja.

Returns

A Tensor, amely a bemeneti tenzort reprezentálja,a relu aktiválási függvény által átalakítva.A tenzor a bemenettel x azonos alakú és d-típusú lesz.

sigmoid függvény

tf.keras.activations.sigmoid(x)

Sigmoid aktiválási függvény, sigmoid(x) = 1 / (1 + exp(-x)).

A sigmoid aktiválási függvényt alkalmazza. Kis értékeknél (<-5),sigmoid nullához közeli értéket ad vissza, és nagy értékeknél (>5)a függvény eredménye közelít az 1-hez.

Sigmoid egyenértékű egy 2 elemű Softmax-szal, ahol a második elemet nullának tételezzük fel. A sigmoid függvény mindig0 és 1 közötti értéket ad vissza.

Példa:

Argumentumok

  • x:

Visszatér

  • Tenzor a szigmoid aktiválással: 1 / (1 + exp(-x)).

softmax függvény

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

A kimeneti vektor elemei a (0, 1) tartományban vannak, és összegük 1.

Minden vektort függetlenül kezel. A axis argumentum határozza meg, hogy a bemenet melyik tengelye mentén alkalmazzuk a függvényt.

A softmax-ot gyakran használják egy osztályozóhálózat utolsó rétegének aktiválásaként, mivel az eredményt valószínűségi eloszlásként lehet értelmezni.

A softmax minden egyes x vektor számításaexp(x) / tf.reduce_sum(exp(x)).

A bemeneti értékek in a kapott valószínűség log-odds-ai.

Argumentumok

  • x : Bemeneti tenzor.
  • axis: Egész szám, tengely, amely mentén a softmax normalizációt alkalmazzuk.

Returns

Tensor, a softmax transzformáció kimenete (minden érték nem negatív és összege 1).

Raises

  • ValueError: Abban az esetben, ha dim(x) == 1.

softplus függvény

tf.keras.activations.softplus(x)

Softplus aktivációs függvény, softplus(x) = log(exp(x) + 1).

Példa Használat:

Argumentumok

  • x:

Returns

  • A softplus aktiválás: log(exp(x) + 1).

softsign függvény

tf.keras.activations.softsign(x)

Softsign aktiváló függvény, softsign(x) = x / (abs(x) + 1).

Példa Használat:

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

Argumentumok

  • x:

Returns

  • A softsign aktiválása: x / (abs(x) + 1).

tanh függvény

tf.keras.activations.tanh(x)

Például:

Argumentumok

  • x:

Visszatér

  • A bemenettel x azonos alakú és d-típusú tenzor, tanh aktiválással:tanh(x) = sinh(x)/cosh(x) = ((exp(x) - exp(-x))/(exp(x) + exp(-x))).

selu függvény

tf.keras.activations.selu(x)

Skalált exponenciális lineáris egység (SELU).

A skálázott exponenciális lineáris egység (SELU) aktiválási függvényt a következőképpen definiáljuk:

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

ahol alpha és scale előre meghatározott konstansok(alpha=1.67326324 és scale=1.05070098).

Gyakorlatilag a SELU aktiválási függvény megszorozza scale (> 1) a tf.keras.activations.elu függvény kimenetével, hogy pozitív bemenetek esetén egynél nagyobb meredekséget biztosítson.

A alpha és scale értékeit úgy választjuk meg, hogy a bemenetek átlaga és varianciája megmaradjon két egymást követő réteg között, amennyiben a súlyok inicializálása helyes (lásd tf.keras.initializers.LecunNormal inicializáló) és a bemeneti egységek száma “elég nagy” (további információért lásd a referenciadokumentumot).

Példa Használat:

Argumentumok

  • x:

Returns

  • A skálázott exponenciális egységaktiválás: scale * elu(x, alpha).

Notes: – A tf.keras.initializers.LecunNormal inicializálóval együtt kell használni. – A tf.keras.layers.AlphaDropout kiesési változattal együtt használandó (nem rendszeres kiesés).

Hivatkozások: – Klambauer et al., 2017

elu function

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

Exponenciális lineáris egység.

Az exponenciális lineáris egység (ELU) a alpha > 0 segítségével:x ha x > 0 ésalpha * (exp(x) - 1) ha x < 0Az ELU hiperparaméter alpha szabályozza azt az értéket, amelyre egyELU negatív nettó bemenetek esetén telítődik. Az ELU-k csökkentik a csökkenő gradiens hatását.

Az ELU-k negatív értékkel rendelkeznek, ami az aktivációk átlagát a nullához közelíti.A nullához közelebbi átlagos aktivációk gyorsabb tanulást tesznek lehetővé, mivel közelebb hozzák a gradienst a természetes gradienshez.Az ELU-k negatív értékre telítődnek, amikor az argumentum kisebb lesz.A telítődés kis deriváltat jelent, ami csökkenti a variációtés a következő rétegbe terjedő információt.

Példa Használat:

Argumentumok

  • x:
  • alpha: Egy skalár, meredeksége negatív szakasz. alpha Azt az értéket szabályozza, ameddig az ELU telítődik negatív hálózati bemenetek esetén.

Returns

  • Az exponenciális lineáris egység (ELU) aktiválási függvénye: x ha x > 0 ésalpha * (exp(x) - 1) ha x < 0.

Hivatkozás: (Clevert et al, 2016)

exponenciális függvény

tf.keras.activations.exponential(x)

exponenciális aktiválási függvény.

Például:

Argumentumok

  • x:

Visszatér

  • Tenzor exponenciális aktiválással: exp(x).

Egyéni aktiválások létrehozása

Egy TensorFlow hívhatót is használhatsz aktiválásként(ebben az esetben egy tenzort kell fogadnia és egy azonos alakú és dtípusú tenzort kell visszaadnia):

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

A “fejlett aktiválási” rétegekről

Az egyszerű TensorFlow függvénynél összetettebb aktiválások (pl. tanulható aktiválások, amelyek fenntartanak egy állapotot)Advanced Activation rétegekként érhetőek el,és a tf.keras.layers.advanced_activations modulban találhatók. Ezek közé tartozik a PReLU és a LeakyReLU.Ha olyan egyéni aktiválásra van szüksége, amely állapotot igényel, akkor azt egyéni rétegként kell megvalósítania.

Megjegyzendő, hogy az aktiválási rétegek példányait nem szabad átadni egy réteg activation argumentumaként.Ezeket ugyanúgy kell használni, mint a hagyományos rétegeket, például:

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

.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.