Pytorch Tensor和tensor的區別

2021-10-01 07:22:37 字數 1761 閱讀 7087

在pytorch中,tensor和tensor都能用於生成新的張量:

>>

> a=torch.tensor([1

,2])

>>

> a

tensor([1

.,2.

])>>

> a=torch.tensor([1

,2])

>>

> a

tensor([1

,2])

首先,我們需要明確一下,torch.tensor()是python類,更明確地說,是預設張量型別torch.floattensor()的別名,torch.tensor([1,2])會呼叫tensor類的建構函式__init__,生成單精度浮點型別的張量:

>>

> a=torch.tensor([1

,2])

>>

> a.

type()

'torch.floattensor'

而torch.tensor()僅僅是python函式: ,函式原型是:

torch.tensor(data, dtype=

none

, device=

none

, requires_grad=

false

)

其中data可以是:list, tuple, numpy ndarray, scalar和其他型別。

torch.tensor會從data中的資料部分做拷貝(而不是直接引用),根據原始資料型別生成相應的torch.longtensor、torch.floattensor和torch.doubletensor。

>>

> a=torch.tensor([1

,2])

>>

> a.

type()

'torch.longtensor'

>>

> a=torch.tensor([1

.,2.

])>>

> a.

type()

'torch.floattensor'

>>

> a=np.zeros(

2,dtype=np.float64)

>>

> a=torch.tensor(a)

>>

> a.

type()

'torch.doubletensor'

這裡再說一下torch.empty(),根據我們可以生成指定型別、指定裝置以及其他引數的張量,由於torch.tensor()只能指定資料型別為torch.float,所以torch.tensor()可以看做torch.empty()的乙個特殊情況。

>>

> a=torch.tensor(1)

>>

> a

tensor(1)

>>

> a.

type()

'torch.longtensor'

>>

> a=torch.tensor(1)

>>

> a

tensor([0

.])>>

> a.

type()

'torch.floattensor'

【pytorch】tensor和tensor的區別

pytorch tensor 篩選排除

篩選排除還沒找到答案 取數運算 正好遇到乙個需求。我有m行k列的乙個表a,和乙個長為m的索引列表b。b中儲存著,取每行第幾列的元素。這種情況下,你用普通的索引是會失效的。import torch a torch.longtensor 1,2,3 4,5,6 b torch.longtensor 0,...

Pytorch tensor的感知機

單層感知機的主要步驟 單層感知機梯度的推導 要進行優化的是w,對w進行梯度下降 a torch.randn 1,10 a是乙個 1,10 的向量 w torch.randn 1,10,requires grad true w是乙個可導的 1,10 的向量 1.2.經過乙個sigmoid啟用函式 o ...

pytorch tensor 獲得中間節點的梯度

我們只能指定計算圖的leaf節點的requires grad變數來決定改變量是否記錄梯度,而不能指定它們運算產生的節點的requires grad,它們是否要梯度取決於它們的輸入節點,它們的輸入節點只要有乙個requires grad是true,那麼它的requires grad也是true.x t...