PyTorch

PyTorch是一个开源的Python机器学习库，基于，底层由C++实现，应用于人工智能领域，如计算机视觉和自然语言处理。它主要由Meta Platforms的人工智能研究团队开发。著名的用途有：特斯拉自动驾驶，Uber最初发起而现属Linux基金会项目的概率编程软件Pyro，Lightning。

概述
PyTorch主要有两大特征：
 类似于NumPy的张量计算，可使用GPU加速；
 基于带自动微分系统的深度神经网络。

PyTorch包括torch.autograd、torch.nn、torch.optim等子模块。

例子 
下面的程序用简单的例子展示这个程序库的低层功能。
>>> 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

参考文献

外部链接
 

数据挖掘和机器学习软件
用Python編程的自由軟體
Python科学库