参考動画:
Depth Eye公式アカウント-01-03-mp4-Tensor演算と線形回帰
トーチ.猫()
機能: 指定された寸法に従って 2 つのテンソルを結合します。
torch.cat(tensors,
dim=0,
out=None)
tensor: 多数のテンソルを含むリストまたはタプル;
dim: スプライシングの次元を指定;
out: どのテンソルを出力するか。
import numpy as np
import torch
t1 = torch.ones((4, 4))
t2 = torch.zeros((4, 3))
t3 = torch.cat((t1, t2), dim=1)
print(t3)
出力:
tensor([[1., 1., 1., 1., 0., 0., 0.],
[1., 1., 1., 1., 0., 0., 0.],
[1., 1., 1., 1., 0., 0., 0.],
[1., 1., 1., 1., 0., 0., 0.]])
トーチ.スタック()
機能: 指定された次元に従って複数のテンソルをスタックし、新しいテンソルを作成します。
torch.stack(tensors,
dim=0,
out=None)
import numpy as np
import torch
t1 = torch.ones((2, 2))
t2 = torch.zeros((2, 2))
t3 = torch.stack((t1, t2), dim=2)
print(t3)
出力:
tensor([[[1., 0.],
[1., 0.]],
[[1., 0.],
[1., 0.]]])
2 つのテンソルは dim 次元でのみ異なることができ、他の次元では同じサイズでなければなりません。
トーチチャンク()
機能: テンソルを指定された次元で均等に分割します。均等に分割できない場合、最後のスライスのサイズは他のスライスより小さくなります。
torch.chunk(input,
chunks,
dim=0)
input: 分割されるテンソル;
chunks: 分割される部分の数;
dim: dim 次元での分割
import numpy as np
import torch
t1 = torch.ones((4, 2))
t_list = torch.chunk(t1, chunks=2, dim=0)
print(t_list)
出力:
(tensor([[1., 1.],
[1., 1.]]), tensor([[1., 1.],
[1., 1.]]))
トーチ.スプリット()
機能: 指定された長さに応じてテンソルを分割します。
torch.split(tensor,
split_size_or_sections,
dim=0)
split_size_or_sections: intの場合はこの値がカットの長さとなり、リストの場合はリスト内の数値をサイズとしてカットされます。
dim: 薄暗い次元で分割します。
import numpy as np
import torch
t1 = torch.ones((4, 2))
t_list = torch.split(t1, (1, 2, 1), dim=0)
print(t_list)
出力:
(tensor([[1., 1.]]), tensor([[1., 1.],
[1., 1.]]), tensor([[1., 1.]]))
torch.index_select()
関数: 次元 dim で、インデックスによってデータにインデックスを付け、インデックス インデックスに従って結合されたテンソルを返します。
torch.index_select(input,
dim,
index,
out=None)
input: 検索するデータのテンソル、
dim: 次元 dim 上の次元、
index: すべてのインデックス要件を含むテンソル。
import numpy as np
import torch
t1 = torch.tensor([[2, 3], [4, 5], [6, 7]])
t2 = torch.tensor([0, 2])
t_out = torch.index_select(t1, dim=0, index=t2)
print(t_out)
出力:
tensor([[2, 3],
[6, 7]])
torch.masked_select()
関数: 次元 dim で、マスクによってデータにインデックスを付け、マスク インデックスに従って結合されたテンソルを返します。
torch.masked_select(input,
mask,
out=None)
入力: 検索するデータのテンソル;
マスク: 次元 dim 内でインデックスを付ける必要がある位置は True、インデックスを付ける必要のない位置は False で、すべてブール値のテンソルを形成します。テンソルの形状は入力と同じです。
import numpy as np
import torch
t1 = torch.tensor([[2, 3], [4, 5], [6, 7]])
t2 = torch.tensor([[True, False],[True, True], [False, True]])
t_out = torch.masked_select(t1, mask=t2)
print(t_out)
出力
tensor([2, 4, 5, 7])
トーチ.reshape()
機能: テンソル形状を変換します。
(テンソルがメモリ内で連続している場合、再形成されたテンソルは元のアドレスに格納されます)
torch.reshape(input,
shape)
入力: 変換される形状のテンソル;
形状: 変換された形状。(-1 で埋められるのは形状内の最大 1 桁です。元のテンソルの要素数は固定されているため、-1 で埋められる数字は自動的に計算されます)
import numpy as np
import torch
t1 = torch.tensor([[2, 3, 4], [5, 6, 7]])
t2 = torch.reshape(t1, (3, 2))
print(t2)
出力:
tensor([[2, 3],
[4, 5],
[6, 7]])
torch.transpose()
機能: テンソルの 2 次元を交換します。
torch.transpose(input,
dim0,
dim1)
dim0、dim1: 交換される 2 つの次元。
import numpy as np
import torch
t = torch.tensor([[2, 3, 4], [5, 6, 7]])
t1 = torch.transpose(t, 0, 1)
print(t1)
出力:
tensor([[2, 5],
[3, 6],
[4, 7]])
トーチ.t()
機能: 2 次元テンソルに限定された次元交換。
(2 次元テンソルでは、 に相当しますtorch.transpose(input, 0, 1)
)
torch.t(input)
input: 次元的に交換されるテンソル。
import numpy as np
import torch
t = torch.tensor([[2, 3, 4], [5, 6, 7]])
t1 = torch.t(t)
print(t1)
出力:
tensor([[2, 5],
[3, 6],
[4, 7]])
トーチ.squeeze()
機能: 軸を次元 1 で圧縮します。
torch.squeeze(input,
dim=None,
out=None)
dim: 圧縮の次元を指定します。この次元の長さは 1 である必要があります。
import numpy as np
import torch
t = torch.tensor([[2], [3], [4], [5], [6]])
t1 = torch.squeeze(t)
print(t1)
出力:
tensor([2, 3, 4, 5, 6])
torch.unsqueeze()
機能: 寸法寸法に従って寸法を拡張します。
torch.unsqueeze(input,
dim,
out=None)
dim: 展開する次元 dim を指定します torch.squeeze() のデフォルトの 0 とは異なり、ここでは dim の値を指定する必要があります。
import numpy as np
import torch
t = torch.tensor([2, 3, 4, 5, 6])
t1 = torch.unsqueeze(t, dim=0)
print(t1)
出力:
tensor([[2, 3, 4, 5, 6]])