《深度学习》——pytorch简介和安装

发布于:2025-02-11 ⋅ 阅读:(10) ⋅ 点赞:(0)

pytorch是什么?

pytorch的特点

PyTorch 是一个开源的深度学习框架,由 Facebook 的人工智能研究团队开发。它在学术界和工业界都得到了广泛的应用,下面从多个方面详细介绍:

  • 动态计算图

    • PyTorch 使用动态计算图,这意味着图是在运行时动态创建的。与静态计算图(如 TensorFlow 1.x)相比,动态计算图使得代码的调试更加容易,因为你可以像编写普通 Python 代码一样编写和调试模型,并且可以在运行时根据条件改变计算图的结构。
    • 示例代码:
    import torch
    
    x = torch.tensor([1.0], requires_grad=True)
    y = x * 2
    z = y * y
    z.backward()
    print(x.grad)  # 输出梯度
    

    结果:
    在这里插入图片描述

  • 简洁易用

    • PyTorch 的 API 设计简洁直观,与 Python 的语法风格高度契合,对于熟悉 Python 的开发者来说很容易上手。它提供了丰富的工具和函数,方便用户进行模型的构建、训练和部署。
  • 强大的 GPU 支持

    • PyTorch 可以很方便地将计算任务转移到 GPU 上进行加速。通过简单的代码修改,就可以将模型和数据移动到 GPU 上运行,充分利用 GPU 的并行计算能力。
    • 示例代码:
    import torch
    
    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
    x = torch.tensor([1.0], requires_grad=True).to(device)
    print(device)
    

    结果:在这里插入图片描述

  • 丰富的生态系统

    • PyTorch 拥有庞大的社区和丰富的生态系统,包括各种预训练模型、工具库和教程。例如,TorchVision 提供了计算机视觉领域的数据集、模型和图像变换工具;TorchText 则专注于自然语言处理任务。

基本组件

  • 张量(Tensor)
    • 张量是 PyTorch 中最基本的数据结构,类似于 NumPy 的数组。张量可以在 CPU 或 GPU 上进行计算,并且支持自动求导。
    • 示例代码:
    import torch
    
    # 创建一个张量
    x = torch.tensor([[1, 2], [3, 4]])
    print(x)
    

    结果
    在这里插入图片描述

  • 自动求导(Autograd)
    • PyTorch 的 Autograd 模块提供了自动求导功能,它可以根据定义的计算图自动计算梯度。在训练深度学习模型时,自动求导可以大大简化梯度计算的过程。
    • 示例代码:
    import torch
    
    x = torch.tensor([1.0], requires_grad=True)
    y = x ** 2
    y.backward()
    print(x.grad)  # 输出梯度
    

    结果:
    在这里插入图片描述

  • 神经网络模块(nn.Module)
    • nn.Module是 PyTorch 中用于构建神经网络的基类。通过继承nn.Module,可以方便地定义自己的神经网络模型,并使用forward方法定义前向传播过程。
    • 示例代码:
    import torch
    import torch.nn as nn
    
    class SimpleNet(nn.Module):
        def __init__(self):
            super(SimpleNet, self).__init__()
            self.fc = nn.Linear(10, 1)
    
        def forward(self, x):
            return self.fc(x)
    
    model = SimpleNet()
    
  • 优化器(Optimizer)
    • PyTorch 提供了多种优化器,如 SGD、Adam、RMSprop 等,用于更新模型的参数。优化器根据计算得到的梯度来调整模型的参数,以最小化损失函数。
    • 示例代码:
    import torch
    import torch.nn as nn
    import torch.optim as optim
    
    model = nn.Linear(10, 1)
    optimizer = optim.SGD(model.parameters(), lr=0.01)
    

应用场景

  • 计算机视觉
    • 在图像分类、目标检测、语义分割等任务中,PyTorch 被广泛应用。例如,使用预训练的 ResNet、VGG 等模型进行图像分类任务。
  • 自然语言处理
    • 在文本分类、机器翻译、情感分析等任务中,PyTorch 也有出色的表现。例如,使用 Transformer 架构的模型(如 BERT、GPT)进行自然语言处理任务。
  • 强化学习
    • PyTorch 提供了方便的工具和函数,用于实现强化学习算法,如 DQN、A2C、PPO 等。

pytorch安装

你可以根据自己的需求选择合适的安装方式,pytorch安装分为GPU版本和CPU版本:

cpu版本安装

首先进入pytorch官网:https://pytorch.org/
在这里插入图片描述
复制图中内容,因为CPU版本的PyTorch大小只有不到200MB,所以可以在选择前5个与自己的所对应的版本后直接复制最后的命令到电脑终端(win+R后输入cmd)中进行下载:
在这里插入图片描述
验证是否可用:

import torch

# 创建一个简单的张量
x = torch.tensor([1.0, 2.0, 3.0])
y = torch.tensor([4.0, 5.0, 6.0])

# 执行张量加法运算
z = x + y

# 打印结果
print("加法运算结果:", z)

结果:
在这里插入图片描述

GPU版本安装

GPU版本安装首先电脑要有显卡才可以,并下载cuda,cuda下载步骤可自行搜索下载,但是一定要对应版本号,高版本可向下兼容低版本。
cuda下载完成后再根据cuda的版本注意pytorch的cuda版本不要高于电脑的cuda版本,否则cuda和pytorch不可用。
以本人电脑为例,电脑cuda版本为12.4
在这里插入图片描述
故本人选择的pytorch为:
在这里插入图片描述
选择好后直接复制最后的命令到电脑终端(win+R后输入cmd)中进行下载:
在这里插入图片描述
验证GPU版本是否可用:

import torch

# 检查 CUDA 是否可用
if torch.cuda.is_available():
    print("CUDA 可用")
    # 获取可用的 GPU 数量
    num_gpus = torch.cuda.device_count()
    print(f"可用的 GPU 数量: {num_gpus}")
    # 获取当前使用的 GPU 设备名称
    current_device = torch.cuda.current_device()
    print(f"当前使用的 GPU 设备名称: {torch.cuda.get_device_name(current_device)}")

    # 在 GPU 上创建一个张量
    x = torch.tensor([1.0, 2.0, 3.0]).cuda()
    y = torch.tensor([4.0, 5.0, 6.0]).cuda()
    # 执行张量加法运算
    z = x + y
    print("GPU 上的加法运算结果:", z)
else:
    print("CUDA 不可用,将使用 CPU 进行计算")

结果:
在这里插入图片描述