[] Pytorchリピート()とエキスパンド()の違い



Pytorch Repeat



torch.Tensor 多次元行列を含むデータ要素タイプ。

torch.Tensor は、単一のデータ型の要素を含む多次元行列です。

トーチには2つのインスタンスがあります。テンソルメソッドを使用して、データ次元のサイズを拡張できます。 繰り返す() expand()



expand()

展開(*サイズ)->テンソル
* size(torch.Size or int)-必要な拡張 サイズ
シングルトン次元がより大きなサイズに拡張された自己テンソルの新しいビューを返します。

より大きな次元の拡張の後、現在のテンソルテンソルを返します。拡張(拡張)テンソル 新しいメモリは割り当てられません 、シートの量が存在する場合に新しいビュー(ビュー)を作成することです。サイズ(サイズ)は、より大きなサイズに拡張された寸法1に等しくなります。

例:



import torch >> x = torch.tensor([1, 2, 3]) >> x.expand(2, 3) tensor([[1, 2, 3], [1, 2, 3]]) >> x = torch.randn(2, 1, 1, 4) >> x.expand(-1, 2, 3, -1) torch.Size([2, 2, 3, 4])

繰り返す()

繰り返し(*サイズ)->テンソル
* size(torch.Size or int)- 何度か 各次元に沿ってこのテンソルを繰り返します。
指定された次元に沿ってこのテンソルを繰り返します。

このテンソルの特定の次元に沿って繰り返し、そして expand() 違いは、この関数が コピー データテンソル。

例:

import torch >> x = torch.tensor([1, 2, 3]) >> x.repeat(3, 2) tensor([[1, 2, 3, 1, 2, 3], [1, 2, 3, 1, 2, 3], [1, 2, 3, 1, 2, 3]]) >> x2 = torch.randn(2, 3, 4) >> x2.repeat(2, 1, 3).shape torch.Tensor([4, 3, 12])

編集者: https://zhuanlan.zhihu.com/p/58109107