深度学习中的张量 - 使用PyTorch进行广播和元素级操作
元素级是什么意思?
元素级操作在神经网络编程中与张量的使用非常常见。让我们从一个元素级操作的定义开始这次讨论。
一个_元素级_操作是在两个张量之间进行的操作,它作用于各自张量中的相应元素。
一个_元素级_操作在张量之间的相应元素上进行操作。
如果两个元素被认为在张量中占据相同的位置,那么这两个元素就被称为相应的元素。位置由用来定位每个元素的索引决定。
假设我们有以下两个张量:
> t1 = torch.tensor([
[1,2],
[3,4]
], dtype=torch.float32)
> t2 = torch.tensor([
[9,8],
[7,6]
], dtype=torch.float32)
这两个张量都是秩为2的张量,形状为2 x 2
。
这意味着我们有两个长度为二的轴。第一个轴的元素是数组,第二个轴的元素是数字。
> print(t1[0])
tensor([1., 2.])
> print(t1[0][0])
tensor(1.)
这是我们现在在这个系列中用来看到的东西。好了,让我们在此基础上进一步讨论。
我们知道,如果两个元素占据张量中的相同位置,那么它们就被认为是相应的元素,位置由用来定位每个元素的索引决定。让我们看看相应元素的例子。
> t1[0][0]
tensor(1.)
> t2[0][0]
tensor(9.)
这使我们能够看到,t1
中1
的相应元素是t2
中的9
。
通过索引定义的对应关系很重要,因为它揭示了元素级操作的一个重要特征。我们可以推断出,为了执行元素级操作,张量必须具有相同数量的元素。
我们将进一步限制这个陈述。为了在它们上执行元素级操作,两个张量必须具有相同的形状。
加法是一个元素级操作
让我们看看我们的第一个元素级操作,加法。别担心,它会变得更有趣。
> t1 + t2
tensor([[10., 10.],
[10., 10.]])
这使我们能够看到,张量之间的加法是一个元素级操作。相应位置的每对元素都被加在一起,产生一个形状相同的新张量。
所以,加法是一个元素级操作,实际上,所有的算术操作,加、减、乘和除都是元素级操作。