mxnet.gluon.nn模块解析:常用的激活函数及其作用
MXNet是一个深度学习框架,它提供了nn模块来帮助用户构建神经网络模型。在nn模块中,有许多常用的激活函数可以用来增加神经网络的非线性特性。本文将介绍一些常见的激活函数,并给出相应的使用示例。
1. Sigmoid激活函数
Sigmoid函数将输入映射到[0,1]的范围内,它的公式为:f(x) = 1 / (1 + exp(-x))。
Sigmoid函数常用于二分类问题中,例如判断一张图片是否包含猫。在MXNet中,可以使用Sigmoid函数的Symbol版本,代码示例如下:
import mxnet as mx from mxnet.ndarray import sigmoid x = mx.nd.array([-1, 0, 1]) output = sigmoid(x) print(output)
输出结果为:
[0.26894143 0.5 0.7310586 ]
2. ReLU激活函数
ReLU函数将输入映射到[0,+\infty),它的公式为:f(x) = max(0, x)。
ReLU函数用于增加神经网络的非线性特性,并且相对于Sigmoid函数,ReLU函数的计算速度更快。在MXNet中,可以使用ReLU函数的Symbol版本,代码示例如下:
import mxnet as mx from mxnet.ndarray import relu x = mx.nd.array([-1, 0, 1]) output = relu(x) print(output)
输出结果为:
[0. 0. 1.]
3. LeakyReLU激活函数
LeakyReLU函数是对ReLU函数的改进,它解决了ReLU函数在负数部分导数为0的问题。它的公式为:f(x) = max(0.01x, x)。
在MXNet中,可以使用LeakyReLU函数的Symbol版本,代码示例如下:
import mxnet as mx from mxnet.ndarray import LeakyReLU x = mx.nd.array([-1, 0, 1]) output = LeakyReLU(x, slope=0.01) print(output)
输出结果为:
[-0.01 0. 1. ]
4. Tanh激活函数
Tanh函数将输入映射到[-1,1]的范围内,它的公式为:f(x) = (exp(x) - exp(-x)) / (exp(x) + exp(-x))。
Tanh函数也常用于二分类问题,它的输出范围和Sigmoid函数一样,但是Tanh函数的输出均值为0。在MXNet中,可以使用Tanh函数的Symbol版本,代码示例如下:
import mxnet as mx from mxnet.ndarray import tanh x = mx.nd.array([-1, 0, 1]) output = tanh(x) print(output)
输出结果为:
[-0.7615942 0. 0.7615942]
总结:
本文介绍了一些常见的激活函数并给出了相应的使用示例。这些激活函数可以用于增加神经网络的非线性特性,并提高模型的表达能力。根据具体的问题,选择合适的激活函数可以取得更好的模型性能。
