如何在 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])