当前位置: 首页 > article >正文

pytorch2.5实例教程

以下是再次为你提供的一个详细的PyTorch使用教程:

一、安装PyTorch

  • 环境准备
    • 确保系统已安装合适版本的Python(推荐3.10及以上)。
  • 安装方式
    • CPU版本
      • 对于Linux和macOS:
        • 使用命令 pip install torch torchvision torchaudio
      • 对于Windows:
        • 先处理好依赖项,然后使用类似的pip命令安装。
    • GPU版本(依赖于CUDA)
      • 依据CUDA版本在官网查找对应命令。例如,若CUDA为12.4:
        • 执行 conda install pytorch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 pytorch-cuda=12.4 -c pytorch -c nvidia。

二、PyTorch基础概念

  • 张量(Tensors)
    • 核心数据结构,类似NumPy数组且可在GPU加速计算。
    • 创建方式
      • 从列表创建:
        • 示例:
          • import torch
          • my_list = [1, 2, 3]
          • tensor = torch.tensor(my_list)
      • 创建随机张量:
        • 例如:random_tensor = torch.randn(3, 3)(创建3x3随机正态分布张量)。
  • 计算图与自动微分
    • 计算基于构建计算图,操作张量时自动构建。
    • 示例:
      • 计算 y = x^2 + 3x 的梯度。
        • x = torch.tensor([2.0], requires_grad = True)
        • y = x ** 2+3 * x
        • y.backward()
        • print(x.grad)

三、创建神经网络模型

  • 定义网络结构
    • 使用 nn.Module 类。
    • 示例(全连接神经网络):
      • import torch.nn as nn
      • class MyNet(nn.Module):
            def __init__(self):
                super(MyNet, self).__init__()
                self.fc1 = nn.Linear(10, 5)
                self.fc2 = nn.Linear(5, 1)
            def forward(self, x):
                x = torch.relu(self.fc1(x))
                x = self.fc2(x)
                return x
        
  • 模型初始化与参数查看
    • 初始化:model = MyNet()
    • 参数查看:
      • for name, param in model.named_parameters():
            print(name, param.size())
        

四、数据处理

  • 数据加载
    • 使用 DataLoader 类,需先创建数据集类(继承 torch.utils.data.Dataset)。
    • 示例:
      • from torch.utils.data import Dataset, DataLoader
        class MyDataset(Dataset):
            def __init__(self):
                self.data = torch.randn(100, 10)
                self.labels = torch.randint(0, 2, (100,))
            def __getitem__(self, index):
                return self.data[index], self.labels[index]
            def __len__(self):
                return len(self.data)
        dataset = MyDataset()
        dataloader = DataLoader(dataset, batch_size = 10, shuffle = True)
        
  • 数据预处理
    • 以图像数据为例,使用 torchvision.transforms
    • 示例:
      • import torchvision.transforms as transforms
        transform = transforms.Compose([
            transforms.ToTensor(),
            transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
        ])
        

五、训练模型

  • 定义损失函数和优化器
    • 损失函数
      • 例如回归问题用均方误差(MSE):criterion = nn.MSELoss()
    • 优化器
      • 如随机梯度下降(SGD):optimizer = torch.optim.SGD(model.parameters(), lr = 0.01)
  • 训练循环
    • 多轮训练:
      • num_epochs = 10
        for epoch in range(num_epochs):
            for batch_data, batch_labels in dataloader:
                optimizer.zero_grad()
                outputs = model(batch_data)
                loss = criterion(outputs, batch_labels)
                loss.backward()
                optimizer.step()
            print(f'Epoch {epoch + 1}, Loss: {loss.item()}')
        

六、模型评估与预测

  • 模型评估
    • 以分类问题计算准确率为例:
      • correct = 0
        total = 0
        with torch.no_grad():
            for batch_data, batch_labels in dataloader:
                outputs = model(batch_data)
                _, predicted = torch.max(outputs.data, 1)
                total += batch_labels.size(0)
                correct += (predicted == batch_labels).sum().item()
        accuracy = correct / total
        print(f'Accuracy: {accuracy}')
        
  • 预测新数据
    • 示例:
      • new_data = torch.randn(1, 10)
        with torch.no_grad():
            prediction = model(new_data)
        print(f'Prediction: {prediction}')
        

http://www.kler.cn/a/518259.html

相关文章:

  • 【QT】 控件 -- 显示类
  • ComfyUI实现老照片修复——AI修复老照片(ComfyUI-ReActor / ReSwapper)解决天坑问题及加速pip下载
  • NX100 参数配置
  • Day42:列表的组合
  • 科技快讯 | 理想官宣:正式收费!WeChat 港币钱包拓宽商户网络;百川智能发布深度思考模型Baichuan-M1-preview
  • C++ list 容器用法
  • poi在word中打开本地文件
  • Cloudflare通过代理服务器绕过 CORS 限制:原理、实现场景解析
  • C语言数据结构:链表、栈与队列、排序算法与查找算法深度解析
  • 【C++高并发服务器WebServer】-1:Linux中父子进程fork创建及关系、GDB多进程调试
  • Redis(5,jedis和spring)
  • QModbusTCPClient 服务器断开引起的程序崩溃
  • ChirpIoT技术的优势以及局限性
  • Spring Boot - 数据库集成03 - 集成Mybatis
  • SSM框架探秘:Spring 整合 Mybatis 框架
  • Linux(Centos 7.6)命令详解:wc
  • linux查看上次开机时间
  • Effective C++ 规则46: 需要类型转换时,请为模板定义非成员函数
  • LVGL+FreeRTOS实战项目:智能健康助手(xgzp6847a篇)
  • 【算法工程】VS Code问题解决:Failed to parse remote port from server output
  • Java多线程的面试面试题及答案解析
  • Golang之Context详解
  • 【pytorch 】miniconda python3.11 环境安装pytorch
  • 无公网IP 外网访问媒体服务器 Emby
  • GS论文阅读--GeoTexDensifier
  • 如何实现分页相关功能