我对火炬进行了一些实验,这是我发现的东西:
( 5,7,3) and ( 5,7,3) -> ( 5,7,3)
-相等(5,3,4,1) and (5,3,1,1) -> (5,3,4,1)
-昏暗的是1 (5,3,4,1) and ( 3,4,1) -> (5,3,4,1)
-一个暗处不存在(5,3,4,1) and ( 3,1,1) -> (5,3,4,1)
-一种暗淡是1,一种暗淡是不存在( 4,3,2) and (5,4,1,1) -> (5,4,3,2)
( 4,1) and (5,3,1,1) -> (5,3,4,1)
-一种暗淡为1,两种暗淡不存在( 1) and (5,3,4,2) -> (5,3,4,2)
-一种暗淡为1,其他暗淡不存在( ) and (5,3,4,2) -> (5,3,4,2)
-标量和张量( 0) and (5,3,2,1) -> (5,3,2,0)
-空张量和张量( 4,1) and ( 4) -> ( 4,4)
-缺少的昏暗值为1 ( 4,2) and ( 4)
->无法广播( 5,2,1) and (5,3,2,1)
->无法广播(5,3,2,1) and ( 5,3,2)
->无法广播Pytorch文档说:
许多PyTorch操作都支持NumPy广播语义。
这是否意味着pytorch遵循numpy的广播规则,它们是相同的,还是我也应该尝试使用numpy?
numpy的文档没有列出pytourch的特定规则。甚至pytorch的文档也不是完全准确的,例如它说每个张量应该至少具有一个维度,但是torch.empty(3,4) + torch.tensor(42)
可以正常工作(标量没有维度)。
我发现的规则是:
这似乎是最合理的广播方式,我不明白为什么对于numpy来说会有所不同。但是也许有一些功能。
如果有人可以提供证明或至少证明numpy具有与pytorch相同的规则,那么我将不胜感激,因为不必研究numpy广播行为。