14
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PyTorch Tensor操作の挙動

Last updated at Posted at 2020-08-01

Tensor操作の詳しい挙動を確認する。

torch.unsqueeze(input: Tensor, dim: int) → Tensor

  • documentはこちら
    torch.unsqueeze — PyTorch 1.6.0 documentation

  • inputしたTensorの次元を一つ増やして返す。ただし挿入した次元でのsizeは1であり、要素数と要素の中身はinputと変わらない。増やす次元の場所はdimで指定し、出力のshapeのdim番目が1になるように次元が増える。

# Pythonインタプリタを使用
>>> import torch
>>> a = torch.tensor([1,2,3])
>>> a
tensor([1, 2, 3])
>>> b = a.unsqueeze(0)
>>> b.shape
# dim=0としたので、0番目の次元のsizeが1
torch.Size([1, 3])
>>> b
tensor([[1, 2, 3]])

>>> c = a.unsqueeze(1)
>>> c.shape
# dim=1としたので、1番目の次元のsizeが1
torch.Size([3, 1])
>>> c
tensor([[1],
        [2],
        [3]])

# dimはマイナスをとることも可能
>>> d = a.unsqueeze(-1) # a.unsqueeze(1) と同じ
>>> d.shape
# dim=-1としたので、-1番目、つまり1番目の次元のsizeが1
torch.Size([3, 1])
>>> d
tensor([[1],
        [2],
        [3]])

broadcasting

  • NumPyのブロードキャスト(broadcast)をPyTorchのTensorでもサポートしている。
  • documentは Broadcasting semantics — PyTorch 1.6.0 documentation
  • 日本語訳もあり
  • 簡潔にいうと、shape(次元数)が違う二つのTensorでも、ある特定条件を満たせば四則演算などが可能になる機能。
  • ポイントは、次元数が異なる場合に末尾の次元のサイズを見ていき、サイズが同じであるか、片方が1であればブロードキャストでき、計算可能となる。
# Pythonインタプリタを使用
>>> import torch
>>> a = torch.rand(2,3,4)
>>> b = torch.rand(3)
>>> a * b
# 計算不可能
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
RuntimeError: The size of tensor a (4) must match the size of tensor b (3) at non-singleton dimension 2

>>> c = b.expand(2,3)
>>> c.shape
torch.Size([2, 3])
>>> a * c
# aの先頭の2次元とcの先頭の2次元は同じsizeだが、計算不可能
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
RuntimeError: The size of tensor a (4) must match the size of tensor b (3) at non-singleton dimension 2

>>> d = b.unsqueeze(1).expand(3,4)
>>> d.shape
torch.Size([3, 4])
>>> a * d
# 末尾の次元が同じなので計算可能
14
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?