スポンサーリンク

【PyTorch】すべての要素が0/1の配列生成するtorch.zeros、torch.zeros_like、torch.ones、torch.ones_like

Python

すべての要素が0のTensor配列生成するにはtorch.zerostorch.zeros_likeを用い、すべての要素が1のTensor配列生成するにはtorch.onestorch.ones_likeを用いる。

torch.zeros、torch.onesの使い方

torch.zeros

torch.zerosの引数sizeに出力されるTensor配列の形状を指定する。指定した形状で、すべての要素が0のTensor配列がfloat32で生成されます。

import torch

a = torch.zeros(5)
print(a)
# tensor([0., 0., 0., 0., 0.])
print(a.shape)
# torch.Size([5])
print(a.dtype)
# torch.float32

b = torch.zeros(2, 3)
print(b)
# tensor([[0., 0., 0.],
#        [0., 0., 0.]])
print(b.shape)
# torch.Size([2, 3])

c = torch.zeros(3, 3, 2)
print(c.shape)
# torch.Size([3, 3, 2])

引数dtypeを指定すれば、任意のdataタイプで生成される。

d = torch.zeros(2, dtype=torch.int8)
print(d.dtype)
# torch.int8

torch.ones

torch.zerosと同様で、toch.onesの引数sizeに出力されるTensor配列の形状を指定する。指定した形状で、すべての要素が1のTensor配列がfloat32で生成されます。

a = torch.ones(5)
print(a)
# tensor([1., 1., 1., 1., 1.])
print(a.shape)
# torch.Size([5])
print(a.dtype)
# torch.float32

b = torch.ones(2, 3)
print(b)
# tensor([[1., 1., 1.],
#         [1., 1., 1.]])
print(b.shape)
# torch.Size([2, 3])

c = torch.ones(3, 3, 2)
print(c.shape)
# torch.Size([3, 3, 2])

torch.zeros_like、torch.ones_likeの使い方

torch.zeros_like

torch.zeros_likeは、引数inputに指定されたTensor配列の形状と同じ形状で、すべての要素が0のTensor配列がfloat32で生成されます。

a = torch.rand(2, 3)
print(a)
# tensor([[0.3804, 0.1059, 0.7642],
#        [0.9733, 0.8222, 0.0327]])
print(a.shape)
# torch.Size([2, 3])

b = torch.zeros_like(a)
print(b)
# tensor([[0., 0., 0.],
#        [0., 0., 0.]])
print(b.shape)
# torch.Size([2, 3])
print(b.dtype)
# torch.float32

torch.ones_like

torch.ones_likeは、引数inputに指定されたTensor配列の形状と同じ形状で、すべての要素が1のTensor配列がfloat32で生成されます。

a = torch.rand(2, 3)
print(a)
# tensor([[0.3185, 0.7047, 0.8822],
#        [0.9370, 0.9441, 0.0713]])
print(a.shape)
# torch.Size([2, 3])

b = torch.ones_like(a)
print(b)
# tensor([[1., 1., 1.],
#        [1., 1., .]])
print(b.shape)
# torch.Size([2, 3])
print(b.dtype)
# torch.float32

関連記事、参考資料

コメント