Funkcje aktywacji warstw

Używanie aktywacji

Aktywacje mogą być używane albo poprzez warstwę Activation, albo poprzez argument activation obsługiwany przez wszystkie warstwy forward:

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

Jest to równoważne z:

Wszystkie wbudowane aktywacje mogą być również przekazywane za pośrednictwem ich identyfikatora łańcuchowego:

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

Dostępne aktywacje

funkcja relu

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

Stosuje rektyfikowaną liniową jednostkową funkcję aktywacji.

Z wartościami domyślnymi, zwraca standardową aktywację ReLU:max(x, 0), maksimum element-wise z 0 i tensora wejściowego.

Modyfikacja parametrów domyślnych pozwala na użycie niezerowych progów, zmianę maksymalnej wartości aktywacji oraz użycie niezerowej wielokrotności wejścia dla wartości poniżej progu.

Na przykład:

Argumenty

  • x: Wejście tensor lub variable.
  • alfa: A float that governs the slope for values lower than the threshold.
  • max_value: A float, która określa próg nasycenia (największą wartość, jaką zwróci funkcja).
  • threshold: A float podający wartość progową funkcji aktywacji, poniżej której wartości będą tłumione lub ustawiane na zero.

Wraca

A Tensor reprezentujący tensor wejściowy,przekształcony przez funkcję aktywacji relu.Tensor będzie miał ten sam kształt i dtype wejścia x.

Funkcja sigmoidalna

tf.keras.activations.sigmoid(x)

Sigmoidalna funkcja aktywacji, sigmoid(x) = 1 / (1 + exp(-x)).

Stosuje sigmoidalną funkcję aktywacji. Dla małych wartości (<-5),sigmoid zwraca wartość bliską zeru, a dla dużych wartości (>5)wynik funkcji zbliża się do 1.

Sigmoida jest równoważna 2-elementowej Softmax, gdzie drugi element przyjmuje się za zero. Funkcja sigmoid zawsze zwraca wartość pomiędzy0 a 1.

Na przykład:

Argumenty

  • x: Input tensor.

Returns

  • Tensor z aktywacją sigmoidalną: 1 / (1 + exp(-x)).

funkcja softmax

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

Softmax konwertuje wektor rzeczywisty na wektor prawdopodobieństw kategorycznych.

Elementy wektora wyjściowego są z zakresu (0, 1) i sumują się do 1.

Każdy wektor jest obsługiwany niezależnie. Argument axis określa, wzdłuż której osi wejścia funkcja jest stosowana.

Softmax jest często używany jako aktywacja ostatniej warstwy sieci klasyfikacyjnej, ponieważ wynik może być interpretowany jako rozkład prawdopodobieństwa.

Softmax każdego wektora x jest obliczana jakoexp(x) / tf.reduce_sum(exp(x)).

Wartości wejściowe w są log-odds wynikowego prawdopodobieństwa.

Argumenty

  • x : Tensor wejściowy.
  • axis: Integer, oś wzdłuż której stosowana jest normalizacja softmax.

Returns

Tensor, wyjście transformacji softmax (wszystkie wartości są nieujemne i sumują się do 1).

Raises

  • ValueError: W przypadku dim(x) == 1.

funkcja softplus

tf.keras.activations.softplus(x)

Funkcja aktywacji softplus, softplus(x) = log(exp(x) + 1).

Przykładowe użycie:

Argumenty

  • x: Input tensor.

Returns

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

funkcja softsign

tf.keras.activations.softsign(x)

Funkcja aktywacji softsign, softsign(x) = x / (abs(x) + 1).

Przykładowe użycie:

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

Argumenty

  • x: Input tensor.

Returns

  • Aktywacja softsignu: x / (abs(x) + 1).

funkcja tanh

tf.keras.activations.tanh(x)

Funkcja aktywacji tangensa hiperbolicznego.

Na przykład:

Argumenty

  • x: Tensor wejściowy.

Wraca

  • Tensor o tym samym kształcie i dtypie wejścia x, z aktywacją tanh:tanh(x) = sinh(x)/cosh(x) = ((exp(x) - exp(-x))/(exp(x) + exp(-x))).

funkcja selu

tf.keras.activations.selu(x)

Scaled Exponential Linear Unit (SELU).

Funkcja aktywacji SELU (Scaled Exponential Linear Unit) jest zdefiniowana jako:

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

gdzie alpha i scale są wstępnie zdefiniowanymi stałymi (alpha=1.67326324 i scale=1.05070098).

Podstawowo, funkcja aktywacji SELU mnoży scale (> 1) z wyjściem funkcji tf.keras.activations.elu, aby zapewnić nachylenie większe niż jeden dla dodatnich danych wejściowych.

Wartości alpha i scale są tak dobrane, że średnia i wariancja wejść są zachowane pomiędzy dwoma kolejnymi warstwami tak długo, jak wagi są poprawnie zainicjalizowane (zobacz inicjalizator tf.keras.initializers.LecunNormal) i liczba jednostek wejściowych jest „wystarczająco duża” (więcej informacji w referacie).

Przykładowe użycie:

Argumenty

  • x: Tensor lub zmienna do obliczenia funkcji aktywacji dla.

Wraca

  • Skalowana wykładnicza aktywacja jednostkowa: scale * elu(x, alpha).

Notes: – Do stosowania razem z inicjalizatorem tf.keras.initializers.LecunNormal. – Do użycia razem z wariantem zrzutu tf.keras.layers.AlphaDropout (nie regularny zrzut).

Referencje: – Klambauer et al., 2017

funkcja elu

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

Eksponencjalna jednostka liniowa.

Eksponencjalna jednostka liniowa (ELU) z alpha > 0 to:x jeśli x > 0 ialpha * (exp(x) - 1) jeśli x < 0Hiparametr ELU alpha kontroluje wartość, do której anELU nasyca się dla ujemnych wejść netto. ELU zmniejszają efekt zanikającego gradientu.

ELU mają wartości ujemne, które przesuwają średnią aktywacji bliżej zera. Średnia aktywacji bliższa zeru umożliwia szybsze uczenie, ponieważ przybliża gradient do gradientu naturalnego.ELU nasycają się do wartości ujemnej, gdy argument staje się mniejszy.Nasycenie oznacza małą pochodną, która zmniejsza zmienność i informację, która jest propagowana do następnej warstwy.

Przykład użycia:

Argumenty

  • x: Tensor wejściowy.
  • alfa: Skalar, nachylenie odcinka ujemne. alpha kontroluje wartość, do której ELU nasyca się dla ujemnych wejść sieci.

Powraca

  • Funkcja aktywacji wykładniczej jednostki liniowej (ELU): x jeśli x > 0 ialpha * (exp(x) - 1) jeśli x < 0.

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

funkcja wykładnicza

tf.keras.activations.exponential(x)

Ekspresyjna funkcja aktywacji.

Na przykład:

Argumenty

  • x: Input tensor.

Returns

  • Tensor z aktywacją wykładniczą: exp(x).

Tworzenie niestandardowych aktywacji

Można również użyć wywołania TensorFlow jako aktywacji(w tym przypadku powinno ono przyjmować tensor i zwracać tensor o tym samym kształcie i dtypie):

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

O warstwach „zaawansowanej aktywacji”

Aktywacje, które są bardziej złożone niż prosta funkcja TensorFlow (np. aktywacje uczące się, które utrzymują stan) są dostępne jako zaawansowane warstwy aktywacji i można je znaleźć w module tf.keras.layers.advanced_activations. Należą do nich PReLU i LeakyReLU.Jeśli potrzebujesz niestandardowej aktywacji, która wymaga stanu, powinieneś zaimplementować ją jako niestandardową warstwę.

Zauważ, że nie powinieneś przekazywać instancji warstw aktywacji jako argumentu activation warstwy.Są one przeznaczone do użycia tak jak zwykłe warstwy, np.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.