通过绘制几个常见的激活函数图像,简单介绍pyplt绘制子图的方法,包括子图绘制,间距调整,子图和主图标题设置,子图坐标轴标签设置,子图坐标范围调整等。

下面是代码示例和绘图结果示例


# 该代码用于绘制常见激活函数的图像,同时作为一个matplotlib绘制子图的实例import numpy as np
from matplotlib import pyplot as plt
import math
import pygal
import matplotlib# 函数定义,这是截至2017.11比较常见的激活函数
def fun_Sigmoid(x: float):"""Sigmoid,逻辑函数"""y = 1 / (1 + math.exp(-x))return ydef fun_Tanh(x: float):"""双曲正切函数"""y = math.tanh(x)return ydef fun_ReLU(x: float):"""线性整流函数 Rectified Linear Unit,简称为ReLU"""y = max(0, x)return ydef fun_L_ReLU(x: float, alpha=0.01):"""Leaky ReLU函数"""if x < 0:y = alpha * xelse:y = xreturn ydef fun_ELU(x: float, alpha=1.0):"""Exponential Linear Unit函数"""if x < 0:y = alpha * (math.exp(x) - 1)else:y = xreturn ydef fun_SELU(x: float):"""SELU函数"""if x < 0:y = 1.0507 * 1.6733 * (math.exp(x) - 1)else:y = 1.0507 * xreturn ydef fun_Softplus(x: float):"""Softplus函数"""y = math.log(1 + math.exp(x))return ydef fun_Swish(x: float):"""Swish函数"""y = x / (1 + math.exp(-x))return y# 设置显示中文字体
matplotlib.rcParams['font.sans-serif'] = ['SimHei']  # 用于正常显示中文,参数可更改为其他字体
matplotlib.rcParams['axes.unicode_minus'] = False  # 用于正常显示正负号
# 设置文件路径和文件名
filepath = r'.\user_output'
filename = r'\activation_function_fig.png'x_list = np.linspace(-10, 10, num=10000)  # 设置自变量x的范围
line_color_list = ['#c62828', '#ad1457', '#6a1b9a','#4527a0', '#1565c0', '#00838f', '#2e7d32', '#f9a825']  # 用于指定线颜色的列表
list_name_list = ['y_list_sig', 'y_list_tanh', 'y_list_relu','y_list_lrelu', 'y_list_elu', 'y_list_selu', 'y_list_soft', 'y_list_swish']  # 指定因变量y列表的名字
fun_list = [fun_Sigmoid, fun_Tanh, fun_ReLU,fun_L_ReLU, fun_ELU, fun_SELU, fun_Softplus, fun_Swish]  # 保存函数名的列表
fun_name_list = ['Sigmoid', 'Tanh', 'ReLU','Leaky ReLU', 'ELU', 'SELU', 'Softplus', 'Swish']  # 保存激活函数名字的列表
y_array_list = []  # 创建用于保存不同函数得出的因变量序列的列表
for list_name in list_name_list:list_name = np.array([])y_array_list.append(list_name)  # 先使用空列表填充列表
for i in range(len(list_name_list)):for a_x in x_list:y_array_list[i] = np.append(y_array_list[i], fun_list[i](a_x))  # 将计算得到的y序列放入列表# plt.figure(figsize=(15, 15), dpi=80) #这部分是绘制主图的
# plt.xticks(np.linspace(-10, 10, 20))
# plt.yticks(np.linspace(-10, 10, 20))main_fig, sub_fig = plt.subplots(2, 4, figsize=(18, 10), dpi=300) # 创建图形,指定子图的排列(行,列),同时设置图形的大小和分辨率
# print(type(main_fig), type(sub_fig))
# 这个函数返回的是一个元组(tuple)。这个元组中包含了一个<class 'matplotlib.figure.Figure'>和一个<class 'numpy.ndarray'>。
# 这个<class 'numpy.ndarray'>中保存了子图对象
# 这种调用方法相当于将元组解压后传递给两个变量
for i in range(4):  # 绘制第一行的四个图sub_fig[0][i].plot(x_list, y_array_list[i], color=line_color_list[i], label=str(fun_name_list[i]), linewidth=1.5)# 由于sub_fig数组中保存了子图对象,因此调用时可以使用索引,传入参数(自变量序列,因变量序列,线的颜色,线的标签,线宽)等sub_fig[0][i].legend()  # 设置显示图例sub_fig[0][i].grid()  # 设置显示网格sub_fig[0][i].set_title(fun_name_list[i])  # 设置显示子图标题sub_fig[0][i].set_xlabel('X')  # 设置显示子图的xy轴标签sub_fig[0][i].set_ylabel('Y')# sub_fig[0][i].set_xlim(-10.0, 10.0)  # 设置子图的坐标范围# sub_fig[0][i].set_ylim(-10.0, 10.0)
for i in range(4):  # 绘制第二行的四个图sub_fig[1][i].plot(x_list, y_array_list[i + 4], color=line_color_list[i + 4], label=str(fun_name_list[i + 4]),linewidth=1.5)sub_fig[1][i].legend()sub_fig[1][i].grid()sub_fig[1][i].set_title(fun_name_list[i + 4])sub_fig[1][i].set_xlabel('X')sub_fig[1][i].set_ylabel('Y')# sub_fig[1][i].set_xlim(-10.0, 10.0)  # 设置子图的坐标范围# sub_fig[1][i].set_ylim(-10.0, 10.0)
main_fig.suptitle('Common Activation Functions')  # 设置主图的标题
plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=0.3, hspace=0.25)
# 调整子图的布局间距等,wspace宽度方向的间距,hspace高度方向的间距(note:此处应当有其他方法,但目前未知)plt.savefig(filepath + filename)  # 保存文件
plt.show()# 使用pygal绘制
fun_fig = pygal.Line()
for i in range(len(y_array_list)):fun_fig.add(fun_name_list[i], y_array_list[i])
# fun_fig.range(-20, 20)
fun_fig.render_to_file('.\user_output\fun_fig.svg')

matplotlib.pyplot绘制常见激活函数图像相关推荐

  1. matplotlib.pyplot绘制函数图像希腊字母latex效果设置

    matplotlib.pyplot绘制函数图像希腊字母latex效果设置 用matplotlib绘制函数图像时,有时候为了图形的含义更加清晰明了,需要在函数图形的备注上标明函数表达式,此时往往涉及到用 ...

  2. 【Matplotlib】绘制多张图像时,上一张图像的内容重叠在下一张图像上

    问题描述 在使用matplotlib绘制多张图像时,可能出现两张图像的结果中出现重叠(画布重叠) import matplotlib.pyplot as pltx = [1, 2, 3, 4, 5] ...

  3. python:matplotlib.pyplot绘制散点图(基础一)

    1.先读取excel文件,使用scatter()函数绘制简单的散点图,此时很多变量都为默认值 import matplotlib.pyplot as plt import pandas as pd# ...

  4. 用matplotlib.pyplot绘制线形图

    学习了图例.注释(text.figtext.annotate).网格.刻度线标签等的设置. 现使用它们绘图 . plt.plot(*args,**kwargs) #使用的是命名关键字参数 plt.te ...

  5. 用matplotlib.pyplot绘制甜甜圈图

    # 用matplotlib绘制甜甜圈饼图 # The effect of the donut shape is achieved by setting a width to the pie's wed ...

  6. vscode中matplotlib.pyplot 绘制的图像显示不出来

    在jupyter notebook中图像用matplotlib可以正常显示, 但同样的代码在vscode中无法显示.后来才知道要加上plt.show() plt.show() #少了这句显示不出来奥 ...

  7. python的matplotlib.pyplot绘制甘特图

    博主本来就想简单地找一下代码,画一幅甘特图,结果百度之后发现甘特图的代码基本都不是用matplotlib库,但是像柱状图等统计图通常都是用这个库进行绘制的,所以博主就花了一些时间,自己敲了一份代码,简 ...

  8. 使用matplotlib.pyplot绘制论文图片

    import numpy as np import matplotlib.pyplot as plt plt.figure(figsize=(60, 25)) plt.subplot(241) ax ...

  9. python绘制mish激活函数图像

    直接上代码 import numpy as np import math import matplotlib.pyplot as plt e=math.edef tanh(x):return (e** ...

最新文章

  1. PHP 取302跳转后真实 URL 的两种方法
  2. mysql正则表达式配置,MySQL REGEXP:正则表达式
  3. rhel7.2 mysql_RHEL 7.2 安装 MySQL 5.7.11 二进制版
  4. VC6工程目录下的文件说明
  5. ASP.net core 使用UEditor.Core 实现 ueditor 上传功能
  6. 【转】ADO.Net之SqlConnection、 Sqlcommand的应用学习心得(思维导图,知识解析,案例分析)
  7. Network Request Failed
  8. 本地win10服务器不能复制文件,手把手为你解说win10系统所有文件都不能复制的步骤...
  9. Rancher Labs联手NeuVector,提供容器管理与安全解决方案
  10. Unity3d发布webplayer 部署到IIS
  11. mentohust找不到服务器,mentohust最新版
  12. SM3算法的C++实现(代码)
  13. 盘点40种常用的芯片封装技术
  14. 图像处理实践 | 水果图像的识别与分类
  15. 【python】微信公众号开发
  16. 解决百度网盘登录安全验证显示空白页
  17. 英语拼音怎么在计算机上拼出来的,跟我学用汉语拼音在英文键盘上输入汉字(之一)...
  18. 85寸左右电视怎么选 2023年85寸高性价比电视推荐榜单
  19. JavaScript----marquee滚动标签 图片无缝滚动 插入百度地图
  20. Animator 实现动画完成事件的一些思考

热门文章

  1. python xlsx追加数据_python 实现众多excel表格中关键数据追加项目配置库台账.xlsx...
  2. 谷歌浏览器使用迅雷下载资源
  3. 传印度电商巨头Snapdeal融资5亿美元 阿里参投
  4. 基于MQTT百度天工服务器,实现微信小程序控制ESP8266,完成遥控小车的简单控制
  5. MATLAB中是用哪些符号表示那些数学常数的
  6. 什么是C/S、B/S架构
  7. matlab设计二进制波形,二进制调制系统的仿真与分析
  8. winform打印和预览
  9. webpack打包成zip
  10. MySQL-数据目录