📜  Python| PyTorch tanh() 方法

📅  最后修改于: 2022-05-13 01:55:34.480000             🧑  作者: Mango

Python| PyTorch tanh() 方法

PyTorch 是 Facebook 开发的开源机器学习库。它用于深度神经网络和自然语言处理目的。
许多激活函数之一是双曲正切函数(也称为 tanh),其定义为tanh(x) = (e^x - e^{-x}) / (e^x + e^{-x})  .
双曲正切函数在 (-1, 1) 范围内输出,因此将强烈的负输入映射到负值。与 sigmoid函数不同,只有接近零的值被映射到接近零的输出,这在一定程度上解决了“梯度消失”问题。双曲正切函数在每一点都是可微的,它的导数为1 - tanh^2(x)  .由于表达式涉及 tanh函数,因此可以重用其值以使反向传播更快。
尽管与 sigmoid函数相比,网络“卡住”的可能性较低,但双曲正切函数仍然存在“梯度消失”的问题。整流线性单元 (ReLU) 可以用来克服这个问题。
函数torch.tanh() 为 PyTorch 中的双曲正切函数提供支持。它期望以弧度形式输入,输出在 [-∞, ∞] 范围内。输入类型是张量,如果输入包含多个元素,则计算元素双曲正切。

代码#1:

Python3
# Importing the PyTorch library
import torch
 
# A constant tensor of size 6
a = torch.FloatTensor([1.0, -0.5, 3.4, -2.1, 0.0, -6.5])
print(a)
 
# Applying the tanh function and
# storing the result in 'b'
b = torch.tanh(a)
print(b)


Python3
# Importing the PyTorch library
import torch
 
# Importing the NumPy library
import numpy as np
 
# Importing the matplotlib.pyplot function
import matplotlib.pyplot as plt
 
# A vector of size 15 with values from -5 to 5
a = np.linspace(-5, 5, 15)
 
# Applying the hyperbolic tangent function and
# storing the result in 'b'
b = torch.tanh(torch.FloatTensor(a))
 
print(b)
 
# Plotting
plt.plot(a, b.numpy(), color = 'red', marker = "o")
plt.title("torch.tanh")
plt.xlabel("X")
plt.ylabel("Y")
 
plt.show()


输出:

1.0000
-0.5000
 3.4000
-2.1000
 0.0000
-6.5000
[torch.FloatTensor of size 6]


 0.7616
-0.4621
 0.9978
-0.9705
 0.0000
-1.0000
[torch.FloatTensor of size 6]


代码 #2:可视化

Python3

# Importing the PyTorch library
import torch
 
# Importing the NumPy library
import numpy as np
 
# Importing the matplotlib.pyplot function
import matplotlib.pyplot as plt
 
# A vector of size 15 with values from -5 to 5
a = np.linspace(-5, 5, 15)
 
# Applying the hyperbolic tangent function and
# storing the result in 'b'
b = torch.tanh(torch.FloatTensor(a))
 
print(b)
 
# Plotting
plt.plot(a, b.numpy(), color = 'red', marker = "o")
plt.title("torch.tanh")
plt.xlabel("X")
plt.ylabel("Y")
 
plt.show()

输出:

-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 of size 15]