Kerroksen aktivaatiofunktiot

Aktivaatioiden käyttö

Aktivaatioita voidaan käyttää joko Activation-kerroksen kautta tai kaikkien etukäteiskerrosten tukeman activation-argumentin kautta:

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

Tämä vastaa:

Kaikki sisäänrakennetut aktivoinnit voidaan välittää myös niiden merkkijonotunnisteen kautta:

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

Käytettävissä olevat aktivoinnit

relu-funktio

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

Soveltuu suoristettuun lineaariseen yksikköön perustuvaan aktivointifunktioon.

Ohjearvoilla tämä palauttaa tavallisen ReLU-aktivoinnin:max(x, 0), elementtiviisaan maksimin 0:sta ja syötetensorista.

Muuttamalla oletusparametreja voit käyttää nollasta poikkeavia kynnysarvoja,muuttaa aktivaation maksimiarvoa ja käyttää tulon nollasta poikkeavaa kerrannaisarvoa kynnysarvon alapuolella oleville arvoille.

Esimerkiksi:

Argumentit

  • x: Tulo tensor tai variable.
  • alpha: float, joka säätelee kaltevuutta kynnysarvoa pienemmille arvoille.
  • max_value: float, joka asettaa kyllästymiskynnyksen (suurin arvo, jonka funktio palauttaa).
  • threshold: A float, joka antaa aktivointifunktion kynnysarvon, jonka alapuolella olevat arvot vaimennetaan tai asetetaan nollaan.

Returns

A TensorA Tensor, joka edustaa syöttötensoria,joka on muunnettu relu aktivointifunktion avulla.Tensorilla on sama muoto ja d-tyyppi kuin syötteellä x.

sigmoidifunktio

tf.keras.activations.sigmoid(x)

Sigmoidiaktivointifunktio, sigmoid(x) = 1 / (1 + exp(-x)).

Sovelletaan sigmoidiaktivointifunktiota. Pienillä arvoilla (<-5),sigmoidpalauttaa arvon lähellä nollaa, ja suurilla arvoilla (>5)funktion tulos tulee lähelle 1.

Sigmoid vastaa 2-elementtistä Softmaxia, jossa toisen elementin oletetaan olevan nolla. Sigmoidifunktio palauttaa aina arvon välillä0 ja 1.

Esimerkiksi:

Argumentit

  • x:

Palauttaa

  • Tensor, jolla on sigmoidinen aktivointi: 1 / (1 + exp(-x)).

softmax-funktio

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

Softmax muuntaa reaalisen vektorin kategoristen todennäköisyyksien vektoriksi.

Tulostusvektorin alkiot ovat välillä (0, 1) ja niiden summa on 1.

Kaikkia vektoreita käsitellään erikseen. Argumentilla axis asetetaan, minkä akselin mukaan funktiota sovelletaan.

Softmaxia käytetään usein luokitusverkon viimeisen kerroksen aktivointina, koska tulos voidaan tulkita todennäköisyysjakaumana.

Kunkin vektorin x softmax lasketaanexp(x) / tf.reduce_sum(exp(x)).

Syöttöarvot in ovat tuloksena saadun todennäköisyyden log-odds.

Argumentit

  • x : Syöttötensori.
  • axis: Integer, akseli, jota pitkin softmax-normalisointia sovelletaan.

Returns

Tensor, softmax-muunnoksen ulostulo (kaikki arvot ovat ei-negatiivisia ja summa on 1).

Raises

  • ValueError: Tapauksessa dim(x) == 1.

softplus-funktio

tf.keras.activations.softplus(x)

Softplus-aktivointifunktio, softplus(x) = log(exp(x) + 1).

Esimerkki Käyttö:

Argumentit

  • x: Input tensor.

Returns

  • Softplus-aktivointi: log(exp(x) + 1).

softsign-funktio

tf.keras.activations.softsign(x)

Softsign-aktivointifunktio, softsign(x) = x / (abs(x) + 1).

Esimerkki Käyttö:

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

Argumentit

  • x:

Returns

  • Softsign-aktivointi: x / (abs(x) + 1).

tanh-funktio

tf.keras.activations.tanh(x)

Hyperbolinen tangentti-aktivointifunktio.

Esimerkki:

Argumentit

  • x: Input tensor.

Returns

  • Tensor, joka on muodoltaan ja d-tyypiltään sama kuin input x, tanh-aktivoinnilla:tanh(x) = sinh(x)/cosh(x) = ((exp(x) - exp(-x))/(exp(x) + exp(-x))).

selu-funktio

tf.keras.activations.selu(x)

Scaled Exponential Linear Unit (SELU).

Skaalattu eksponentiaalinen lineaarinen yksikkö (SELU, Scaled Exponential Linear Unit) aktivointifunktio (SELU) määritellään seuraavasti:

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

joissa alpha ja scale ovat ennalta määritettyjä vakioita(alpha=1.67326324 ja scale=1.05070098).

Periaatteessa SELU-aktivointifunktio kertoo scale (> 1) tf.keras.activations.elu-funktion ulostulon kanssa varmistaakseen, että kaltevuus on suurempi kuin yksi positiivisille syötteille.

alpha:n ja scale:n arvot valitaan siten, että syötteiden keskiarvo ja varianssi säilyvät kahden peräkkäisen kerroksen välillä, kunhan painot on alustettu oikein (ks. tf.keras.initializers.LecunNormal-aloitin) ja syöttöyksiköiden määrä on ”riittävän suuri” (ks. lisätietoja viitetiedostosta).

Esimerkki Käyttö:

Argumentit

  • x: Tensori tai muuttuja, jolle aktivointifunktio lasketaan.

Palauttaa

  • Skaalattu eksponentiaalinen yksikköaktivointi: scale * elu(x, alpha).

Notes: – Käytetään yhdessä tf.keras.initializers.LecunNormal-aloittajan kanssa. – Käytetään yhdessä pudotusmuunnoksen tf.keras.layers.AlphaDropout kanssa (ei tavallinen pudotus).

Viitteet: – Klambauer et al., 2017

elu-funktio

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

Eksponentiaalinen lineaarinen yksikkö.

Eksponentiaalinen lineaarinen yksikkö (ELU) alpha > 0:x jos x > 0 jaalpha * (exp(x) - 1) jos x < 0 ELU-hyperparametrilla alpha kontrolloidaan sitä, mihin arvoon ELU kyllästyy negatiivisten nettosyöttöjen osalta. ELU:t vähentävät häviävän gradientin vaikutusta.

ELU:illa on negatiiviset arvot, mikä työntää aktivaatioiden keskiarvon lähemmäs nollaa.Keskimääräiset aktivaatiot, jotka ovat lähempänä nollaa, mahdollistavat nopeamman oppimisen, koska ne tuovat gradientin lähemmäs luonnollista gradienttia.ELU:t kyllästyvät negatiiviseen arvoon, kun argumentti pienenee.Kyllästyminen tarkoittaa pientä derivaattaa, joka vähentää vaihtelua ja seuraavaan kerrokseen etenevää informaatiota.

Esimerkki Käyttö:

Argumentit

  • x:
  • alpha: Skalaari, kaltevuus negatiivinen leikkaus. alpha ohjaa arvoa, johon ELU kyllästyy negatiivisille verkkosyötteille.

Returns

  • Eksponentiaalisen lineaarisen yksikön (ELU) aktivointifunktio: x jos x > 0 jaalpha * (exp(x) - 1) jos x < 0.

Viite: Fast and Accurate Deep Network Learning by Exponential Linear Units (ELUs) (Clevert et al, 2016)

eksponentiaalinen funktio

tf.keras.activations.exponential(x)

Eksponentiaalinen aktivointifunktio.

Esimerkki:

Argumentit

  • x:

Palauttaa

  • Tensor eksponentiaalisella aktivoinnilla: exp(x).

Kustomoitujen aktivointien luominen

Voit käyttää aktivointina myös TensorFlow:n kutsuttavaa (callable) (tässä tapauksessa sen pitäisi ottaa tensori ja palauttaa samanmuotoinen ja dtyyppinen tensori):

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

Tietoa ”edistyneistä aktivointikerroista”

Aktivaatiot, jotka ovat monimutkaisempia kuin yksinkertainen TensorFlow-funktio (esim. opittavissa olevat aktivoinnit, jotka ylläpitävät tilaa)ovat saatavilla kehittyneinä aktivointikerroksina,ja ne löytyvät moduulista tf.keras.layers.advanced_activations. Näihin kuuluvat PReLU ja LeakyReLU.Jos tarvitset mukautetun aktivoinnin, joka vaatii tilan, sinun kannattaa toteuttaa se mukautettuna kerroksena.

Huomaa, että aktivointikerrosten instansseja ei saa välittää kerroksen activation-argumenttina.Niitä on tarkoitus käyttää aivan kuten tavallisia kerroksia, esimerkiksi:

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

Vastaa

Sähköpostiosoitettasi ei julkaista.