PyTorch

出自Local Chinese Wikipedia
imported>Cewbot2025年12月29日 (一) 01:19的修訂 (清理跨語言連結Meta AI成為內部連結:編輯摘要的紅色連結經繁簡轉換後存在,非bot錯誤編輯 (本次機械人作業已完成39.1%))
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)
跳至導覽 跳至搜尋

package.lua第80行Lua錯誤:module 'Module:CGroup/core' not found

頁面Module:Infobox/styles.css沒有內容。

PyTorch
File:PyTorch logo black.svg
原作者Adam Paszke, Sam Gross, Soumith Chintala, Gregory Chanan
開發者Meta AI
首次發布2016年10月,​9年前​(2016-October
當前版本Template:LSR/wikidata
原始碼庫github.com/pytorch/pytorch
程式語言Python, C++, CUDA
引擎頁面Template:Plainlist/styles.css沒有內容。
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    作業系統Linux, macOS, Windows
    平台IA-32, x86-64, ARM64
    類型機器學習深度學習
    許可協議BSD許可證
    網站pytorch.org
    頁面Module:Infobox/styles.css沒有內容。

    package.lua第80行Lua錯誤:module 'Module:Sidebar/configuration' not found

    PyTorch是一個開源Python機器學習,基於package.lua第80行Lua錯誤:module 'Module:Ilh/data' not found[1][2][3],底層由C++實現,應用於人工智慧領域,如計算機視覺自然語言處理[4]。它最初由Meta Platforms的人工智慧研究團隊開發,現在屬於Linux基金會的一部分[5][6][7]。它是在修改後的BSD許可證下發布的自由及開放原始碼軟體。 儘管Python接口更加完善並且是開發的主要重點,但 PyTorch 也有C++接口[8]

    許多深度學習軟體都是基於 PyTorch 構建的,包括特斯拉自動駕駛[9]Uber的Pyro[10]Hugging Face的Transformers[11]、 PyTorch Lightning[12][13]、和Catalyst[14][15]

    概述[編輯]

    PyTorch主要有兩大特徵:[16]

    PyTorch包括torch.autograd、torch.nn、torch.optim等子模塊[19]

    PyTorch包含多種損失函數,包括 MSE(均方誤差 = L2 範數)、交叉熵損失和負熵似然損失(對分類器有用)等。

    PyTorch張量[編輯]

    PyTorch定義了一個名為張量(torch.Tensor) 的類別來儲存和操作同構多維矩形數字陣列。 PyTorch張量與NumPy陣列類似,但也可以在支援 CUDA英偉達 GPU 上運作。 PyTorch 也一直在開發對其他 GPU 平台的支持,例如 AMD 的 ROCm 和 AppleMetal Framework[20]

    張量是 PyTorch 中的核心數據抽象,PyTorch 支援各種張量子類型[21]。通常地,一維張量稱為向量(vector),二維張量稱為矩陣(matrix)。

    張量的數據類型包括:

    • torch.bool
    • torch.int8
    • torch.uint8
    • torch.int16
    • torch.int32
    • torch.int64
    • torch.half
    • torch.float
    • torch.double
    • torch.bfloat

    PyTorch神經網絡[編輯]

    神經網絡由對數據執行操作的層/模塊組成。 torch.nn 命名空間提供了使用者需要的所有構建塊來構建自己的神經網絡。PyTorch 中的每個模塊都對應nn.模塊。 神經網絡本身是由其他模塊(層)組成的模塊。這種嵌套結構允許使用者輕鬆構建並管理複雜的架構。神經網絡中的許多層都是參數化的,即具有相關的權重以及在訓練期間優化的偏差。自動子類化跟蹤模型對象中定義的所有欄位,並生成所有參數可使用模型或方法訪問。[1]

    import torch                     # for all things PyTorch
    import torch.nn as nn            # for torch.nn.Module, the parent object for PyTorch models
    import torch.nn.functional as F  # for the activation function
    

    激活函數torch.nn.Module具有封裝所有主要內容的對象激活功能,包括 ReLU 及其許多變體、Tanh、 Hardtanh、sigmoid 等。[2]

    PyTorch模型常見圖層類型[編輯]

    線性層[編輯]

    最基本的神經網絡層類型是線性完全連接層。在這個層中,每個輸入都會影響每個圖層的輸出到由圖層權重指定的程度。如果 模型有 m 個輸入和 n 個輸出,權重將是一個 m x n 矩陣。

    卷積層[編輯]

    卷積層旨在處理高度空間相關性。它們在計算機視覺中非常常用, 它們檢測組成的特徵的緊密分組更高級別的功能。它們也會在其他上下文中彈出。例如, 在 NLP 應用程式中,單詞的直接上下文(即序列中附近的其他單詞)可以影響語句。

    循環層[編輯]

    遞歸神經網絡(RNN)是用於順序數據(從科學儀器到時間序列測量)的自然語言句子。

    例子[編輯]

    下面的程序用簡單的例子展示這個程序庫的低層功能。

    >>> import torch
    >>> dtype = torch.float
    >>> device = torch.device("cpu") # 本次在CPU上执行所有的计算
    >>> # device = torch.device("cuda:0") # 本次在GPU上执行所有的计算
    >>> 
    >>> # 建立一个张量并用随机数填充这个张量
    >>> a = torch.randn(2, 3, device=device, dtype=dtype)
    >>> print(a) # 输出张量a
    tensor([[-0.1460, -0.3490,  0.3705],
            [-1.1141,  0.7661,  1.0823]])
    >>> 
    >>> # 建立一个张量并用随机数填充这个张量
    >>> b = torch.randn(2, 3, device=device, dtype=dtype)
    >>> print(b) # 输出张量B
    tensor([[ 0.6901, -0.9663,  0.3634],
            [-0.6538, -0.3728, -1.1323]])
    >>> 
    >>> print(a*b) # 输出两个张量的乘积
    tensor([[-0.1007,  0.3372,  0.1346],
            [ 0.7284, -0.2856, -1.2256]])
    >>> print(a.sum()) # 输出在张量a中所有元素的总和
    tensor(0.6097)
    >>> 
    >>> print(a[1,2]) # 输出第2行第3列(0起始)的元素
    tensor(1.0823)
    >>> 
    >>> print(a.max()) # 输出在张量a中的极大值
    tensor(1.0823)
    

    下列代碼塊展示了nn模塊提供的高層功能的例子。例子中定義了具有線性層的神經網絡。

    import torch
    from torch import nn # 从PyTorch中导入nn子模块 
    
    class NeuralNetwork(nn.Module): # 神经网络被定义为类
        def __init__(self): # 在__init__方法中定义诸层和变量
            super(NeuralNetwork, self).__init__() # 必须出现在所有网络中
            self.flatten = nn.Flatten() # 定义一个压平层
            self.linear_relu_stack = nn.Sequential( # 定义诸层的一个堆栈
                nn.Linear(28*28, 512), # 线性层有一个输入和输出形状
                nn.ReLU(), # ReLU是nn提供的诸多激活函数之一
                nn.Linear(512, 512),
                nn.ReLU(),
                nn.Linear(512, 10), 
            )
    
        def forward(self, x): # 这个函数定义前向传递。
            x = self.flatten(x)
            logits = self.linear_relu_stack(x)
            return logits
    

    參考文獻[編輯]

    1. 1.0 1.1 package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
    2. 2.0 2.1 package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
    3. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
    4. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
    5. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
    6. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
    7. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
    8. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
    9. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
    10. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
    11. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
    12. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
    13. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
    14. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
    15. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
    16. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
    17. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
    18. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
    19. 19.0 19.1 package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
    20. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found
    21. package.lua第80行Lua錯誤:module 'Module:Citation/CS1/People' not found

    參見[編輯]

    外部連結[編輯]

    package.lua第80行Lua錯誤:module 'Module:Navbar/configuration' not found Template:Differentiable computing