import torch
import numpy as np
#一維張量索引
t1 = torch.arange(1,
11)print
(t1[0]
.item())
#注:張量索引出來的結果還是零維張量, 而不是單獨的數。要轉化成單獨的數,需要使用item()方法。
t1[1:8
]#冒號分隔,表示對某個區域進行索引,也就是所謂的切片
t1[1:8
:2]# 索引其中2-9號元素,左包含右不包含,且隔兩個數取乙個
t1[1::
2]# 從第二個元素開始索引,一直到結尾,並且每隔兩個數取乙個
t1[:8:
2]# 從第乙個元素開始索引到第9個元素(不包含),並且每隔兩個數取乙個
t2 = torch.arange(1, 10).reshape(3, 3)
t2[0, 1] # 表示索引第一行、第二個(第二列的)元素
t2[0, ::2] # 表示索引第一行、每隔兩個元素取乙個
t2[0, [0, 2]] # 索引結果同上
t2[::2, ::2] # 表示每隔兩行取一行、並且每一行中每隔兩個元素取乙個
t2[[0, 2], 1] # 索引第一行、第三行、第二列的元素
t3 = torch.arange(1, 28).reshape(3, 3, 3)
t3[1, 1, 1] # 索引第二個矩陣中,第二行、第二個元素
t3[1, ::2, ::2] # 索引第二個矩陣,行和列都是每隔兩個取乙個
t3[:: 2, :: 2, :: 2] # 每隔兩個取乙個矩陣,對於每個矩陣來說,行和列都是每隔兩個取乙個
indices = torch.tensor([1
,2])
torch.index_select(t1,
0, indices)
#在index_select函式中,第二個引數實際上代表的是索引的維度。對於t1這個一維向量來說,由於只有乙個維度,因此第二個引數取值為0,就代表在第乙個維度上進行索引
t = torch.arange(6)
.reshape(2,
3)te = t.view(3,
2)# 構建乙個資料相同,但形狀不同的「檢視」
#pytorch中的.view()方法。該方法會返回乙個類似檢視的結果,該結果和原張量物件共享一塊資料儲存空間,並且通過.view()方法,還可以改變物件結構,生成乙個不同結構,但共享乙個儲存空間的張量。當然,共享乙個儲存空間,也就代表二者是「淺拷貝」的關係,修改其中乙個,另乙個也會同步進行更改。
張量的分片函式
t2 = torch.arange(12)
.reshape(4,
3)tc = torch.chunk(t2,
4, dim=0)
# 在第零個維度上(按行),進行四等分
#out
#(tensor([[0, 1, 2]]),
# tensor([[3, 4, 5]]),
# tensor([[6, 7, 8]]),
# tensor([[ 9, 10, 11]]))
torch.split(t2,2,
0)# 第二個引數只輸入乙個數值時表示均分,第三個引數表示切分的維度
torch.split(t2,[1
,3],
0)# 第二個引數輸入乙個序列時,表示按照序列數值進行切分,也就是1/3分
torch.split(t2,[1
,1,1
,1],
0)
torch.cat(
[a, b]
)# 按照行進行拼接,dim預設取值為0
torch.cat(
[a, b],1
)# 按照列進行拼接
Pytorch 學習筆記
本渣的pytorch 逐步學習鞏固經歷,希望各位大佬指正,寫這個部落格也為了鞏固下記憶。a a b c 表示從 a 取到 b 步長為 c c 2 則表示每2個數取1個 若為a 1 1 1 即表示從倒數最後乙個到正數第 1 個 最後乙個 1 表示倒著取 如下 陣列的第乙個為 0 啊,第 0 個!彆扭 ...
Pytorch學習筆記
資料集 penn fudan資料集 在學習pytorch官網教程時,作者對penn fudan資料集進行了定義,並且在自定義的資料集上實現了對r cnn模型的微調。此篇筆記簡單總結一下pytorch如何實現定義自己的資料集 資料集必須繼承torch.utils.data.dataset類,並且實現 ...
Pytorch學習筆記
lesson 1.張量 tensor 的建立和常用方法 一 張量 tensor 的基本建立及其型別 import torch 匯入pytorch包 import numpy as np torch.version 檢視版本號1.張量 tensor 函式建立方法 張量 tensor 函式建立方法 t ...