Funções de ativação de camadas

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 tensor ou variable.
  • alfa: A float que rege a inclinação para valores inferiores ao limiar.
  • max_value: A float que define o limiar de saturação (o maior valor que a função irá retornar).
  • limiar: A float que 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. alpha controla o valor ao qual uma ELU satura para entradas líquidas negativas.

Retornos

    >

  • A função de ativação da unidade linear exponencial (ELU): x if x > 0 ealpha * (exp(x) - 1) if x < 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)

Deixe uma resposta

O seu endereço de email não será publicado.