PyTorch - 11 - 深度学习张量 - 使用PyTorch进行广播和明智的操作
What Does Element-Wise Mean?
Element-Wise操作
是神经网络编程中带有张量的极其常见的操作。让我们以元素操作的定义开始讨论。
逐元素操作是两个张量之间的操作,其对相应张量内的相应元素进行操作
。
基于元素的操作对张量之间的相应元素进行操作。
如果两个元素在张量内占据相同位置,则认为这两个元素是对应的。该位置由用于定位每个元素的索引确定。
假设我们有以下两个张量:
> t1 = torch.tensor([
[1,2],
[3,4]
], dtype=torch.float32)
> t2 = torch.tensor([
[9,8],
[7,6]
], dtype=torch.float32)
这两个张量均为2 x 2
形状的2级张量
。
这意味着我们有两个轴,每个轴的长度均为两个元素。第一轴的元素是数组,第二轴的元素是数字。
# Example of the first axis
> print(t1[0])
tensor([1., 2.])
# Example of the second axis
> print(t1[0][0])
tensor(1.)
这是我们现在在本系列中经常看到的那种东西。好吧,让我们以此为基础。
我们知道,如果两个元素在张量内处于相同位置,则认为这两个元素是对应的,并且该位置由用于定位每个元素的索引确定。让我们看一个对应元素的例子。
> t1[0][0]
tensor(1.)
> t2[0][0]
tensor(9.)
这使我们看到t1中1的对应元素是t2
中9
的元素。
对应关系由索引定义。这很重要,因为它揭示了元素方式操作的重要特征。我们可以推断出张量必须具有相同数量的元素才能执行按元素的操作。
我们将继续进行此声明,使其更具限制性。两个张量必须具有相同的形状,以便对其执行按元素的操作。
Addition Is An Element-Wise Operation
让我们看一下我们第一个基于元素的操作加法。 不用担心 它将变得更加有趣。
> t1 + t2
tensor([[10., 10.],
[10., 10.]])
这使我们看到张量之间的加法是元素操作。 对应位置的每对元素被加在一起以产生相同形状的新张量。
因此,加法是按元素进行的运算,实际上,所有算术运算(加,减,乘和除)都是按元素进行的运算。
Arithmetic Operations Are Element-Wise Operations
我们通常用张量看到的运算是使用标量值的算术运算。我们可以通过两种方式执行此操作:
(1)使用以下符号操作:
> print(t + 2)
tensor([[3., 4.],
[5., 6.]])
> print(t - 2)
tensor([[-1., 0.],
[ 1., 2.]])
> print(t * 2)
tensor([[2., 4.],
[6., 8.]])
> print(t / 2)