激活函数

  • 通过设置单独的激活层实现

    1
    2
    3
    4
    from keras.layers import Activation, Dense

    model.add(Dense(64))
    model.add(Activation('tanh'))
  • 也可以在构造层对象时通过传递activation参数实现

    1
    model.add(Dense(64, activation='tanh'))
  • 可以通过传递一个逐元素运算的Theano/TensorFlow/CNTK函数 来作为激活函数

    1
    2
    3
    4
    from keras import backend as K

    model.add(Dense(64, activation=K.tanh))
    model.add(Activation(K.tanh))

    softmax

1
2
3
4
softmax(
x(tensor),
axis=-1/int
)

Softmax激活函数

  • 参数

    • x:张量
    • axis:整数,代表softmax所作用的维度
  • 返回值:softmax变换后的张量。

  • 异常:

    • ValueError: In case dim(x) == 1

elu

1
2
3
4
elu(
x,
alpha=1.0/num
)

指数线性单元

selu

1
selu(x)

可伸缩的指数线性单元(SELU)。

  • 参数

    • x: 一个用来用于计算激活函数的张量或变量。
  • 返回值:可伸缩线性指数激活

    • 可伸缩的指数线性激活:scale * elu(x, alpha)scale, alpha应该是预定义常数?)
  • 注意

    • 与「lecun_normal」初始化方法一起使用。
    • 与 dropout 的变种「AlphaDropout」一起使用。
    • 只要正确初始化权重(参见 lecun_normal 初始化方法) 并且输入的数量「足够大」(参见参考文献获得更多信息) ,选择合适的alphascale的值,就可以在两个连续层 之间保留输入的均值和方差
  • 参考文献

softplus

1
softplus(x)

Softplus 激活函数

  • 返回值:$log(exp(x) + 1)$

softsign

1
softsign(x)

Softsign 激活函数

  • 返回值:$x / (abs(x) + 1)$

relu

1
2
3
4
5
relu(
x,
alpha=0.0,
max_value=None
)

线性修正单元。

  • 参数

    • alpha:负数部分的斜率。默认为 0。
    • max_value:输出的最大值
  • 返回值:线性修正单元激活

    • x > 0:返回值为 x
    • x < 0:返回值为 alpha * x
    • 如果定义了max_value,则结果将截断为此值

tanh

1
tanh(x)

双曲正切激活函数

sigmoid

1
sigmoid(x)

Sigmoid 激活函数

hard_sigmoid

1
hard_sigmoid(x)

Hard sigmoid 激活函数。

  • 说明

    • 计算速度比 sigmoid 激活函数更快。
  • 返回值:Hard sigmoid 激活:

    • x < -2.5:返回 0
    • x > 2.5:返回 1
    • -2.5 <= x <= 2.5:返回 0.2 * x + 0.5

linear

1
linear(x)

线性激活函数(即不做任何改变)

Author

UBeaRLy

Posted on

2019-03-21

Updated on

2019-02-17

Licensed under

Comments