Utilizarea activărilor
Activările pot fi utilizate fie prin intermediul unui strat Activation
, fie prin intermediul argumentului activation
suportat de toate straturile frontale:
model.add(layers.Dense(64, activation=activations.relu))
Acest lucru este echivalent cu:
Toate activările încorporate pot fi, de asemenea, transmise prin intermediul identificatorului lor de șir de caractere:
model.add(layers.Dense(64, activation='relu'))
Activări disponibile
Funcția relu
tf.keras.activations.relu(x, alpha=0.0, max_value=None, threshold=0)
Aplică funcția de activare unitară liniară rectificată.
Cu valori implicite, aceasta returnează activarea ReLU standard:max(x, 0)
, maximul în funcție de element al lui 0 și tensorul de intrare.
Modificarea parametrilor impliciți vă permite să folosiți praguri diferite de zero,să modificați valoarea maximă a activării și să folosiți un multiplu diferit de zero al intrării pentru valori sub prag.
De exemplu:
Argumente
- x: Intrare
tensor
sauvariable
. - alpha: Un
float
care guvernează panta pentru valorile mai mici decât pragul. - max_value: Un
float
care stabilește pragul de saturație (cea mai mare valoare pe care funcția o va returna). - threshold: Un
float
care dă valoarea de prag a funcției de activare sub care valorile vor fi amortizate sau setate la zero.
Returnează
Un Tensor
care reprezintă tensorul de intrare,transformat de funcția de activare relu.Tensorul va avea aceeași formă și dtip de intrare x
.
Funcția sigmoidă
tf.keras.activations.sigmoid(x)
Funcția de activare sigmoidă, sigmoid(x) = 1 / (1 + exp(-x))
.
Aplică funcția de activare sigmoidă. Pentru valori mici (<-5),sigmoid
returnează o valoare apropiată de zero, iar pentru valori mari (>5)rezultatul funcției se apropie de 1.
Sigmoid este echivalent cu un Softmax cu 2 elemente, unde al doilea element este presupus a fi zero. Funcția sigmoid returnează întotdeauna o valoare între0 și 1.
De exemplu:
Argumente
- x: Tensor de intrare.
Întoarce
- Tensor cu activarea sigmoidală:
1 / (1 + exp(-x))
.
Funcția softmax
tf.keras.activations.softmax(x, axis=-1)
Softmax convertește un vector real într-un vector de probabilități categorice.
Elementele vectorului de ieșire sunt în intervalul (0, 1) și au suma 1.
Care vector este tratat independent. Argumentul axis
stabilește pe ce axă a intrării se aplică funcția.
Softmax este adesea utilizat ca activare pentru ultimul strat al unei rețele de clasificare, deoarece rezultatul poate fi interpretat ca o distribuție de probabilități.
Softmax al fiecărui vector x este calculat caexp(x) / tf.reduce_sum(exp(x))
.
Valorile de intrare în sunt cotele logaritmice ale probabilității rezultate.
Argumente
- x : Tensor de intrare.
- axis: Integer, axa de-a lungul căreia se aplică normalizarea softmax.
Returns
Tensor, ieșire a transformării softmax (toate valorile sunt non-negative și însumate la 1).
Raise
- ValueError: În cazul
dim(x) == 1
.
Funcția softplus
tf.keras.activations.softplus(x)
Funcția de activare softplus, softplus(x) = log(exp(x) + 1)
.
Exemplu de utilizare:
Argumente
- x: Tensor de intrare.
Returnează
- Activarea softplus:
log(exp(x) + 1)
.
Funcția softsign
tf.keras.activations.softsign(x)
Funcția de activare softsign, softsign(x) = x / (abs(x) + 1)
.
Exemplu Utilizare:
>>> a = tf.constant(, dtype = tf.float32)>>> b = tf.keras.activations.softsign(a)>>> b.numpy()array(, dtype=float32)
Argumente
- x: Tensor de intrare.
Returnează
- Activarea softsignului:
x / (abs(x) + 1)
.
Funcția tanh
tf.keras.activations.tanh(x)
Funcția de activare tangentă hiperbolică.
De exemplu:
Argumente
- x: Tensor de intrare.
Întoarce
- Tensor de aceeași formă și dtip de intrare
x
, cu activare tanh:tanh(x) = sinh(x)/cosh(x) = ((exp(x) - exp(-x))/(exp(x) + exp(-x)))
.
Funcția selu
tf.keras.activations.selu(x)
Scaled Exponential Linear Unit (SELU).
Funcția de activare SELU (Scaled Exponential Linear Unit) este definită ca:
if x > 0: return scale * x
if x < 0: return scale * alpha * (exp(x) - 1)
unde alpha
și scale
sunt constante predefinite (alpha=1.67326324
și scale=1.05070098
).
În principiu, funcția de activare SELU înmulțește scale
(> 1) cu ieșirea funcției tf.keras.activations.elu
pentru a asigura o pantă mai mare de unu pentru intrările pozitive.
Valorile lui alpha
și scale
sunt alese astfel încât media și varianța intrărilor să fie păstrate între două straturi consecutive, atâta timp cât ponderile sunt inițializate corect (a se vedea inițializatorul tf.keras.initializers.LecunNormal
) și numărul de unități de intrare este „suficient de mare” (a se vedea documentul de referință pentru mai multe informații).
Exemplu de utilizare:
Argumente
- x: Un tensor sau o variabilă pentru care se calculează funcția de activare.
Returnează
- Activarea unitară exponențială scalată:
scale * elu(x, alpha)
.
Notes: – A se utiliza împreună cu inițializatorul tf.keras.initializers.LecunNormal
. – A se utiliza împreună cu varianta de renunțare tf.keras.layers.AlphaDropout
(nu cu renunțarea obișnuită).
Referințe: – Klambauer et al., 2017
funcția elu
tf.keras.activations.elu(x, alpha=1.0)
Unitatea liniară exponențială.
Unitatea liniară exponențială (ELU) cu alpha > 0
este:x
dacă x > 0
șialpha * (exp(x) - 1)
dacă x < 0
Hiperparametrul ELU alpha
controlează valoarea la care oELU se saturează pentru intrări nete negative. ELU diminuează efectul de gradient descrescător.
ELU au valori negative, ceea ce împinge media activărilor mai aproape de zero.Activările medii care sunt mai aproape de zero permit o învățare mai rapidă, deoarece aduc gradientul mai aproape de gradientul natural.ELU-urile se saturează la o valoare negativă atunci când argumentul devine mai mic.Saturarea înseamnă o derivată mică care scade variațiași informația care se propagă în stratul următor.
Exemplu de utilizare:
Argumente
- x: Tensor de intrare.
- alfa: Un scalar, pantă de secțiune negativă.
alpha
controlează valoarea la care o ELU se saturează pentru intrările negative ale rețelei.
Returns
- Funcția de activare a unității liniare exponențiale (ELU): dacă
x > 0
șialpha * (exp(x) - 1)
dacăx < 0
.
Referință: Fast and Accurate Deep Network Learning by Exponential Linear Units (ELU) (Clevert et al, 2016)
funcția exponențială
tf.keras.activations.exponential(x)
Funcția de activare exponențială.
De exemplu:
Argumente
- x: Tensor de intrare.
Întoarce
- Tensor cu activare exponențială:
exp(x)
.
Crearea de activări personalizate
De asemenea, puteți utiliza un tensor TensorFlow apelabil ca activare (în acest caz ar trebui să preia un tensor și să returneze un tensor de aceeași formă și dtype):
model.add(layers.Dense(64, activation=tf.nn.tanh))
Despre straturile de „activare avansată”
Activările care sunt mai complexe decât o simplă funcție TensorFlow (de ex. activările care pot fi învățate, care mențin o stare)sunt disponibile ca straturi de activare avansată,și pot fi găsite în modulul tf.keras.layers.advanced_activations
. Acestea includ PReLU
și LeakyReLU
.Dacă aveți nevoie de o activare personalizată care necesită o stare, ar trebui să o implementați ca un strat personalizat.
Rețineți că nu trebuie să treceți instanțele straturilor de activare ca argument activation
al unui strat.Acestea sunt destinate să fie utilizate la fel ca straturile obișnuite, de exemplu:
x = layers.Dense(10)(x)x = layers.LeakyReLU()(x)