pytorchテンソル繰返し、接続、圧縮、置換などの一般的な操作
くりかえしテンソル
torch.Tensor.repeat(*sizes)
テンソルの次元でコピー
テンソル次元はrepeatパラメータの個数に等しい
テンソル次元がrepeatパラメータの個数に等しくない
例:
次のようになります.
repeatは、タイル操作tileに似ています.repeatパラメータは、各次元(dimention)にタイルを敷く回数を指定し、テンソル次元テンソルせつぞく
torch.cat(tensors,dim=0,out=None)→Tensor指定した次元(dim)にテンソルを接続する
テンソル圧縮
torch.squeeze(input,dim=None,out=None)→Tensorテンソルのすべての要素数が1の次元を削除
torch.unsqueeze(input, dim, out=None) → Tensor
inplace version: unsqueeze_(dim) → Tensor
テンソルに次元を追加
テンソルひずみ
torch.Tensor.view(*args) → Tensor
同じデータがあるが異なる形状の新しいベクトルを返します.
返される2つのマウントは、元のテンソルと同じデータと同じ要素の個数を持つ必要がありますが、異なるサイズを持つことができます.
パラメータ:
Args(torch.Size or int...)-理想的な指定サイズ
ディスプレイスメントテンソル次元
torch.Tensor.permute(*dims)
このメソッドのテンソルの次元シフトが実行されます.
パラメータ:
dim(int)-シフト順序の例を指定します.
torch.Tensor.repeat(*sizes)
テンソルの次元でコピー
テンソル次元はrepeatパラメータの個数に等しい
#
x = torch.randn((2,3)) #torch.Size([2, 3])
# x 4 ,2 , :4x2=8, 2x3=6, (8,6)
x= x.repeat(4, 2) #torch.Size([8, 6])
テンソル次元がrepeatパラメータの個数に等しくない
例:
#
t1 = torch.randn((1,2)) #torch.Size([1, 2])
# 2, repeat 3, :(3,1x5, 2x6)
t2 = t1.repeat(3,5,6) #torch.Size([3, 5, 12])
次のようになります.
#
t1 = torch.randn((2,2,3)) #torch.Size([2, 2, 3])
# (3, 2x4, 2x5, 3x6)
t2 = t1.repeat(3,4,5,6)#torch.Size([3, 8, 10, 18])
repeatは、タイル操作tileに似ています.repeatパラメータは、各次元(dimention)にタイルを敷く回数を指定し、テンソル次元
torch.cat(tensors,dim=0,out=None)→Tensor指定した次元(dim)にテンソルを接続する
>>> x = torch.randn(2, 3)
>>> x
tensor([[ 0.6580, -1.0969, -0.4614],
[-0.1034, -0.5790, 0.1497]])
>>> torch.cat((x, x, x), 0)
tensor([[ 0.6580, -1.0969, -0.4614],
[-0.1034, -0.5790, 0.1497],
[ 0.6580, -1.0969, -0.4614],
[-0.1034, -0.5790, 0.1497],
[ 0.6580, -1.0969, -0.4614],
[-0.1034, -0.5790, 0.1497]])
>>> torch.cat((x, x, x), 1)
tensor([[ 0.6580, -1.0969, -0.4614, 0.6580, -1.0969, -0.4614, 0.6580,
-1.0969, -0.4614],
[-0.1034, -0.5790, 0.1497, -0.1034, -0.5790, 0.1497, -0.1034,
-0.5790, 0.1497]])
テンソル圧縮
torch.squeeze(input,dim=None,out=None)→Tensorテンソルのすべての要素数が1の次元を削除
torch.unsqueeze(input, dim, out=None) → Tensor
inplace version: unsqueeze_(dim) → Tensor
テンソルに次元を追加
>>> x = torch.zeros(2, 1, 2, 1, 2)
>>> x.size()
torch.Size([2, 1, 2, 1, 2])
>>> y = torch.squeeze(x)
>>> y.size()
torch.Size([2, 2, 2])
>>> y = torch.squeeze(x, 0)
>>> y.size()
torch.Size([2, 1, 2, 1, 2])
>>> y = torch.squeeze(x, 1)
>>> y.size()
torch.Size([2, 2, 1, 2])
>>> x = torch.tensor([1, 2, 3, 4])
>>> torch.unsqueeze(x, 0)
tensor([[ 1, 2, 3, 4]])
>>> torch.unsqueeze(x, 1)
tensor([[ 1],
[ 2],
[ 3],
[ 4]])
テンソルひずみ
torch.Tensor.view(*args) → Tensor
同じデータがあるが異なる形状の新しいベクトルを返します.
返される2つのマウントは、元のテンソルと同じデータと同じ要素の個数を持つ必要がありますが、異なるサイズを持つことができます.
パラメータ:
Args(torch.Size or int...)-理想的な指定サイズ
x = torch.randn(4, 4)
x.size()
torch.Size([4, 4])
y = x.view(16)
y.size()
torch.Size([16])
ディスプレイスメントテンソル次元
torch.Tensor.permute(*dims)
このメソッドのテンソルの次元シフトが実行されます.
パラメータ:
dim(int)-シフト順序の例を指定します.
x = torch.randn(2, 3, 1) #torch.Size([2, 3, 1])
tensor([[[-0.8959],
[-0.5030],
[ 1.1197]],
[[-0.5571],
[-1.4857],
[ 0.5387]]])
x = x.permute(2, 0, 1)torch.Size([1, 2, 3])
tensor([[[-0.8959, -0.5030, 1.1197],
[-0.5571, -1.4857, 0.5387]]])