当前位置: 首页 > news >正文

python学智能算法(三十八)|使用Numpy和PyTorch模块绘制正态分布函数图

【1】引言

前序学习进程中,已经了解到可以将满足正态分布变量的损失函数求解转化为线性回归损失函数求解。
这里先回忆一下正态分布函数式:

p(x)=12πσ2exp(−12σ2(x−μ)2)p(x)=\frac{1}{\sqrt{2\pi\sigma^2}}exp(-\frac{1}{2\sigma^2}(x-\mu)^2)p(x)=2πσ21exp(2σ21(xμ)2)
要想在PyTorch里面用好这个方程,掌握如何控制输入输出获得图像是一个直接、高效的方法。

【2】Numpy和PyTorch模块绘图

【2.1】Numpy绘制正态分布函数图

先练习比较熟悉的Numpy绘图,这里直接给出完整代码:

# 引入模块
import matplotlib.pyplot as plt
import numpy as np
import math# 自定义函数
# 传入参数后,函数输出正态分布函数的计算结果
def normal(x, mu, sigma):p = 1 / math.sqrt(2 * math.pi * sigma**2)return p * np.exp(-0.5 / sigma**2 * (x - mu)**2)x = np.arange(-7, 7, 0.01)
params = [(0, 1), (0, 2), (3, 1)]# 分别绘制每条曲线,而不是一次性传递所有曲线
# 每次输入的均值mu和标准差均不同
for mu, sigma in params:plt.plot(x, normal(x, mu, sigma), label=f'mean {mu}, std {sigma}')plt.legend()plt.show()

由于自变量x的范围已经确定,所以改变代表均值和标准差的params矩阵中的每一组值都可以移动函数图像。
例如这里的(0,1)代表均值为0,标准差为1。对应的图像就是以x=0轴为对称轴,以1为标准差的正态分布图像。
代码运行后获得的图像为:
在这里插入图片描述
有图像可以看出,均值所在的位置就是对称轴的位置;标准差越大,图像越低矮。

【2.2】PyTorch绘制正态分布函数图

使用PyTorch绘图的代码可以参考Numpy的代码,这里直接给出完整代码:

# 引入模块
import torch
import math
import matplotlib.pyplot as plt# 生成x轴数据(使用PyTorch而非NumPy)
x = torch.arange(-7.0, 7.0, 0.01)  # 从-7到7,步长0.01# 定义要绘制的正态分布参数 (均值, 标准差)
params = [(0, 1), (0, 2), (3, 1)]# 绘制每条正态分布曲线
for mu, sigma in params:# 使用PyTorch计算正态分布的概率密度函数# 计算系数部分coefficient = 1 / torch.sqrt(2 * torch.tensor(math.pi) * sigma ** 2)# 计算指数部分exponent = -0.5 / (sigma ** 2) * (x - mu) ** 2# 概率密度值y = coefficient * torch.exp(exponent)# 绘制曲线plt.plot(x.numpy(), y.numpy(), label=f'mean {mu}, std {sigma}')plt.legend()# 设置图表属性
plt.grid(True, alpha=0.3)
plt.show()

代码运行后输出的图像与2.1节一致。
需要注意的细节是,torch.sqrt()函数是对张量取平方根,所以其内部的变量必须定义为张量,这就是torch.tensor(math.pi)定义的必要性。
实际上torch模块也具有自动转化功能,即使不使用torch.tensor(math.pi),直接写作 coefficient = 1 / torch.sqrt(2 * math.pi * sigma ** 2),代码也可以运行。

【3】总结

学习了使用Numpy和PyTorch模块绘制正态分布函数图的基本技巧。

http://www.dtcms.com/a/397934.html

相关文章:

  • 佛山网站建设no.1开源站群cms
  • 阿里云SVN服务器搭建出现svn log messages no date
  • 豆包・图像创作模型Seedream4.0创意玩法大赏:开启 AI 绘画新纪元
  • 强化学习策略梯度算法梳理:从REINFORCE到PPO2(REINFORCE、QAC、A2C、Off-Policy AC、PP01、PPO2))
  • 产品网站开发流程图邹平做网站
  • ruoyi 框架添加新module
  • python解析通达信dat与blk数据文件【附源码】
  • 捕获Mybatis执行的Sql
  • Kubernetes 进阶实战:CRD、Gateway API 与优先级调度
  • Netdata系统监控:30秒定位服务器故障的实践方法
  • 制作 Bash Shell 方式的软件发布安装包的原理和方法
  • 网站标题怎么做链接云服务器建设网站教程
  • 栈-堆理解题(c++)
  • 江西同为科技有限公司亮相2025北京国际两用先进技术装备展览会 —— 致力于电气联接与保护,推动两用技术融合发展
  • 网站首页幻灯片不显示知更鸟wordpress主题
  • React 基础:快速掌握 State、事件和 Hook
  • 烟台网站制作计划wordpress怎么修改logo尺寸
  • Apache Hive 如何在大数据中发挥能量
  • CSS——实现盒子在页面居中
  • RocketMQ相对于RabbitMQ 的优势
  • ELK 企业级日志分析系统(完整版)
  • WaveTerminal+cpolar:提升远程协作效率的开发利器
  • 【记录】Ubuntu系统实现从远程服务器上传下载文件
  • 通过串口控制RDA5807收音模块(stm32+c#上位机)
  • hive表元数据修复脚本
  • React中的Hook
  • React简单例子
  • Playwright MCP 服务器对比高层级的 MCP 服务器解决方案
  • app下载网站模板wordpress将公网ip改为域名
  • 个人做网站如何推广安全优化大师