tanh函数也是较常用的函数,尤其是在循环网络神经(RNN)中。
其表达式为:
它是由sigmoid表达式变化而来的。是将sigmoid的x轴压缩两倍、y轴增加2倍而来的。
其函数图像为
它的y轴变化范围是-1至1,导数变化范围与sigmoid类似。
tanh导数的推导过程为:
这里不再赘述。
再以代码表示tahn的使用
a = torch.linspace(-1, 1, 10)
# 从-1至1的区间内,等间距的取10个数
print(a)
# 输出a
输出为
tensor([-1.0000, -0.7778, -0.5556, -0.3333, -0.1111, 0.1111, 0.3333, 0.5556,
0.7778, 1.0000])
转化为tahn导数
print(torch.tanh(a))
输出为
tensor([-0.7616, -0.6514, -0.5047, -0.3215, -0.1107, 0.1107, 0.3215, 0.5047,
0.6514, 0.7616])
结果范围在-0.8至0.8之间。
下面再介绍一个非常简单,但在深度学习中使用最为广泛的一个激活函数:relu函数
Relu函数全称:Rectified Linear Unit(整形的线性单元)
其函数表达式为
其函数图像为
由图像可以直观的看出,当数值较小时,直接不响应,而当达到阈值后,线性响应。
relu函数使用广泛的原因在于其导数为:
在进行求导时,relu函数计算非常简单,且没有放大和缩小的功能,这样不易发生梯度离散和梯度爆炸的现象。
relu函数的使用:
a = torch.linspace(-1, 1, 10)
# 从-1至1的区间内,等间距的取10个数
print(a)
# 输出a
print(torch.relu(a))
输出为
tensor([-1.0000, -0.7778, -0.5556, -0.3333, -0.1111, 0.1111, 0.3333, 0.5556,
0.7778, 1.0000])
tensor([0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.1111, 0.3333, 0.5556, 0.7778,
1.0000])
由输出结果可见,当x小于0时,输出直接为0,当x大于0时,进行线性输出。
本文分享自 python pytorch AI机器学习实践 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!