📜  在 Pytorch 中计算数据集的均值和标准差

📅  最后修改于: 2022-05-13 01:54:36.876000             🧑  作者: Mango

在 Pytorch 中计算数据集的均值和标准差

PyTorch提供了各种内置的数学实用程序来监控手头数据集的描述性统计数据,其中之一是均值和标准差。用 表示的均值是通过找到给定数据集的平均值来计算的中心趋势的度量之一。用 σ 表示的标准偏差是离散度的一种度量,它表示值与平均值的接近程度。均值和标准差的公式如下:-

安装 PyTorch:

安装PyTorch是一样的,在Python的任何其他库。

pip install torch

或者,如果您想在 conda 环境中安装它,您可以使用以下命令:-

conda install pytorch cudatoolkit=10.2 -c pytorch

一维张量的均值和标准差:

在了解如何找到均值和标准差之前,让我们通过生成一个随机数组来准备我们的数据集。



import torch
data = torch.rand(10)

现在我们有了数据,我们可以通过调用mean()std()方法找到均值和标准差。

mean_tensor = data.mean()
std_tensor = data.std()

上述方法完美运行,但值作为张量返回,如果您想提取该张量中的值,您可以通过索引访问它,也可以调用item()方法。

mean = data.mean().item()
std = data.std().item()

例子:

Python3
import torch
  
# Generate a tensor of 10 numbers
data = torch.rand(10)     
  
mean_tensor = data.mean()
std_tensor = data.std()
  
print(mean_tensor)
print(std_tensor)
  
mean = data.mean().item()
std = data.std().item()
  
print(mean)
print(std)


Python3
import torch
  
# Generate a tensor of shape (5,3)
data = torch.rand(5,3)      
  
total_mean = data.mean()
total_std = data.std()
  
print(total_mean)
print(total_std)
  
# Mean and STD of columns
mean_col_wise = data.mean(axis = 0)
std_col_wise = data.std(axis = 0)
  
print(mean_col_wise)
print(std_col_wise)
  
# Mean and STD of rows
mean_row_wise = data.mean(axis = 1)
std_row_wise = data.std(axis = 1)
  
print(mean_row_wise)
print(std_row_wise)


输出:

tensor(0.3901)
tensor(0.2846)
0.39005300402641296
0.2846093773841858

二维张量的均值和标准差:

在二维张量中,均值与一维张量相同,除了这里我们可以传递参数来查找行和列的均值和标准差。让我们从获取数据开始。

import torch
data = torch.rand(5,3)

按原样调用的mean()std()方法将返回整个数据集的总标准差,但如果我们传递轴参数,我们可以找到行和列的均值和标准差。对于axis = 0 ,我们得到一个张量,每列的值都是均值或标准差。对于axis = 1 ,我们得到一个张量,每行的值都是均值或标准差。

total_mean = data.mean()
total_std = data.std()

# Mean and STD of columns
mean_col_wise = data.mean(axis = 0)
std_col_wise = data.std(axis = 0)

# Mean and STD of rows
mean_row_wise = data.mean(axis = 1)
std_row_wise = data.std(axis = 1)

例子:

蟒蛇3

import torch
  
# Generate a tensor of shape (5,3)
data = torch.rand(5,3)      
  
total_mean = data.mean()
total_std = data.std()
  
print(total_mean)
print(total_std)
  
# Mean and STD of columns
mean_col_wise = data.mean(axis = 0)
std_col_wise = data.std(axis = 0)
  
print(mean_col_wise)
print(std_col_wise)
  
# Mean and STD of rows
mean_row_wise = data.mean(axis = 1)
std_row_wise = data.std(axis = 1)
  
print(mean_row_wise)
print(std_row_wise)

输出:

tensor(0.6483)
tensor(0.2797)
tensor([0.6783, 0.5986, 0.6679])
tensor([0.2548, 0.2711, 0.3614])
tensor([0.5315, 0.7770, 0.7785, 0.3403, 0.8142])
tensor([0.3749, 0.2340, 0.1397, 0.2432, 0.1386])