Python实现之激活函数

本文转载自微信公众号「python与大数据分析」,作者一只小小鸟鸟。转载本文请联系python与大数据分析公众号。

目前成都创新互联已为成百上千的企业提供了网站建设、域名、网站空间网站运营、企业网站设计、大柴旦网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。

如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机。

如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

 
 
 
 
  1. #!/usr/bin/env python 
  2. # -*- coding: UTF-8 -*- 
  3. #                     _ooOoo_ 
  4. #                   o8888888o 
  5. #                    88" . "88 
  6. #                 ( | -  _  - | ) 
  7. #                     O\ = /O 
  8. #                 ____/`---'\____ 
  9. #                  .' \\| |// `. 
  10. #                 / \\|||:|||// \ 
  11. #               / _|||||-:- |||||- \ 
  12. #                | | \\\ - /// | | 
  13. #              | \_| ''\---/'' | _/ | 
  14. #               \ .-\__ `-` ___/-. / 
  15. #            ___`. .' /--.--\ `. . __ 
  16. #         ."" '< `.___\_<|>_/___.' >'"". 
  17. #       | | : `- \`.;`\  _ /`;.`/ - ` : | | 
  18. #          \ \ `-. \_ __\ /__ _/ .-` / / 
  19. #      ==`-.____`-.___\_____/___.-`____.-'== 
  20. #                     `=---=' 
  21. ''' 
  22. @Project :pythonalgorithms  
  23. @File :Activationfunction.py 
  24. @Author :不胜人生一场醉@Date :2021/8/11 0:14  
  25. ''' 
  26. import numpy as np 
  27. from matplotlib import pyplot as plt 
  28.  
  29.  
  30. def drawpic(x, y, label=' ', title=' '): 
  31.    plt.figure(figsize=(10, 8)) 
  32.    ax = plt.gca()  # 通过gca:get current axis得到当前轴 
  33.    plt.rcParams['font.sans-serif'] = ['SimHei']  # 绘图中文 
  34.    plt.rcParams['axes.unicode_minus'] = False  # 绘图负号 
  35.    plt.plot(x, y, label=label) 
  36.  
  37.    # 设置图片的右边框和上边框为不显示 
  38.    ax.spines['right'].set_color('none') 
  39.    ax.spines['top'].set_color('none') 
  40.  
  41.    # 挪动x,y轴的位置,也就是图片下边框和左边框的位置 
  42.    # data表示通过值来设置x轴的位置,将x轴绑定在y=0的位置 
  43.    ax.spines['bottom'].set_position(('data', 0)) 
  44.    # axes表示以百分比的形式设置轴的位置,即将y轴绑定在x轴50%的位置 
  45.    ax.spines['left'].set_position(('axes', 0.5)) 
  46.    # ax.spines['left'].set_position(('data', 0)) 
  47.    plt.title(title) 
  48.    plt.legend(loc='upper right') 
  49. plt.show() 
  50.  
  51.  
  52. if __name__ == '__main__': 
  53.    std = 0.1  # 标准差为0.1 
  54.    avg = 1  # 平均值为1 
  55.    x = np.linspace(avg - 5 * std, avg + 5 * std, 100) 
  56.    y = normaldistribution(x, avg, std) 
  57.    drawpic(x, y, 'normaldistribution', 'normal distribution function') 
  58.  
  59.    x = np.linspace(-5, 5, 100) 
  60.    y = sigmoid(x) 
  61.    drawpic(x, y, 'sigmoid', 'sigmoid Activation function') 
  62.  
  63.    y = tanh(x) 
  64.    drawpic(x, y, 'tanh', 'tanh Activation function') 
  65.  
  66.    y = stepfunction(x) 
  67.    drawpic(x, y, 'tanh', 'step Activation function') 
  68.  
  69.    y = relu(x) 
  70.    drawpic(x, y, 'relu', 'relu Activation function') 
  71.  
  72.    y = leakyrelu(x) 
  73.    drawpic(x, y, 'leakyrelu', 'leakyrelu Activation function') 
  74.  
  75.    y = softmax(x) 
  76.    drawpic(x, y, 'softmax', 'softmax Activation function') 
 
 
 
 
  1. # 求正态分布值,avg表示期望值,std表示标准差 
  2. def normaldistribution(x, avg=0, std=1): 
  3.    return np.exp(-(x - avg) ** 2 / (2 * std ** 2)) / (np.sqrt(2 * np.pi) * std) 
  4.    # return np.exp(-(x - avg) ** 2 / (2 * std ** 2)) / (math.sqrt(2 * math.pi) *  

 
 
 
 
  1. # Sigmoid函数 
  2. # Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。 
  3. # 在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的阈值函数,将变量映射到0,1之间 
  4. def sigmoid(x): 
  5.    return 1 / (1 + np.power(np.e, -x)) 

 
 
 
 
  1. # Tanh函数 
  2. # Tanh是双曲函数中的一个,Tanh()为双曲正切。 
  3. # 在数学中,双曲正切“Tanh”是由基本双曲函数双曲正弦和双曲余弦推导而来。 
  4. # 函数tanh(蓝色)和函数sigmoid(橙色)一样,在其饱和区的接近于0,都容易产生后续梯度消失、计算量大的问题 
  5. def tanh(x): 
  6.    return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x)) 

 
 
 
 
  1. # 阶跃函数 
  2. def stepfunction(x): 
  3.    return np.array(x > 0, dtype=np.int32) 

 
 
 
 
  1. # ReLU函数 
  2. # Relu激活函数(The Rectified Linear Unit),用于隐层神经元输出。 
  3. # Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。 
  4. def relu(x): 
  5.    return np.maximum(0, x) 

 
 
 
 
  1. # leaky ReLU函数 
  2. def leakyrelu(x): 
  3.    return np.maximum(0.01 * x, x) 

 
 
 
 
  1. # softmax函数 
  2. # softmax函数可以看做是Sigmoid函数的一般化,用于多分类神经网络输出。 
  3. def softmax(x): 
  4.    return np.exp(x) / np.sum(np.exp(x)) 

本文标题:Python实现之激活函数
链接分享:http://www.36103.cn/qtweb/news19/13869.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联