PyTorchbroadcasting
基于numpy广播语义,可以通过阅读numpy broadcasting rules
或PyTorch广播指南来理解.用一个例子来阐述这个概念可以直观地理解它.所以,请看下面的例子:
In [27]: t_rand
Out[27]: tensor([ 0.23451, 0.34562, 0.45673])
In [28]: t_ones
Out[28]:
tensor([[ 1.],
[ 1.],
[ 1.],
[ 1.]])
现在torch.add(t_rand, t_ones)
,将其可视化为:
# shape of (3,)
tensor([ 0.23451, 0.34562, 0.45673])
# (4, 1) | | | | | | | | | | | |
tensor([[ 1.],____+ | | | ____+ | | | ____+ | | |
[ 1.],______+ | | ______+ | | ______+ | |
[ 1.],________+ | ________+ | ________+ |
[ 1.]])_________+ __________+ __________+
这应该给出具有张量形状的输出(4,3)
:
# shape of (4,3)
In [33]: torch.add(t_rand, t_ones)
Out[33]:
tensor([[ 1.23451, 1.34562, 1.45673],
[ 1.23451, 1.34562, 1.45673],
[ 1.23451, 1.34562, 1.45673],
[ 1.23451, 1.34562, 1.45673]])
另外,请注意,即使我们以与前一个相反的顺序传递参数,我们也会得到完全相同的结果:
# shape of (4, 3)
In [34]: torch.add(t_ones, t_rand)
Out[34]:
tensor([[ 1.23451, 1.34562, 1.45673],
[ 1.23451, 1.34562, 1.45673],
[ 1.23451, 1.34562, 1.45673],
[ 1.23451, 1.34562, 1.45673]])
无论如何,我更喜欢以前的理解方式,以获得更直接的直观性.
为了图片理解,我剔除了下面列举的更多例子:
Example-1:
Example-2:
:
T
并F
分别代表True
以及False
和我们一起让广播(来源:哪些维度表示Theano).
Example-3:
以下是一些形状,其中数组b
被 适当地广播以匹配数组的形状a
.
1> kmario23..:
PyTorchbroadcasting
基于numpy广播语义,可以通过阅读numpy broadcasting rules
或PyTorch广播指南来理解.用一个例子来阐述这个概念可以直观地理解它.所以,请看下面的例子:
In [27]: t_rand
Out[27]: tensor([ 0.23451, 0.34562, 0.45673])
In [28]: t_ones
Out[28]:
tensor([[ 1.],
[ 1.],
[ 1.],
[ 1.]])
现在torch.add(t_rand, t_ones)
,将其可视化为:
# shape of (3,)
tensor([ 0.23451, 0.34562, 0.45673])
# (4, 1) | | | | | | | | | | | |
tensor([[ 1.],____+ | | | ____+ | | | ____+ | | |
[ 1.],______+ | | ______+ | | ______+ | |
[ 1.],________+ | ________+ | ________+ |
[ 1.]])_________+ __________+ __________+
这应该给出具有张量形状的输出(4,3)
:
# shape of (4,3)
In [33]: torch.add(t_rand, t_ones)
Out[33]:
tensor([[ 1.23451, 1.34562, 1.45673],
[ 1.23451, 1.34562, 1.45673],
[ 1.23451, 1.34562, 1.45673],
[ 1.23451, 1.34562, 1.45673]])
另外,请注意,即使我们以与前一个相反的顺序传递参数,我们也会得到完全相同的结果:
# shape of (4, 3)
In [34]: torch.add(t_ones, t_rand)
Out[34]:
tensor([[ 1.23451, 1.34562, 1.45673],
[ 1.23451, 1.34562, 1.45673],
[ 1.23451, 1.34562, 1.45673],
[ 1.23451, 1.34562, 1.45673]])
无论如何,我更喜欢以前的理解方式,以获得更直接的直观性.
为了图片理解,我剔除了下面列举的更多例子:
Example-1:
Example-2:
:
T
并F
分别代表True
以及False
和我们一起让广播(来源:哪些维度表示Theano).
Example-3:
以下是一些形状,其中数组b
被 适当地广播以匹配数组的形状a
.