2017-12-18 10 views
1

最近私はpyTorchの学習を始めました。私はPythonが好きなのでTorchコミュニティから移動しました。PyTorchの奇妙な動作

この奇妙な動作がpyTorch.Anyの洞察に遭遇しましたが、なぜこのようなことが認められたのでしょうか? Zの

x=torch.Tensor(10,1).fill_(1) 
y=torch.Tensor(10).fill_(2) 
print(x.size())  #output is torch.Size([10, 1]) 
print(y.size())  #output is torch.Size([10]) 
z=x+y 
z.size() 
z.size()   #output is torch.Size([10, 10]) 

出力は、それが明確(Iはまた、他の数値で確認)テンソルを添加した後、添加後の値を用いて10×10テンソルを構築されることを意味値が3と10×10です。

なぜこのようなことが起こっているのか誰かが説明できますか?私はTorch(Lua)でそれを試しました。それは累積加算を行い、私が期待したTensorを返しました。

+1

私はこれがデフォルトでは、pyTorchのブロードキャスト動作のためにこれを知るようになりました。 –

+0

http://pytorch.org/docs/master/notes/broadcasting.html –

答えて

0

トーチテンソルの間でsumを実行している場合は、ブロードキャストがバックグラウンドで発生しています。NumPyを使って追加をしたときに表示されるのと同じ動作です。 PyTorchは、単にNumPyに従うのと同じブロードキャストルールに従います。

あなたは読んでここに放送理解することができます:NumPy Broadcasting

0

これは、任意のpytorchコードに自動的に行わ放送です。