Funzioni di attivazione degli strati

Utilizzo delle attivazioni

Le attivazioni possono essere utilizzate sia attraverso uno strato Activation, sia attraverso l’argomento activation supportato da tutti gli strati forward:

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

Questo è equivalente a:

Tutte le attivazioni incorporate possono anche essere passate attraverso il loro identificatore di stringa:

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

Attivazioni disponibili

funzione relu

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

Applica la funzione di attivazione lineare rettificata per unità.

Con valori predefiniti, questo restituisce l’attivazione ReLU standard:max(x, 0), il massimo degli elementi di 0 e il tensore di ingresso.

Modificare i parametri di default permette di usare soglie non nulle, cambiare il valore massimo dell’attivazione, e usare un multiplo non nullo dell’input per valori sotto la soglia.

Per esempio:

Argomenti

  • x: Ingresso tensor o variable.
  • alfa: Un float che regola la pendenza per valori inferiori alla soglia.
  • max_value: Un float che imposta la soglia di saturazione (il valore più grande che la funzione restituirà).
  • threshold: Un float che dà il valore di soglia della funzione di attivazione al di sotto del quale i valori saranno smorzati o azzerati.

Returns

A Tensor che rappresenta il tensore di ingresso, trasformato dalla funzione di attivazione relu.Il tensore avrà la stessa forma e tipo d’ingresso x.

funzione sigmoide

tf.keras.activations.sigmoid(x)

Funzione di attivazione sigmoide, sigmoid(x) = 1 / (1 + exp(-x)).

Applica la funzione di attivazione sigmoide. Per valori piccoli (<-5),sigmoid restituisce un valore vicino a zero, e per valori grandi (>5) il risultato della funzione si avvicina a 1.

Sigmoide è equivalente a un Softmax a 2 elementi, dove il secondo elemento è assunto come zero. La funzione sigmoide restituisce sempre un valore tra0 e 1.

Per esempio:

Argomenti

  • x: Tensore di ingresso.

Ritorna

  • Tensore con attivazione sigmoidea: 1 / (1 + exp(-x)).

funzione softmax

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

Softmax converte un vettore reale in un vettore di probabilità categoriche.

Gli elementi del vettore di uscita sono nell’intervallo (0, 1) e sommano a 1.

Ogni vettore è gestito indipendentemente. L’argomento axis imposta lungo quale asse dell’input la funzione viene applicata.

Softmax è spesso usato come attivazione per l’ultimo strato di una rete di classificazione perché il risultato potrebbe essere interpretato come una distribuzione di probabilità.

Il softmax di ogni vettore x è calcolato comeexp(x) / tf.reduce_sum(exp(x)).

I valori di input in sono le probabilità log-odds della probabilità risultante.

Argomenti

  • x : tensore di input.
  • asse: Integer, asse lungo il quale viene applicata la normalizzazione softmax.

Returns

Tensore, output della trasformazione softmax (tutti i valori sono non negativi e sommano a 1).

Risorse

  • ValueError: Nel caso dim(x) == 1.

funzione softplus

tf.keras.activations.softplus(x)

Funzione di attivazione softplus, softplus(x) = log(exp(x) + 1).

Esempio Uso:

Argomenti

  • x: Tensore di ingresso.

Ritorna

  • L’attivazione softplus: log(exp(x) + 1).

funzione softsign

tf.keras.activations.softsign(x)

Funzione di attivazione softplus, softsign(x) = x / (abs(x) + 1).

Esempio Uso:

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

Argomenti

  • x: Ingresso tensore.

Ritorna

  • L’attivazione del softsign: x / (abs(x) + 1).

funzione tanh

tf.keras.activations.tanh(x)

Funzione di attivazione tangente iperbolica.

Per esempio:

Argomenti

  • x: Input tensore.

Ritorna

  • Tensore della stessa forma e tipo d dell’input x, con attivazione tanh:tanh(x) = sinh(x)/cosh(x) = ((exp(x) - exp(-x))/(exp(x) + exp(-x))).

funzione selu

tf.keras.activations.selu(x)

Scaled Exponential Linear Unit (SELU).

La funzione di attivazione Scaled Exponential Linear Unit (SELU) è definita come:

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

dove alpha e scale sono costanti predefinite (alpha=1.67326324 e scale=1.05070098).

Fondamentalmente, la funzione di attivazione SELU moltiplica scale (> 1) con l’uscita della funzione tf.keras.activations.elu per assicurare una pendenza maggiore di uno per gli ingressi positivi.

I valori di alpha e scale sono scelti in modo che la media e la varianza degli ingressi siano conservati tra due strati consecutivi, purché i pesi siano inizializzati correttamente (vedi tf.keras.initializers.LecunNormal inizializzatore) e il numero di unità di ingresso sia “abbastanza grande” (vedi documento di riferimento per maggiori informazioni).

Esempio di utilizzo:

Argomenti

  • x: Un tensore o una variabile per cui calcolare la funzione di attivazione.

Ritorna

  • L’attivazione esponenziale scalata dell’unità: scale * elu(x, alpha).

Notes: – Da usare insieme all’inizializzatore tf.keras.initializers.LecunNormal. – Da usare insieme alla variante di dropout tf.keras.layers.AlphaDropout (non dropout regolare).

Riferimenti: – Klambauer et al., 2017

funzione elu

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

Exponential Linear Unit.

L’unità lineare esponenziale (ELU) con alpha > 0 è:x se x > 0 ealpha * (exp(x) - 1) se x < 0L’iperparametro ELU alpha controlla il valore a cui unELU satura per ingressi netti negativi. Le ELU diminuiscono l’effetto del gradiente crescente.

Le ELU hanno valori negativi che spingono la media delle attivazioni più vicine allo zero.Le attivazioni medie che sono più vicine allo zero permettono un apprendimento più veloce perché portano il gradiente più vicino al gradiente naturale.Le ELU saturano ad un valore negativo quando l’argomento diventa più piccolo.Saturazione significa una piccola derivata che diminuisce la variazione e l’informazione che viene propagata allo strato successivo.

Esempio di utilizzo:

Argomenti

  • x: Tensore di ingresso.
  • alfa: Uno scalare, pendenza della sezione negativa. alpha controlla il valore a cui una ELU satura per gli ingressi negativi della rete.

Ritorna

  • La funzione di attivazione dell’unità lineare esponenziale (ELU): x se x > 0 ealpha * (exp(x) - 1) se x < 0.

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

funzione esponenziale

tf.keras.activations.exponential(x)

Funzione di attivazione esponenziale.

Per esempio:

Argumenti

  • x: Tensore di ingresso.

Ritorna

  • Tensore con attivazione esponenziale: exp(x).

Creazione di attivazioni personalizzate

È anche possibile utilizzare un callable di TensorFlow come attivazione (in questo caso dovrebbe prendere un tensore e restituire un tensore della stessa forma e tipo d):

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

Sugli strati di “attivazione avanzata”

Attivazioni che sono più complesse di una semplice funzione TensorFlow (es. attivazioni apprendibili, che mantengono uno stato) sono disponibili come livelli di attivazione avanzata, e possono essere trovati nel modulo tf.keras.layers.advanced_activations. Questi includono PReLU e LeakyReLU.Se avete bisogno di un’attivazione personalizzata che richiede uno stato, dovreste implementarla come un livello personalizzato.

Nota che non dovresti passare istanze di livelli di attivazione come argomento activation di un livello.Sono pensati per essere usati proprio come livelli regolari, ad esempio:

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

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.