web-dev-qa-db-ja.com

pytorchのtorch.Tensor()とtorch.empty()の違いは何ですか?

以下のように試してみました。それらは同じように思えます。 pytorchのtorch.Tensor()とtorch.empty()の違いは何ですか?

enter image description here

8
nkhuyu

torch.Tensor()は、テンソル構築中にdtypeが指定されていない場合、torch.FloatTensor() の単なるエイリアスです。これは、テンソルのデフォルトのタイプです。

numpyユーザー向けのメモ から、torch.Tensor()numpy.empty()のドロップイン置換であるようです

つまり、本質的にはtorch.FloatTensor()torch.empty()は、dtype torch.float32のガベージ値で満たされたテンソルを返すのと同じ働きをします。以下は小さな実行です:

In [87]: torch.FloatTensor(2, 3)
Out[87]: 
tensor([[-1.0049e+08,  4.5688e-41, -8.9389e-38],
        [ 3.0638e-41,  4.4842e-44,  0.0000e+00]])

In [88]: torch.FloatTensor(2, 3)
Out[88]: 
tensor([[-1.0049e+08,  4.5688e-41, -1.6512e-38],
        [ 3.0638e-41,  4.4842e-44,  0.0000e+00]])

In [89]: torch.empty(2, 3)
Out[89]: 
tensor([[-1.0049e+08,  4.5688e-41, -9.0400e-38],
        [ 3.0638e-41,  4.4842e-44,  0.0000e+00]])

In [90]: torch.empty(2, 3)
Out[90]: 
tensor([[-1.0049e+08,  4.5688e-41, -9.2852e-38],
        [ 3.0638e-41,  4.4842e-44,  0.0000e+00]])
9
kmario23

Quick Answer:torch.empty()は、任意のデータ型、torch.Tensorでテンソルを作成します()は、タイプtorch.FloatTensorのテンソルのみを作成します。したがって、torch.Tensor()はtorch.empty()の特殊なケースです

詳細な回答:

torch.empty()は、初期化されていないデータで満たされたテンソルを返します。引数を使用して、テンソルの形状、出力テンソル、データ型を指定できます... (tensor.empty()のドキュメントを参照)

これは、float、int ...のテンソルを作成できることを意味します。データタイプが指定されていない場合、選択されたものがデフォルトtorch.Tensorタイプ(これはデフォルトではtorch.FloatTensorであり、 torch.set_default_tensor_type() )を使用して変更できます

torch.Tensor()は、データ型がtorch.FloatTensorであるtorch.empty()の特別なケースです。

1
HLeb