在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...