Usagem de ativações
Ativações podem ser usadas através de uma camada Activation, ou através do argumento activation suportado por todas as camadas dianteiras:
model.add(layers.Dense(64, activation=activations.relu))
>
Isto é equivalente a:
Todas as ativações incorporadas também podem ser passadas através de seu identificador de string:
model.add(layers.Dense(64, activation='relu'))
Ativações disponíveis
Função relu
tf.keras.activations.relu(x, alpha=0.0, max_value=None, threshold=0)
Aplica a função de ativação da unidade linear retificada.
Com valores padrão, isto retorna a ativação ReLU padrão:max(x, 0), o máximo de 0 no sentido do elemento e o tensor de entrada.
Modificar parâmetros padrão permite usar limiares não zero, alterar o valor máximo da ativação e usar um múltiplo não zero da entrada para valores abaixo do limiar.
Por exemplo:
>
Argumentos
- x: Entrada
tensorouvariable. - alfa: A
floatque rege a inclinação para valores inferiores ao limiar. - max_value: A
floatque define o limiar de saturação (o maior valor que a função irá retornar). - limiar: A
floatque dá o valor limiar da função de ativação abaixo do qual os valores serão amortecidos ou definidos para zero.
Retornos
A Tensor que representa o tensor de entrada,transformado pela função de ativação do relu.O tensor será da mesma forma e tipo de entrada x.
função sigmóide
tf.keras.activations.sigmoid(x)
Função de ativação sigmóide, sigmoid(x) = 1 / (1 + exp(-x)).
Aplica a função de ativação sigmóide. Para valores pequenos (<-5),sigmoid retorna um valor próximo a zero, e para valores grandes (>5)o resultado da função aproxima-se de 1.
Sigmoid é equivalente a um Softmax de 2 elementos, onde o segundo elemento é considerado zero. A função sigmóide sempre retorna um valor entre 0 e 1.
Por exemplo:
Argumentos
- x: Tensor de entrada.
>
Retornos
- Tensor com a ativação do sigmóide:
1 / (1 + exp(-x)).
Função softmax
tf.keras.activations.softmax(x, axis=-1)
Softmax converte um vector real para um vector de probabilidades categóricas.
Os elementos do vector de saída estão no intervalo (0, 1) e a soma para 1.
Cada vector é manipulado independentemente. O argumento axis define qual eixo da entrada a função é aplicada ao longo.
Softmax é frequentemente usado como ativação para a última camada de uma rede de classificação porque o resultado poderia ser interpretado como distribuição de probabilidade asa.
A softmax de cada vector x é calculada comoexp(x) / tf.reduce_sum(exp(x)).
Os valores de entrada são os log-odds da probabilidade resultante.
Argumentos
- x : tensor de entrada.
- eixo: Inteiro, eixo ao longo do qual a normalização softmax é aplicada.
Retornos
Tensor, saída da transformação softmax (todos os valores são não negativos e soma a 1).
Aumentos
- ValueError: No caso
dim(x) == 1.
função softplus
tf.keras.activations.softplus(x)
Função de ativaçãoSoftplus, softplus(x) = log(exp(x) + 1).
Exemplo de uso:
Argumentos
- x: Tensor de entrada.
>
Retornos
- >
- Ativação do softplus:
log(exp(x) + 1).
Função softsign
tf.keras.activations.softsign(x)
Função de ativação do softsign, softsign(x) = x / (abs(x) + 1).
Exemplo de uso:
>>> a = tf.constant(, dtype = tf.float32)>>> b = tf.keras.activations.softsign(a)>>> b.numpy()array(, dtype=float32)
>
Argumentos
- >
- x: Tensor de entrada.
>
Retornos
- A activação do softsign:
x / (abs(x) + 1).
Função tanh
tf.keras.activations.tanh(x)
Função de activação tangente hiperbólica.
Por exemplo:
>
Argumentos
- >
- x: Tensor de entrada.
>
Retornos
- >
- Tensor da mesma forma e tipo de entrada
x, com ativação tanh:tanh(x) = sinh(x)/cosh(x) = ((exp(x) - exp(-x))/(exp(x) + exp(-x))).
Função selu
tf.keras.activations.selu(x)
Unidade Linear Exponencial Escalonada (SELU).
A função de ativação da Unidade Linear Exponencial Escalonada (SELU) é definida como:
if x > 0: return scale * x-
if x < 0: return scale * alpha * (exp(x) - 1)>
onde alpha e scale são constantes pré-definidas(alpha=1.67326324 e scale=1.05070098).
Basicamente, a função de activação SELU multiplica-se scale (> 1) com a saída da função tf.keras.activations.elu para garantir uma inclinação maior do que a das entradas positivas.
Os valores de alpha e scale são escolhidos de modo a que a média e variância das entradas sejam preservadas entre duas camadas consecutivas desde que os pesos sejam inicializados correctamente (ver tf.keras.initializers.LecunNormal inicializador)e o número de unidades de entrada seja “suficientemente grande” (ver documento de referência para mais informações).
Exemplo de utilização:
Argumentos
- x: Um tensor ou variável para computar a função de ativação para.
Retornos
- A ativação da unidade exponencial em escala:
scale * elu(x, alpha).
Notes: – Para ser usado em conjunto com o inicializador de tf.keras.initializers.LecunNormal. – Para ser usado em conjunto com a variante dropout tf.keras.layers.AlphaDropout (não dropout regular).
Referências: – Klambauer et al., 2017
função elu
tf.keras.activations.elu(x, alpha=1.0)
>
Unidade linear exponencial.
Unidade linear exponencial (ELU) com alpha > 0 é:x if x > 0 ealpha * (exp(x) - 1) if x < 0O hiperparâmetro ELU alpha controla o valor ao qual o anELU se satura para entradas líquidas negativas. As ELUs diminuem o efeito do gradiente devanização.
ELUs têm valores negativos que empurram a média do fecho de activação para zero. As activações médias que estão mais próximas de zero permitem uma aprendizagem mais rápida à medida que aproximam o gradiente do gradiente natural.Saturação significa uma pequena derivada que diminui a variação e a informação que é propagada para a próxima camada.
Exemplo de utilização:
Argumentos
- x: tensor de entrada.
- alfa: Um escalar, inclinação da secção negativa.
alphacontrola o valor ao qual uma ELU satura para entradas líquidas negativas.
Retornos
- >
- A função de ativação da unidade linear exponencial (ELU):
xifx > 0ealpha * (exp(x) - 1)ifx < 0.
Referência: Aprendizagem rápida e precisa da rede profunda por unidades lineares exponenciais (UEL) (Clevert et al, 2016)
>
função exponencial
>
tf.keras.activations.exponential(x)
>
função de ativação exponencial.
>
Por exemplo:
>
>
Argumentos
>
- >
- x: Tensor de entrada.
>
Retornos
- Tensor com ativação exponencial:
exp(x).
Criar ativações personalizadas
Pode também usar um TensorFlow chamável como ativação(neste caso deve pegar um tensor e retornar um tensor da mesma forma e tipo):
model.add(layers.Dense(64, activation=tf.nn.tanh))
Sobre camadas de “ativação avançada”
Ativações que são mais complexas do que uma simples função TensorFlow (por exemplo ativações aprendíveis, que mantêm um estado)estão disponíveis como camadas de ativação avançada, e podem ser encontradas no módulo tf.keras.layers.advanced_activations. Estas incluem PReLU e LeakyReLU.Se você precisa de uma ativação personalizada que requer um estado, você deve implementá-la como uma camada personalizada.
Nota que você não deve passar instâncias de camadas de ativação como o argumento activation de uma camada. Elas devem ser usadas como camadas regulares, por exemplo:
x = layers.Dense(10)(x)x = layers.LeakyReLU()(x)