[Pytorch ノート] 2. Tensor 演算

参考動画:
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]])

おすすめ

転載: blog.csdn.net/xhyu61/article/details/132924767