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

pytorch基本运算-torch.normal()函数生成的随机数据添加噪声

【1】引言

前序学习进程中,已经学习了https://blog.csdn.net/weixin_44855046/article/details/148383432?spm=1001.2014.3001.5502,掌握了一些基本运算方法。
此外也学习了使用PyTorch模块的normal()函数绘制正态分布函数图,掌握了torch.normal()函数生成正态分布随机数的基本技巧。
今天的学习任务就是将两种计算方法结合起来,顺路学习一个强大的新函数torch.matmul()。

【2】矩阵运算

前序学习已经知道:

  • hadamard积是元素对位相乘,用“*”连接张量
  • 点积是元素对位相乘后再求和,用“torch.sum(*)”连接张量,
  • 矩阵乘法是第一个矩阵的第i行与第二个矩阵第j列相乘的效果,用“torch.mm()”连接矩阵,就是大家所熟悉的线性代数中得矩阵乘法,
  • torch.normal()函数生成正态分布随机数。

然后我们尝试写一段代码:

# 引入模块
import matplotlib.pyplot as plt
import torch
from matplotlib.pyplot import subplots
from sympy.abc import alpha# 定义随机数数量
n_features=3000
# 生成随机数
w=torch.tensor([1,2]).float()
print(len(w))
x=torch.normal(0,1,(n_features,len(w)))
n=torch.normal(0,0.01,(n_features,))

这段代码的作用是,生成一不同的随机数,这里取len(w)有一个小细节:
当w是1行多列的数据形式时,len(w)=列数;当w是多行多列的数据形式时,len(w)=行数。
此时就会输出不同维度数的x,n是最为常规的正态分布随机数,可以理解为一个行向量。
然后展开计算:

# 随机数计算
c=2*x
d=torch.matmul(x,w)+n
print('d=',d)

这里使用了torch.matmul(x,w)函数,之所以说torch.matmul(x,w)函数很强大,是因为这个函数可以自动根据x和w的维度自行选择计算方法:
如果两个二维张量满足常规矩阵计算方法的维度,它们就会按照常规矩阵乘法的计算法则计算;
如果两个二维张量不满足常规矩阵计算方法的维度,它们会先自动广播,然后按照常规矩阵乘法的计算法则计算;
如果两个一维张量相乘,它们会按照元素对位相乘后叠加,类似于“torch.sum(*);
其他的暂时不学,用到了再说,总之就是很灵活。

这里定义的x张量的列数和w的行数相等,每行数据是[x1,x2],所以会按照每行数据x1w1+x2w2+n的方式计算。
然后输出图像就可以:

# 绘制综合效果
fig,ax=subplots(3,1)
ax[0].scatter(x[:,(0)],d.flatten())
ax[1].hist(d.flatten(),bins=50,color='blue',alpha=0.5)
ax[2].plot(x[:,(1)],d.flatten(),color='blue',alpha=0.5)
plt.grid(True)
plt.show()

代码运行效果为:
在这里插入图片描述

此时的完整代码为:

# 引入模块
import matplotlib.pyplot as plt
import torch
from matplotlib.pyplot import subplots
from sympy.abc import alpha# 定义随机数数量
n_features=3000
# 生成随机数
w=torch.tensor([1,2]).float()
print(len(w))
x=torch.normal(0,1,(n_features,len(w)))
n=torch.normal(0,0.01,(n_features,))# 随机数计算
c=2*x
d=torch.matmul(x,w)+n
print('d=',d)# 绘制综合效果
fig,ax=subplots(3,1)
ax[0].scatter(x[:,(0)],d.flatten())
ax[1].hist(d.flatten(),bins=50,color='blue',alpha=0.5)
ax[2].plot(x[:,(1)],d.flatten(),color='blue',alpha=0.5)
plt.grid(True)
plt.show()

【3】总结

学习了torch.normal()函数生成的随机数据,再对随机数据使用torch.matmul(x,w)函数进行张量计算和添加噪声的基本操作。

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

相关文章:

  • 通辽建设工程网站网上做效果图网站有哪些
  • DragonBalls_One013
  • 湖南网站建设哪家有定制软件如何收费
  • 专门做招商的网站是什么wordpress两栏
  • 七彩喜艾灸机器人:传统技艺与AI的共生共舞
  • svn: E200009
  • SVN 主分支合并之通过主分支合并子分支操作流程
  • 个人做美食视频网站本地网站地图生成器
  • 长沙的企业网站建设网站上线详细步骤
  • CY3-草氨酸的化学研究中的应用
  • 哪家公司建站比较好建筑英才招聘网
  • 优时代网站建设数据型网站 建设方案
  • java后端工程师进修ing(研一版‖day50)
  • 正常成都建设网站组织建设情况怎么写
  • 网站建设与管理模拟题1镇江网站建设公司
  • 百度网站统计添加网址苏州知名网站建设建站公司
  • 线程池性能分析与优化完全指南
  • 企业模板免费下载seo精灵
  • wordpress+整站下载前端开发和后端开发哪个赚钱
  • 师生健康信息管理系统|基于SpringBoot和Vue的师生健康信息管理系统(源码+数据库+文档)
  • 唐山做网站那家好推广新网站
  • 【JS】区分移动端和PC端方法
  • 时序论文速递 | 12篇前沿论文包含:时间序列异常检测,时间序列预测等方向!(09.22-09.26)
  • 佛山seo关键词视频优化是什么意思
  • 网站备案号有效期网站空间购买哪家好
  • 如何建立一个网站卖货网站镜像代理怎么做
  • 辽宁网站网站建设招标代理公司
  • 数智化工厂的关键新技术
  • 阿里巴巴公司网站建设报告老师怪怪怪怪物
  • 复现 Qwen3Guard 实时安全,逐词响应