matplotlib.pyplot绘制常见激活函数图像
通过绘制几个常见的激活函数图像,简单介绍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绘制常见激活函数图像相关推荐
- matplotlib.pyplot绘制函数图像希腊字母latex效果设置
matplotlib.pyplot绘制函数图像希腊字母latex效果设置 用matplotlib绘制函数图像时,有时候为了图形的含义更加清晰明了,需要在函数图形的备注上标明函数表达式,此时往往涉及到用 ...
- 【Matplotlib】绘制多张图像时,上一张图像的内容重叠在下一张图像上
问题描述 在使用matplotlib绘制多张图像时,可能出现两张图像的结果中出现重叠(画布重叠) import matplotlib.pyplot as pltx = [1, 2, 3, 4, 5] ...
- python:matplotlib.pyplot绘制散点图(基础一)
1.先读取excel文件,使用scatter()函数绘制简单的散点图,此时很多变量都为默认值 import matplotlib.pyplot as plt import pandas as pd# ...
- 用matplotlib.pyplot绘制线形图
学习了图例.注释(text.figtext.annotate).网格.刻度线标签等的设置. 现使用它们绘图 . plt.plot(*args,**kwargs) #使用的是命名关键字参数 plt.te ...
- 用matplotlib.pyplot绘制甜甜圈图
# 用matplotlib绘制甜甜圈饼图 # The effect of the donut shape is achieved by setting a width to the pie's wed ...
- vscode中matplotlib.pyplot 绘制的图像显示不出来
在jupyter notebook中图像用matplotlib可以正常显示, 但同样的代码在vscode中无法显示.后来才知道要加上plt.show() plt.show() #少了这句显示不出来奥 ...
- python的matplotlib.pyplot绘制甘特图
博主本来就想简单地找一下代码,画一幅甘特图,结果百度之后发现甘特图的代码基本都不是用matplotlib库,但是像柱状图等统计图通常都是用这个库进行绘制的,所以博主就花了一些时间,自己敲了一份代码,简 ...
- 使用matplotlib.pyplot绘制论文图片
import numpy as np import matplotlib.pyplot as plt plt.figure(figsize=(60, 25)) plt.subplot(241) ax ...
- python绘制mish激活函数图像
直接上代码 import numpy as np import math import matplotlib.pyplot as plt e=math.edef tanh(x):return (e** ...
最新文章
- PHP 取302跳转后真实 URL 的两种方法
- mysql正则表达式配置,MySQL REGEXP:正则表达式
- rhel7.2 mysql_RHEL 7.2 安装 MySQL 5.7.11 二进制版
- VC6工程目录下的文件说明
- ASP.net core 使用UEditor.Core 实现 ueditor 上传功能
- 【转】ADO.Net之SqlConnection、 Sqlcommand的应用学习心得(思维导图,知识解析,案例分析)
- Network Request Failed
- 本地win10服务器不能复制文件,手把手为你解说win10系统所有文件都不能复制的步骤...
- Rancher Labs联手NeuVector,提供容器管理与安全解决方案
- Unity3d发布webplayer 部署到IIS
- mentohust找不到服务器,mentohust最新版
- SM3算法的C++实现(代码)
- 盘点40种常用的芯片封装技术
- 图像处理实践 | 水果图像的识别与分类
- 【python】微信公众号开发
- 解决百度网盘登录安全验证显示空白页
- 英语拼音怎么在计算机上拼出来的,跟我学用汉语拼音在英文键盘上输入汉字(之一)...
- 85寸左右电视怎么选 2023年85寸高性价比电视推荐榜单
- JavaScript----marquee滚动标签 图片无缝滚动 插入百度地图
- Animator 实现动画完成事件的一些思考