如何在PyTorch中对张量进行逐元素相乘?
torch.mul() 方法用于在PyTorch中对张量进行逐元素乘法。它将张量的对应元素相乘。 我们可以将两个或多个张量相乘。 我们还可以将标量和张量相乘。可以乘以具有相同或不同维度的张量。 最终张量的维度将与维数较高的张量的维度相同。张量的逐元素乘法也称为 哈达玛积。
步骤
-
导入所需库。 在所有以下Python示例中,所需的Python库为 torch 。 确保您已经 安装了它。
-
定义两个或多个PyTorch张量并打印它们。 如果要乘以标量数量,请定义它。
-
使用 torch.mul() 乘以两个或多个张量,并将该值分配给新变量。 您还可以乘以标量数量和张量。 使用此方法乘以张量不会对原始张量进行任何更改。
-
打印最终张量。
示例1
以下程序显示如何将标量与张量相乘。也可以使用张量代替标量获得相同的结果。
# Python程序执行逐元素相乘
# 导入所需的库
import torch
# 创建张量
t = torch.Tensor([2.05, 2.03, 3.8, 2.29])
print("原始张量 t:\n", t)
# 将标量值乘以张量
v = torch.mul(t, 7)
print("逐元素乘法结果:\n", v)
# 以下代码也可以获得相同的结果
t1 = torch.Tensor([7])
w = torch.mul(t, t1)
print("逐元素乘法结果:\n", w)
# 上述操作的另一种方式
t2 = torch.Tensor([7,7,7,7])
x = torch.mul(t, t2)
print("逐元素乘法结果:\n", x)
输出
原始张量 t:
tensor([2.0500, 2.0300, 3.8000, 2.2900])
逐元素乘法结果:
tensor([14.3500, 14.2100, 26.6000, 16.0300])
逐元素乘法结果:
tensor([14.3500, 14.2100, 26.6000, 16.0300])
逐元素乘法结果:
tensor([14.3500, 14.2100, 26.6000, 16.0300])
示例2
以下Python程序显示了如何将2D张量乘以1D 张量。
import torch
# 创建2D张量
T1 = torch.Tensor([[3,2],[7,5]])
# 创建1-D张量
T2 = torch.Tensor([10, 8])
print("T1:\n", T1)
print("T2:\n", T2)
# 将1-D张量乘以2-D张量
v = torch.mul(T1, T2) # v = torch.mul(T2,T1)
print("逐元素乘法结果:\n", v)
输出
T1:
tensor([[3., 2.],
[7., 5.]])
T2:
tensor([10., 8.])
逐元素乘法结果:
tensor([[30., 16.],
[70., 40.]])
示例3
以下Python程序显示了如何将两个2D张量相乘。
import torch
# 创建两个2-D张量
T1 = torch.Tensor([[8,7],[3,4]])
T2 = torch.Tensor([[0,3],[4,9]])
print("T1:\n", T1)
print("T2:\n", T2)
# Multiply above two 2-D tensors
v = torch.mul(T1,T2)
print("逐元素乘法结果:\n", v)
输出
T1:
tensor([[8., 7.],
[3., 4.]])
T2:
tensor([[0., 3.],
[4., 9.]])
逐元素乘法结果:
tensor([[ 0., 21.],
[12., 36.]])
极客教程