最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PyTorch使用教程中的torch包詳解

 更新時(shí)間:2025年01月19日 10:57:12   作者:深圖智能  
文章介紹了PyTorch框架中torch包的基礎(chǔ)組件,包括張量的創(chuàng)建和基本操作、張量的保存和加載、隨機(jī)數(shù)生成以及張量的基礎(chǔ)數(shù)學(xué)運(yùn)算,感興趣的朋友跟隨小編一起看看吧

1、簡(jiǎn)介

torch包是PyTorch框架最外層的包,主要是包含了張量的創(chuàng)建和基本操作、隨機(jī)數(shù)生成器、序列化、局部梯度操作的上下文管理器等等,內(nèi)容很多。我們基礎(chǔ)學(xué)習(xí)的時(shí)候,只有關(guān)注張量的創(chuàng)建、序列化,隨機(jī)數(shù)、張量的數(shù)學(xué)數(shù)學(xué)計(jì)算等常用的點(diǎn)即可。

2、什么是張量

在PyTorch中,張量(Tensor)是一個(gè)核心概念,它是深度學(xué)習(xí)和科學(xué)計(jì)算的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)。在PyTorch的整個(gè)計(jì)算過(guò)程中,所有的數(shù)據(jù)結(jié)構(gòu)都是以張量的形式表現(xiàn)。例如輸入的圖像、標(biāo)簽,輸出的結(jié)構(gòu)等,最終都是以張量的形式進(jìn)入PyTorch的計(jì)算圖。

  • 定義:張量是一個(gè)多維數(shù)組,可以看作是標(biāo)量、向量、矩陣的高維擴(kuò)展。
  • 性質(zhì):
    • 張量具有任意維度,可以是0維(標(biāo)量)、1維(向量)、2維(矩陣)或更高維度。
    • 張量支持各種數(shù)學(xué)運(yùn)算,包括加法、乘法、卷積等,這些運(yùn)算可以高效地在CPU或GPU上執(zhí)行。
    • 張量可以跟蹤計(jì)算圖,并通過(guò)反向傳播計(jì)算梯度,這對(duì)于深度學(xué)習(xí)中的優(yōu)化任務(wù)至關(guān)重要。
  • 張量的屬性:
    • 形狀(shape):張量的形狀定義了其維度和每個(gè)維度上的大小,如形狀為(2, 3, 4)的張量表示具有2個(gè)深度、每個(gè)深度包含3行4列的3D數(shù)組。
    • 數(shù)據(jù)類(lèi)型(dtype):張量中的元素具有特定的數(shù)據(jù)類(lèi)型,如浮點(diǎn)數(shù)(float32、float64)或整數(shù)(int32、int64)等。
    • 設(shè)備(device):張量可以存儲(chǔ)在CPU或GPU上,通過(guò)指定設(shè)備參數(shù)可以在不同設(shè)備之間創(chuàng)建或移動(dòng)張量。

3、torch包的張量操作

3.1 張量創(chuàng)建

1. 創(chuàng)建全0的張量

torch.zeros(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor

參數(shù)

size (int…) – 定義輸出張量形狀的整數(shù)序列。可以是可變數(shù)量的參數(shù)或類(lèi)似列表或元組的集合。

示例

>>> torch.zeros(2, 3)
tensor([[ 0.,  0.,  0.],
        [ 0.,  0.,  0.]])
>>> torch.zeros(5)
tensor([ 0.,  0.,  0.,  0.,  0.])

2. 創(chuàng)建全1的張量

torch.ones(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor

參數(shù)

size (int…) – 定義輸出張量形狀的一系列整數(shù)??梢允强勺償?shù)量的參數(shù)或類(lèi)似列表或元組的集合。

示例

>>> torch.ones(2, 3)
tensor([[ 1.,  1.,  1.],
        [ 1.,  1.,  1.]])
>>> torch.ones(5)
tensor([ 1.,  1.,  1.,  1.,  1.])

3. 創(chuàng)建未初始化數(shù)據(jù)的張量

torch.empty(*size, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False, memory_format=torch.contiguous_format) → Tensor

參數(shù)

size (int…) – 定義輸出張量形狀的整數(shù)序列??梢允强勺償?shù)量的參數(shù)或集合,如列表或元組。

示例

>>> torch.empty((2,3), dtype=torch.int64)
tensor([[ 9.4064e+13,  2.8000e+01,  9.3493e+13],
        [ 7.5751e+18,  7.1428e+18,  7.5955e+18]])

4. 創(chuàng)建對(duì)角線上的元素為1的二維張量

torch.eye(n, m=None, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor

參數(shù)

n (int) – 行數(shù)

示例

>>> torch.eye(3)
tensor([[ 1.,  0.,  0.],
        [ 0.,  1.,  0.],
        [ 0.,  0.,  1.]])

5. 創(chuàng)建填充指定值的張量

torch.full(size, fill_value, *, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor

參數(shù)

  • size (int…) – 定義輸出張量形狀的整數(shù)列表、元組或 torch.Size。
  • fill_value (標(biāo)量) – 用于填充輸出張量的值。

示例

>>> torch.full((2, 3), 3.141592)
tensor([[ 3.1416,  3.1416,  3.1416],
        [ 3.1416,  3.1416,  3.1416]])

6. 從NumPy 數(shù)組創(chuàng)建的張量:from_numpy
示例

>>> a = numpy.array([1, 2, 3])
>>> t = torch.from_numpy(a)
>>> t
tensor([ 1,  2,  3])
>>> t[0] = -1
>>> a
array([-1,  2,  3])

7. 判斷一個(gè)Obj是不是張量:is_tensor
示例

>>> x = torch.tensor([1, 2, 3])
>>> torch.is_tensor(x)
True

3.2 張量操作

1. reshape操作

torch.reshape(input, shape) → Tensor

參數(shù)

  • input (Tensor) – 需要形狀改變的張量
  • shape (tuple of int) – 新形狀

示例

>>> a = torch.arange(4.)
>>> torch.reshape(a, (2, 2))
tensor([[ 0.,  1.],
        [ 2.,  3.]])
>>> b = torch.tensor([[0, 1], [2, 3]])
>>> torch.reshape(b, (-1,))
tensor([ 0,  1,  2,  3])

2. cat操作
在給定的維度上連接給定的張量序列。所有張量必須具有相同的形狀(連接維度除外),或者是一個(gè)大小為 (0,) 的一維空張量。

torch.cat(tensors, dim=0, *, out=None) → Tensor

參數(shù)

  • tensors (sequence of Tensors) – 任何相同類(lèi)型的張量 Python 序列。提供的非空張量必須具有相同的形狀,連接維度除外。
  • dim (int, optional) – 連接張量的維度

示例

>>> x = torch.randn(2, 3)
>>> x
tensor([[ 0.6580, -1.0969, -0.4614],
        [-0.1034, -0.5790,  0.1497]])
>>> torch.cat((x, x, x), 0)
tensor([[ 0.6580, -1.0969, -0.4614],
        [-0.1034, -0.5790,  0.1497],
        [ 0.6580, -1.0969, -0.4614],
        [-0.1034, -0.5790,  0.1497],
        [ 0.6580, -1.0969, -0.4614],
        [-0.1034, -0.5790,  0.1497]])
>>> torch.cat((x, x, x), 1)
tensor([[ 0.6580, -1.0969, -0.4614,  0.6580, -1.0969, -0.4614,  0.6580,
         -1.0969, -0.4614],
        [-0.1034, -0.5790,  0.1497, -0.1034, -0.5790,  0.1497, -0.1034,
         -0.5790,  0.1497]])

3. squeeze操作
返回一個(gè)張量,其中所有指定維度的 input 大小為 1 的維度都被移除。

torch.squeeze(input, dim=None) → Tensor

示例

>>> x = torch.zeros(2, 1, 2, 1, 2)
>>> x.size()
torch.Size([2, 1, 2, 1, 2])
>>> y = torch.squeeze(x)
>>> y.size()
torch.Size([2, 2, 2])
>>> y = torch.squeeze(x, 0)
>>> y.size()
torch.Size([2, 1, 2, 1, 2])
>>> y = torch.squeeze(x, 1)
>>> y.size()
torch.Size([2, 2, 1, 2])
>>> y = torch.squeeze(x, (1, 2, 3))
torch.Size([2, 2, 2])

4、 隨機(jī)數(shù)

4.1隨機(jī)數(shù)發(fā)生器配置

1. seed操作
將所有設(shè)備上生成隨機(jī)數(shù)的種子設(shè)置為非確定性隨機(jī)數(shù)。返回用于為 RNG 播種的 64 位數(shù)字。
示例

>>> torch.seed()
269874079427000

2. 手動(dòng)設(shè)置隨機(jī)數(shù)的種子值:manual_seed
設(shè)置所有設(shè)備上生成隨機(jī)數(shù)的種子。
示例

>>> torch.manual_seed(torch.seed())
<torch._C.Generator object at 0x0000022952198270>

4.2 創(chuàng)建隨機(jī)張量

1. torch.rand
創(chuàng)建一個(gè)張量,其中填充了來(lái)自 [0,1) 區(qū)間上的均勻分布的隨機(jī)數(shù)。

torch.rand(*size, *, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False, pin_memory=False) → Tensor

參數(shù)

size (int…) – 定義輸出張量形狀的整數(shù)序列。可以是可變數(shù)量的參數(shù)或像列表或元組這樣的集合。

示例

>>> torch.rand(4)
tensor([ 0.5204,  0.2503,  0.3525,  0.5673])
>>> torch.rand(2, 3)
tensor([[ 0.8237,  0.5781,  0.6879],
        [ 0.3816,  0.7249,  0.0998]])

2. randint
創(chuàng)建一個(gè)張量,其中填充了在 low(包含)和 high(不包含)之間均勻生成的隨機(jī)整數(shù)。

torch.randint(low=0, high, size, \*, generator=None, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor

參數(shù)

  • low (int, 可選) – 從分布中抽取的最低整數(shù)。默認(rèn)值:0。
  • high (int) – 從分布中抽取的最高整數(shù)加 1。
  • size (tuple) – 定義輸出張量形狀的元組。

示例

>>> torch.randint(3, 5, (3,))
tensor([4, 3, 4])
>>> torch.randint(10, (2, 2))
tensor([[0, 2],
        [5, 5]])
>>> torch.randint(3, 10, (2, 2))
tensor([[4, 5],
        [6, 7]])

5、張量的保存和加載

1. 保存
將張量保存到磁盤(pán)文件。

torch.save(obj, f, pickle_module=pickle, pickle_protocol=DEFAULT_PROTOCOL, _use_new_zipfile_serialization=True)

PyTorch 的常見(jiàn)約定是使用 .pt 文件擴(kuò)展名保存張量。

參數(shù)

  • obj (對(duì)象) – 保存的對(duì)象
  • f -保存的命名

示例

>>> x = torch.tensor([0, 1, 2, 3, 4])
>>> torch.save(x, "tensor.pt")

2. 加載
從文件中加載使用 torch.save() 保存的對(duì)象。

torch.load(f, map_location=None, pickle_module=pickle, *, weights_only=False, mmap=None, **pickle_load_args)

參數(shù)

  • f 類(lèi)文件對(duì)象(必須實(shí)現(xiàn) read()、readline()、tell() 和 seek()),或包含文件名的字符串或 os.PathLike 對(duì)象
  • map_location (可選[聯(lián)合[可調(diào)用[[Storage, str], Storage], device, str, Dict[str, str]]]) – 一個(gè)函數(shù)、torch.device、字符串或一個(gè)字典,指定如何重新映射存儲(chǔ)位置

當(dāng)在包含 GPU 張量文件上調(diào)用torch.load()時(shí),默認(rèn)情況下,這些張量將加載到 GPU??梢哉{(diào)用torch.load(…, map_location=‘cpu’),然后load_state_dict()來(lái)避免在加載模型檢查時(shí)出現(xiàn) GPU 內(nèi)存激增。

load函數(shù)的用法較多,可以通過(guò)pick_module參數(shù)傳入自定義的序列化和反序列化的模塊,可以通過(guò)字節(jié)流、文件對(duì)象等進(jìn)行張量加載。詳細(xì)的用法可以訪問(wèn)官網(wǎng)的API文檔進(jìn)行查看:https://pytorch.ac.cn/docs/stable/generated/torch.load.html#torch.load。

示例

# 加載張量至CPU
>>> torch.load("tensors.pt", map_location=torch.device("cpu"), weights_only=True)
# 加載張量至 GPU 1
>>> torch.load(
...     "tensors.pt",
...     map_location=lambda storage, loc: storage.cuda(1),
...     weights_only=True,
... )  # type: ignore[attr-defined]

6、張量的基礎(chǔ)數(shù)學(xué)計(jì)算

張量的數(shù)學(xué)計(jì)算部分主要是包含了逐元素的線性計(jì)算、統(tǒng)計(jì)信息計(jì)算、比較操作、FFT相關(guān)的頻域操作等等。

1. 絕對(duì)值

torch.abs(input, *, out=None) → Tensor

示例

>>> torch.abs(torch.tensor([-1, -2, 3]))
tensor([ 1,  2,  3])

2. 三角函數(shù)相關(guān)
cos、acos、sin、asin、tan、atan、atan2等等。
示例

>>> a = torch.randn(4)
>>> a
tensor([-0.5461,  0.1347, -2.7266, -0.2746])
>>> torch.sin(a)
tensor([-0.5194,  0.1343, -0.4032, -0.2711])

3. 統(tǒng)計(jì)信息相關(guān)
和值sum、均值標(biāo)準(zhǔn)差std_mean、中值median、最大值max、最小值min等等。

>>> a = torch.tensor(
...     [[ 0.2035,  1.2959,  1.8101, -0.4644],
...      [ 1.5027, -0.3270,  0.5905,  0.6538],
...      [-1.5745,  1.3330, -0.5596, -0.6548],
...      [ 0.1264, -0.5080,  1.6420,  0.1992]])
>>> torch.std_mean(a, dim=0, keepdim=True)
(tensor([[1.2620, 1.0028, 1.0957, 0.6038]]),
 tensor([[ 0.0645,  0.4485,  0.8707, -0.0665]]))

7、小結(jié)

主要介紹了PyTorch框架中torch包的常用組件,包含張量的創(chuàng)建和基本操作、張量的保存和加載以及隨機(jī)數(shù)、張量的基礎(chǔ)數(shù)學(xué)運(yùn)算等相關(guān)操作。

到此這篇關(guān)于PyTorch使用教程中的torch包詳解的文章就介紹到這了,更多相關(guān)PyTorch torch包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中防止sql注入的方法詳解

    Python中防止sql注入的方法詳解

    SQL注入是比較常見(jiàn)的網(wǎng)絡(luò)攻擊方式之一,它不是利用操作系統(tǒng)的BUG來(lái)實(shí)現(xiàn)攻擊,而是針對(duì)程序員編程時(shí)的疏忽,通過(guò)SQL語(yǔ)句,實(shí)現(xiàn)無(wú)帳號(hào)登錄,甚至篡改數(shù)據(jù)庫(kù)。下面這篇文章主要給大家介紹了關(guān)于Python中防止sql注入的方法,需要的朋友可以參考下。
    2017-02-02
  • python實(shí)現(xiàn)簡(jiǎn)單學(xué)生信息管理系統(tǒng)

    python實(shí)現(xiàn)簡(jiǎn)單學(xué)生信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python簡(jiǎn)單的學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Python Pandas高級(jí)教程之時(shí)間處理

    Python Pandas高級(jí)教程之時(shí)間處理

    我們發(fā)現(xiàn)關(guān)于時(shí)間日期的簡(jiǎn)單計(jì)算很多功能都是datetime庫(kù)提供的,那么pandas有沒(méi)有提供跟日期時(shí)間有關(guān)的函數(shù),通過(guò)下面文章來(lái)了解下,這篇文章主要給大家介紹了關(guān)于Python Pandas高級(jí)教程之時(shí)間處理的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • Python使用內(nèi)置json模塊解析json格式數(shù)據(jù)的方法

    Python使用內(nèi)置json模塊解析json格式數(shù)據(jù)的方法

    這篇文章主要介紹了Python使用內(nèi)置json模塊解析json格式數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了Python使用內(nèi)置的json模塊實(shí)現(xiàn)json格式數(shù)據(jù)的解析、轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下
    2017-07-07
  • python爬蟲(chóng)租房信息在地圖上顯示的方法

    python爬蟲(chóng)租房信息在地圖上顯示的方法

    這篇文章主要介紹了python爬蟲(chóng)租房信息在地圖上顯示的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • pip install 下載太慢的6種提速方法

    pip install 下載太慢的6種提速方法

    本文介紹了6種從臨時(shí)應(yīng)急到長(zhǎng)期根治的Python安裝第三方包加速方案,包括臨時(shí)使用國(guó)內(nèi)源、永久配置國(guó)內(nèi)源、使用加速器、避坑小貼士等,幫助開(kāi)發(fā)者提升安裝速度,感興趣的可以了解一下
    2026-01-01
  • python疲勞駕駛困倦低頭檢測(cè)功能的實(shí)現(xiàn)

    python疲勞駕駛困倦低頭檢測(cè)功能的實(shí)現(xiàn)

    這篇文章主要介紹了python疲勞駕駛困倦低頭檢測(cè),該系統(tǒng)可以檢測(cè)一個(gè)人在開(kāi)車(chē)時(shí)是否困倦,及時(shí)提醒,做到安全隱患排查,對(duì)實(shí)現(xiàn)代碼感興趣的朋友一起看看吧
    2022-04-04
  • Python數(shù)據(jù)結(jié)構(gòu)與算法(幾種排序)小結(jié)

    Python數(shù)據(jù)結(jié)構(gòu)與算法(幾種排序)小結(jié)

    這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法(幾種排序)的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • 淺談keras 模型用于預(yù)測(cè)時(shí)的注意事項(xiàng)

    淺談keras 模型用于預(yù)測(cè)時(shí)的注意事項(xiàng)

    這篇文章主要介紹了淺談keras 模型用于預(yù)測(cè)時(shí)的注意事項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • 使用Python進(jìn)行QQ批量登錄的實(shí)例代碼

    使用Python進(jìn)行QQ批量登錄的實(shí)例代碼

    這篇文章主要介紹了使用Python進(jìn)行QQ批量登錄的實(shí)例代碼,代碼簡(jiǎn)單易懂非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-06-06

最新評(píng)論

金乡县| 霍邱县| 海淀区| 江达县| 泰州市| 英德市| 天镇县| 宁波市| 新泰市| 社旗县| 乌审旗| 伊春市| 沁源县| 新河县| 哈巴河县| 长顺县| 工布江达县| 策勒县| 海伦市| 澳门| 广汉市| 商水县| 内江市| 乐平市| 双江| 吴川市| 文昌市| 儋州市| 灵璧县| 乌恰县| 滁州市| 阿荣旗| 武冈市| 石狮市| 札达县| 钦州市| 诸城市| 疏附县| 龙岩市| 临夏县| 双峰县|