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