Pytorch 政府有何建议?;操作员在Pytork中做了什么?为什么它会改变形状?
我的代码包含Pytorch 政府有何建议?;操作员在Pytork中做了什么?为什么它会改变形状?,pytorch,Pytorch,我的代码包含x和y,这两种类型都是torch.autograd.variable.variable。它们的形状是 torch.Size([30, 1, 9]) torch.Size([1, 9, 9]) 我不明白的是,为什么下面的结果是不同的大小/形状 z = x & y print(z.shape) 哪个输出 torch.Size([30, 9, 9]) 为什么z30*9*9的形状在x&y之后?x的形状是30*1*9,y的形状是1*9*9,和在x&y中做了什么?我不确定,但我最好
x
和y
,这两种类型都是torch.autograd.variable.variable
。它们的形状是
torch.Size([30, 1, 9])
torch.Size([1, 9, 9])
我不明白的是,为什么下面的结果是不同的大小/形状
z = x & y
print(z.shape)
哪个输出
torch.Size([30, 9, 9])
为什么
z
30*9*9的形状在x&y
之后?x
的形状是30*1*9,y
的形状是1*9*9,和在x&y
中做了什么?
我不确定,但我最好的猜测是,数组中的每个项都取最大值。当然,请尝试在pytorch文档中查找&operator。希望这有帮助 这与&
操作符无关,而是与Python中广播的工作方式有关。引用NumPy的话:
为了进行广播,操作中两个阵列的尾随轴的大小必须相同,或者其中一个必须为一
请参见引用页面中的下图作为示例:
这将导致您的问题如下:
的形状为30 x 1 x 9a
的形状为1 x 9 x 9b
是result1
,因为a1
a1>b1
是result2
,因为b2
a2
既是result3
又是a3
,因为b3
a3=b3
result
的形状为30 x 9 x 9
还请注意,&
操作符实现了张量项的二进制编码