簡體   English   中英

pytorch 中的 torch.Tensor() 與 torch.empty() 有什么區別?

[英]what's the difference between torch.Tensor() vs torch.empty() in pytorch?

我已經嘗試過如下。 在我看來他們是一樣的。 pytorch 中的 torch.Tensor() 與 torch.empty() 有什么區別?

在此處輸入圖片說明

torch.Tensor()僅僅是一個別名torch.FloatTensor()這是張量的默認類型,當沒有dtype張量施工期間指定。

numpy 用戶筆記火炬中,似乎torch.Tensor()numpy.empty()替代品

因此,本質上torch.FloatTensor()torch.empty()執行相同的工作,即返回填充有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]])

快速回答: torch.empty() 創建任何你想要的數據類型的張量,torch.Tensor() 只創建類型為 torch.FloatTensor 的張量。 所以 torch.Tensor() 是 torch.empty() 的特例

詳細解答:

torch.empty() 返回一個填充了未初始化數據的張量。 使用參數,您可以指定張量的形狀、輸出張量、數據類型... (請參閱 tensor.empty() 文檔)

這意味着您可以創建一個浮點數張量,int...如果沒有指定數據類型,那么所選的類型是您的默認torch.Tensor類型(默認情況下是 torch.FloatTensor,您可以使用torch.set_default_tensor_type()更改它)

torch.Tensor() 只是 torch.empty() 的特例,其中數據類型為 torch.FloatTensor。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM