tensorflow激活函数
Bubbliiiing 人气:0前言
激活函数在机器学习中常常用在神经网络隐含层节点与神经网络的输出层节点上,激活函数的作用是赋予神经网络更多的非线性因素,如果不用激励函数,输出都是输入的线性组合,这种情况与最原始的感知机相当,网络的逼近能力相当有限。如果能够引入恰当的非线性函数作为激活函数,这样神经网络逼近能力就能够更加强大。
哦豁,激活函数那么厉害,那常见的激活函数有什么呢?感觉还挺多的。
常见的激活函数种类及其图像
1 sigmoid(logsig)函数
特点:sigmoid函数函数在不同的地方表达方式不同,常用的名称就是sigmoid和logsig,它能够把输入的连续实值变换为0和1之间的输出,如果输入是特别大的负数,则输出为0,如果输入是特别大的正数,则输出为1。
缺点:
- 在深度神经网络中,容易导致梯度爆炸和梯度消失;
- 幂函数运算较慢;
- 不是0均值。
其计算公式为:
其图像如下所示。
2 tanh函数
特点:它能够把输入的连续实值变换为-1和1之间的输出,如果输入是特别大的负数,则输出为-1,如果输入是特别大的正数,则输出为1;
解决了Sigmoid函数的不是0均值的问题。
缺点:梯度消失的问题和幂运算的问题仍然存在。
其计算公式为:
其图像如下所示。
3 relu函数
特点:解决了梯度消失的问题;计算速度非常快,只需要判断输入是否大于0;
收敛速度远快于sigmoid和tanh两个函数。
缺点:不是0均值。
其计算公式为:
其图像如下所示
4 softplus函数
特点:softplus函数相当于平滑版的relu函数。
缺点:不是0均值。
其计算公式为:
其图像如下所示(与relu函数对比)。
tensorflow中损失函数的表达
1 sigmoid(logsig)函数
tf.nn.sigmoid(x, name=None)
2 tanh函数
tf.nn.tanh(x, name=None)
3 relu函数
tf.nn.relu(features, name=None) tf.nn.relu6(features, name=None) #relu6相对于普通relu更容易学习到稀疏特征。
4 softplus函数
tf.nn.softplus(features, name=None)
加载全部内容