First of all, 有一篇总结的很好的博文:
https://blog.youkuaiyun.com/qq_31347869/article/details/102799720
1. Activation Function
1) sigmoid


import numpy as np
def sigmoid(x):
s = 1 / (1 + np.exp(-x))
return s
x = np.array([1, 2, 3])
sigmoid(x)
>>>
array([ 0.73105858, 0.88079708, 0.95257413])
2) softmax

import numpy as np
def softmax(x):
x_exp = np.exp(x)
x_sum = np.sum(x_exp, axis = 1, keepdims = True)
s = x_exp / x_sum
return s
x = np.array([[-3, 2, -1, 0]])
print(x)
print(softmax(x))
>>>
[[-3 2 -1 0]]
[[ 0.0056533 0.83902451 0.04177257 0.11354962]]
Note: x_sum = np.sum(x_exp, keepdims = True)也可,因为x_exp是一维向量。
axis=1 以竖轴为基准 ,同行相加
keepdims主要用于保持矩阵的二维特性

实际应用中,e^V较大,所以:

3)tanh


Summary:激活函数的选择
(1)首选ReLU函数(只在隐藏层中使用),性能好、速度快;
(2)在ReLU出现很多死神经元的情况下,考虑使用Leaky ReLU函数;
(3)建议只在全连接层使用sigmoid函数;
(4)tanh函数在某些情况下有比较好的效果,但应用场景比较少;
(5)Maxout效果虽好但参数翻倍,因此一般不用。
本文详细介绍了常用的激活函数,包括sigmoid、softmax、tanh及ReLU等,并提供了Python实现代码。此外,还给出了不同场景下选择合适激活函数的建议。

被折叠的 条评论
为什么被折叠?



