PyTorch ist eine von Facebook entwickelte Open-Source-Bibliothek für machine learning. Es wird für die Verarbeitung von tiefen neuronalen Netzen und natürlichen Sprachen verwendet.

Eine der vielen Aktivierungsfunktionen ist die hyperbolische Tangentenfunktion (auch als tanh bekannt), die definiert ist als tanh (x) = (e ^ x - e ^ {- x}) / (e ^ x + e ^ {- x}).

Die hyperbolische Tangentenfunktion gibt im Bereich (-1, 1) aus und ordnet somit stark negative Eingaben negativen Werten zu. Im Gegensatz zur Sigmoid-Funktion werden nur Werte nahe Null auf Ausgänge nahe Null abgebildet, und dies löst das Problem der „verschwindenden Gradienten“ bis zu einem gewissen Grad. Die hyperbolische Tangentenfunktion ist an jedem Punkt differenzierbar und ihre Ableitung zeigt sich1 - tanh ^ 2 (x) . Da der Ausdruck die tanh-Funktion beinhaltet, kann sein Wert wiederverwendet werden, um die Rückwärtsausbreitung zu beschleunigen.

Trotz der geringeren Wahrscheinlichkeit, dass das Netzwerk im Vergleich zur Sigmoidfunktion „hängen bleibt“, leidet die hyperbolische Tangentenfunktion immer noch unter „verschwindenden Gradienten“. Rectified Linear Unit (ReLU) kann verwendet werden, um dieses Problem zu lösen.

Die Funktion torch.tanh()unterstützt die hyperbolische Tangentenfunktion in PyTorch. Es erwartet die Eingabe im Bogenmaß und die Ausgabe liegt im Bereich [-∞, ∞]. Der Eingabetyp ist Tensor. Wenn die Eingabe mehr als ein Element enthält, wird die elementweise hyperbolische Tangente berechnet.



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

Parameter :
x :
Name des Eingangstensors (optional): Ausgangstensor

Rückgabetyp : Ein Tensor mit demselben Typ wie der von x.

Code # 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) 

Ausgabe:

 1.0000
-0,5000
 3.4000
-2.1000
 0,0000
-6,5000
[torch.FloatTensor der Größe 6]
 0,7616
-0,4621
 0,9978
-0,9705
 0,0000
-1.0000
[torch.FloatTensor der Größe 6]

 

Code 2: Visualisierung

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() 

Ausgabe:

-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
[torch.FloatTensor der Größe 15]