PyTorch é uma biblioteca de machine learning de código aberto desenvolvida pelo Facebook. É usado para redes neurais profundas e propósitos de processamento de linguagem natural.

Uma das muitas funções de ativação é a função tangente hiperbólica (também conhecida como tanh), que é definida como tanh (x) = (e ^ x - e ^ {- x}) / (e ^ x + e ^ {- x}).

A função tangente hiperbólica tem saída na faixa (-1, 1), mapeando assim entradas fortemente negativas para valores negativos. Ao contrário da função sigmóide, apenas valores próximos de zero são mapeados para saídas quase zero, e isso resolve o problema dos “gradientes de desaparecimento” até certo ponto. A função tangente hiperbólica é diferenciável em todos os pontos e sua derivada acaba sendo 1 - tanh ^ 2 (x). Como a expressão envolve a função tanh, seu valor pode ser reutilizado para tornar a propagação para trás mais rápida.

Apesar das menores chances de a rede “travar” quando comparada com a função sigmóide, a função tangente hiperbólica ainda sofre de “gradientes de desaparecimento”. A Unidade Linear Retificada (ReLU) pode ser usada para superar esse problema.

A função torch.tanh()fornece suporte para a função tangente hiperbólica no PyTorch. Ele espera a entrada na forma de radianos e a saída esteja no intervalo [-∞, ∞]. O tipo de entrada é tensor e se a entrada contiver mais de um elemento, a tangente hiperbólica a elemento é calculada.



Sintaxe : torch.tanh (x, out = None)

Parâmetros :
x :
Nome do tensor de entrada (opcional): Tensor de saída

Tipo de retorno : um tensor com o mesmo tipo de x.

Código # 1:

import torch 
a = torch.FloatTensor([1.0, -0.5, 3.4, -2.1, 0.0, -6.5]) 
print(a) 
b = torch.tanh(a) 
print(b) 

Resultado:

 1,0000
-0,5000
 3,4000
-2,1000
 0,0000
-6,5000
[tocha.Tensor de flutuação de tamanho 6]
 0,7616
-0,4621
 0,9978
-0,9705
 0,0000
-1,0000
[tocha.Tensor de flutuação de tamanho 6]

 

Código 2: Visualização

import torch 
import numpy as np 
import matplotlib.pyplot as plt 
a = np.linspace(-5, 5, 15) 
b = torch.tanh(torch.FloatTensor(a)) 
  
print(b) 
plt.plot(a, b.numpy(), color = 'red', marker = "o"
plt.title("torch.tanh"
plt.xlabel("X"
plt.ylabel("Y"
  
plt.show() 

Resultado:

-0.9999
-0.9996
-0.9984
-0.9934
-0,9728
-0,8914
-0,6134
 0,0000
 0,6134
 0,8914
 0,9728
 0,9934
 0,9984
 0,9996
 0,9999
[tocha.Tensor de flutuação de tamanho 15]