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=バツ繰り返す((13)。
印刷((xnew)。

  • 1
  • 3
  • 4
  • 5

出力:

tensor([[1, 2, 3, 1, 2, 3, 1, 2, 3]])

例2:
テンソルを垂直にコピーします



import torch

バツ=松明テンソル(([1 3])。
xnew=バツ繰り返す((31)。
印刷((xnew)。

  • 1
  • 3
  • 4
  • 5

出力:

tensor([[1, 2, 3], [1, 2, 3], [1, 2, 3]])
|_+_|