91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PyTorch怎么定義Tensor、索引和切片

發布時間:2023-04-20 16:28:33 來源:億速云 閱讀:133 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“PyTorch怎么定義Tensor、索引和切片”,內容詳細,步驟清晰,細節處理妥當,希望這篇“PyTorch怎么定義Tensor、索引和切片”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

一、創建Tensor

1.1未初始化的方法

這些方法只是開辟了空間,所附的初始值(非常大,非常小,0),后面還需要我們進行數據的存入。

torch.empty():返回一個沒有初始化的Tensor,默認是FloatTensor類型。

#torch.empty(d1,d2,d3)函數輸入的是shape 
torch.empty(2,3,5)
 
#tensor([[[-1.9036e-22,  6.8944e-43,  0.0000e+00,  0.0000e+00, -1.0922e-20],
#         [ 6.8944e-43, -2.8812e-24,  6.8944e-43, -5.9272e-21,  6.8944e-43],
#         [ 0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00]],
#
#        [[ 0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00],
#         [ 0.0000e+00,  0.0000e+00,  1.4013e-45,  0.0000e+00,  0.0000e+00],
#         [ 0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00,  0.0000e+00]]])

torch.FloatTensor():返回沒有初始化的FloatTensor。

#torch.FloatTensor(d1,d2,d3)
torch.FloatTensor(2,2)
 
#tensor([[-0.0000e+00,  4.5907e-41],
#        [-7.3327e-21,  6.8944e-43]])

torch.IntTensor():返回沒有初始化的IntTensor。

#torch.IntTensor(d1,d2,d3)
torch.IntTensor(2,2)
 
#tensor([[          0,  1002524760],
#        [-1687359808,         492]], dtype=torch.int32)
1.2 隨機初始化
  • 隨機均勻分布:rand/rand_like,randint

rand:[0,1)均勻分布;randint(min,max,[d1,d2,d3]) 返回[min,max)的整數均勻分布

#torch.rand(d1,d2,d3)
torch.rand(2,2)
 
#tensor([[0.8670, 0.6158],
#        [0.0895, 0.2391]])
 
#rand_like()
a=torch.rand(3,2)
torch.rand_like(a)
 
#tensor([[0.2846, 0.3605],
#        [0.3359, 0.2789],
#        [0.5637, 0.6276]])
 
#randint(min,max,[d1,d2,d3])
torch.randint(1,10,[3,3,3])
 
#tensor([[[3, 3, 8],
#         [2, 7, 7],
#         [6, 5, 9]],
#
#        [[7, 9, 9],
#         [6, 3, 9],
#         [1, 5, 6]],
#
#        [[5, 4, 8],
#         [7, 1, 2],
#         [3, 4, 4]]])
  • 隨機正態分布 randn

randn返回一組符合N(0,1)正態分布的隨機數據

#randn(d1,d2,d3)
torch.randn(2,2)
 
#tensor([[ 0.3729,  0.0548],
#        [-1.9443,  1.2485]])
 
#normal(mean,std) 需要給出均值和方差
torch.normal(mean=torch.full([10],0.),std=torch.arange(1,0,-0.1))
 
#tensor([-0.8547,  0.1985,  0.1879,  0.7315, -0.3785, -0.3445,  0.7092,  0.0525, 0.2669,  0.0744])
#后面需要用reshape修正成自己想要的形狀
1.3 賦值初始化

full:返回一個定值

#full([d1,d2,d3],num)
torch.full([2,2],6)
 
#tensor([[6, 6],
#        [6, 6]])
 
torch.full([],6)
#tensor(6)   標量
 
torch.full([1],6)
#tensor([6]) 向量

arange:返回一組階梯,等差數列

#torch.arange(min,max,step):返回一個[min,max),步長為step的集體數組,默認為1
torch.arange(0,10)
 
#tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
 
torch.arange(0,10,2)
#tensor([0, 2, 4, 6, 8])

linspace/logspace:返回一組階梯

#torch.linspace(min,max,steps):返回一個[min,max],數量為steps的數組
torch.linspace(1,10,11)
 
#tensor([ 1.0000,  1.9000,  2.8000,  3.7000,  4.6000,  5.5000,  6.4000,  7.3000,
#         8.2000,  9.1000, 10.0000])
 
#torch.logspace(a,b,steps):返回一個[10^a,10^b],數量為steps的數組
torch.logspace(0,1,10)
 
#tensor([ 1.0000,  1.2915,  1.6681,  2.1544,  2.7826,  3.5938,  4.6416,  5.9948,
#         7.7426, 10.0000])

ones/zeros/eye:返回全1全0或者對角陣 ones_like/zeros_like

#torch.ones(d1,d2)
torch.ones(2,2)
 
#tensor([[1., 1.],
#        [1., 1.]])
 
#torch.zeros(d1,d2)
torch.zeros(2,2)
 
#tensor([[0., 0.],
#        [0., 0.]])
 
#torch.eye() 只能接收一個或兩個參數
torch.eye(3)
 
#tensor([[1., 0., 0.],
#        [0., 1., 0.],
#        [0., 0., 1.]])
 
torch.eye(2,3)
 
#tensor([[1., 0., 0.],
#        [0., 1., 0.]])
1.4 隨機打散變量

randperm:一般用于位置操作。類似random.shuffle()。

torch.randperm(8)
#tensor([2, 6, 7, 5, 3, 4, 1, 0])

二、索引與切片

簡單索引方式

a=torch.rand(4,3,28,28)
a[0].shape
#torch.Size([3, 28, 28])
a[0,0,0,0]
#tensor(0.9373)

批量索引方式 開始位置:結束位置 左邊取的到,右邊取不到 算是一種切片 [0,1,2]->[-3,-2,-1]

a[:2].shape
#torch.Size([2, 3, 28, 28])
a[1:].shape
#torch.Size([3, 3, 28, 28])

隔行采樣方式 開始位置:結束位置:間隔

a[:,:,0:28:2,:].shape
#torch.Size([4, 3, 14, 28])

任意取樣方式 a.index_select(d,[d層的數據索引])

a.index_select(0,torch.tensor([0,2])).shape
#torch.Size([2, 3, 28, 28])
 
a.index_select(1,torch.tensor([0,2])).shape
#torch.Size([4, 2, 28, 28])

...任意維度取樣

a[...].shape
#torch.Size([4, 3, 28, 28])
 
a[0,...].shape
#torch.Size([3, 28, 28])
 
a[:,2,...].shape
#torch.Size([4, 28, 28])

掩碼索引mask x.ge(0.5) 表示大于等于0.5的為1,小于0.5的為0

#torch.masked_select 取出掩碼對應位置的值
x=torch.randn(3,4)
mask=x.ge(0.5)
torch.masked_select(x,mask)
 
#tensor([1.6950, 1.2207, 0.6035])

具體索引 take(變量,位置) 會把變量變為一維的

x=torch.randn(3,4)
torch.take(x,torch.tensor([0,1,5]))
 
#tensor([-2.2092, -0.2652,  0.4848])

讀到這里,這篇“PyTorch怎么定義Tensor、索引和切片”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

富锦市| 濉溪县| 边坝县| 英山县| 城市| 南川市| 新兴县| 金阳县| 进贤县| 台东县| 平乡县| 双流县| 常山县| 正宁县| 阜阳市| 永州市| 米泉市| 虎林市| 鹿邑县| 榕江县| 洛南县| 高碑店市| 龙山县| 常宁市| 上林县| 县级市| 银川市| 阿瓦提县| 安西县| 儋州市| 郓城县| 丰城市| 柳林县| 永宁县| 巫溪县| 绥化市| 乐都县| 大邑县| 安新县| 赫章县| 徐州市|