如何在 PyTorch 中计算张量的平均值和标准差?

pythonpytorchserver side programmingprogramming

PyTorch 张量类似于 numpy 数组。唯一的区别是张量利用 GPU 来加速数值计算。张量的平均值是使用 torch.mean() 方法计算的。它返回输入张量中所有元素的平均值。我们还可以按行和按列计算平均值,提供合适的轴或维度。

张量的标准差是使用 torch.std() 计算的。它返回张量中所有元素的标准差。像平均值一样,我们也可以按行或列计算标准差

步骤

  • 导入所需的库。在以下所有 Python 示例中,所需的 Python 库都是 torch。请确保您已经安装了它。

  • 定义一个 PyTorch 张量并打印它。

  • 使用 torch.mean(input, axis) 计算平均值。这里,输入是应计算平均值的张量,axis(或dim)是维度列表。将计算出的平均值分配给新变量。

  • 使用 torch.std(input, axis) 计算标准差。这里,输入是张量(或dim)是维度列表。将计算出的标准差分配给新变量。

  • 打印上面计算出的平均值和标准差。

示例 1

以下 Python 程序显示如何计算 1D 张量的平均值和标准差。

# 用于计算平均值和标准的 Python 程序
# 1D 张量的偏差
# 导入库
import torch

# 创建张量
T = torch.Tensor([2.453, 4.432, 0.754, -6.554])
print("T:", T)

# 计算平均值和标准差
mean = torch.mean(T)
std = torch.std(T)

# 打印计算出的平均值和标准差偏差
print("平均值:", 平均值)
print("标准偏差:", std)

输出

T:张量([ 2.4530, 4.4320, 0.7540, -6.5540])
平均值:张量(0.2713)
标准偏差:张量(4.7920)

示例 2

以下 Python 程序展示了如何计算二维张量在两个维度上的平均值和标准偏差,即行方向和列方向

# 导入必要的库
import torch

# 创建 3x4 二维张量
T = torch.Tensor([[2,4,7,-6],
[7,33,-62,23],
[2,-6,-77,54]])
print("T:\n", T)

# 计算平均值和标准差
mean = torch.mean(T)
std = torch.std(T)
print("平均值:", mean)
print("标准差:", std)

# 计算列平均值和标准差
mean = torch.mean(T, axis = 0)
std = torch.std(T, axis = 0)
print("列平均值:\n", mean)
print("列标准差:\n", std)

# 计算行平均值和标准差
mean = torch.mean(T, axis = 1)
std = torch.std(T, axis = 1)
print("逐行平均值:\n", mean)
print("逐行标准差:\n", std)

输出

T:
tensor([[ 2., 4., 7., -6.],
         [ 7., 33., -62., 23.],
         [ 2., -6., -77., 54.]])
平均值:tensor(-1.5833)
标准差:tensor(36.2703)
列平均值:
tensor([ 3.6667, 10.3333, -44.0000, 23.6667])
列标准差:
tensor([ 2.8868, 20.2567, 44.7996, 30.0056])
行平均值:
tensor([ 1.7500, 0.2500, -6.7500])
行标准差:
tensor([ 5.5603, 42.8593, 53.8602])

相关文章