pytorchtorch.expandとtorch.repeatの違い
Difference Between Pytorch Torch
1.torch.expand
この関数は、テンソルが特定の次元で展開された後、テンソルを返します。これは、テンソルを新しい形状にブロードキャストすることです。この関数は、返されたテンソルに新しいメモリを割り当てません。つまり、元のテンソルの読み取り専用ビューを返し、返されたテンソルメモリは連続的ではありません。 numpyのbroadcast_to関数の役割に似ています。テンソルメモリを連続させたい場合は、連続関数を呼び出すことができます。
例:
import torch
バツ=松明。テンソル(([1、 二、 3、 4])。
xnew=バツ。展開((二、 4)。
印刷((xnew)。
- 1
- 二
- 3
- 4
- 5
出力:
tensor([[1, 2, 3, 4], [1, 2, 3, 4]])
2.torch.repeat
torch.repeatの使用法は、元の行列を水平方向および垂直方向にコピーするnp.tileに似ています。 torch.expandとの違いは、torch.repeatによって返されるテンソルがメモリ内で連続していることです。
例1:
テンソルを水平方向にコピーします
import torch
バツ=松明。テンソル(([1、 二、 3])。
xnew=バツ。繰り返す((1、3)。
印刷((xnew)。
- 1
- 二
- 3
- 4
- 5
出力:
tensor([[1, 2, 3, 1, 2, 3, 1, 2, 3]])
例2:
テンソルを垂直にコピーします
import torch
バツ=松明。テンソル(([1、 二、 3])。
xnew=バツ。繰り返す((3、1)。
印刷((xnew)。
- 1
- 二
- 3
- 4
- 5
出力:
tensor([[1, 2, 3], [1, 2, 3], [1, 2, 3]])
|_+_|