PyTorch入门学习 14-torch.normal、均值、平方差

avatar 2024年04月16日18:51:10 0 293 views
博主分享免费Java教学视频,B站账号:Java刘哥

一、什么是均值和标准差

先复习下数学。

给定几个数,如 5、6、8、9

1、均值

平均数,即 (5+6+8+9)/4=7

 

2、标准差

反映各个数与平均值的距离,标准差越大,说明越离散。标准差越小,说明大多数集中在平均值

标准差是平方差的开根号

标准差公式:每个数与平均数作差,然后再平方,求和,再取平均数,最后开根号

计算方差和标准差见下面举例说明

 

3、举例说明

根号2.5=1.5811
[5, 6, 8, 9]
均值是7,
标准差,计算公式: sqrt( (5-7)^2 + (6-7)^2 + (8-7)^2 + (9-7)^2) / 4 )  = 1.5811
方差,计算公式:       ( (5-7)^2 + (6-7)^2 + (8-7)^2 + (9-7)^2 ) / 4 = 2.5


[0, 5, 9, 14]   
均值是7,
标准差,计算公式:  sqrt( ( (0-7)^2 + (5-7)^2 + (9-7)^2 + (14-7)^2 ) / 4 ) = 5.1235
方差,计算公式:        (  (0-7)^2 + (5-7)^2 + (9-7)^2 + (14-7)^2) / 4 = 26.25


结论:[0, 5, 9, 14] 比  [5, 6, 8, 9] 的标准差大,数据的离散程度大

方差是各个数据与平均数的差,然后平方,再求和,再取平均数。方差越大,数据的离散程度越大
标准差是方差的开平方根。同样,标准差越大,数据的离散程度越大

 

二、torch.normal

代码 1

import torch

# mean 表示 均值
mean = 100
# std 表示 标准差。需要是张量
std = torch.tensor([10, 10, 10, 10, 10, 10], dtype=torch.float32)
# 分别遍历张量中每个数值,根据均值和标准差,生成一个张量
x = torch.normal(mean=mean, std=std)
print(x)  # 最终生成的张量中的数值都是在均值(100)附近,且标准差为10

std如果不传,默认为1

mean和std都是可以为数值或者张量

如果mean和std都为张量,其元素个数要相同,因为最终求每个数是一一对应的,即根据第1个均值和第1个标准差获取一个随机数...

size=(3, 2) 

 

代码2

import torch
# mean 和 std 的张量形状可以不一样,但是里面元素个数需要相同,因为是一一对应的
# mean 表示 均值
mean = torch.tensor([100, 100, 100, 100, 100, 100], dtype=torch.float32) # 等价于 mean = 100
# std 表示 标准差。需要是张量
std = torch.tensor([10, 10, 10, 10, 10, 10], dtype=torch.float32) # 等价于 std = 10
# 分别遍历张量中每个数值,根据均值和标准差,生成一个张量
x = torch.normal(mean=mean, std=std)
print(x)  # 最终生成的张量中的数值都是在均值(100)附近,且标准差为10

 

代码3

import torch
# mean 表示 均值
mean = 100
# std 表示 标准差。需要是张量
std = 10
# 分别遍历张量中每个数值,根据均值和标准差,生成一个张量
x = torch.normal(mean=mean, std=std, size=(1, 6))  # 指定生成几个数值,1行6列
print(x)  # 最终生成的张量中的数值都是在均值(100)附近,且标准差为10

 

以上三者代码等价

运行结果

tensor([101.4776,  95.4836, 102.7950, 100.5145,  96.3130,  82.8951])

 

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0