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

PyTorch常用命令(可快速上手PyTorch的核心功能,涵盖从数据预处理到模型训练的全流程)

以下是PyTorch常用命令的分类整理,涵盖张量操作、模型构建、数据加载、训练流程等核心内容:


1. 张量操作

  • 创建张量

    x = torch.tensor([1, 2, 3])           # 从数据创建
    x = torch.zeros(3, 3)                 # 全零张量
    x = torch.ones(3, 3)                  # 全一张量
    x = torch.randn(3, 3)                 # 标准正态分布随机数
    x = torch.arange(0, 10, step=2)       # 类似range的序列
  • 形状操作

    x = x.view(2, -1)                     # 调整形状(需连续内存)
    x = x.reshape(2, -1)                  # 更灵活的调整形状
    x = x.permute(1, 0)                   # 维度转置
    x = x.squeeze()                       # 删除维度为1的轴
    x = x.unsqueeze(0)                    # 增加维度为1的轴
  • 数学运算

    z = x + y                             # 逐元素加法
    z = torch.matmul(x, y)                # 矩阵乘法
    z = x.sum(dim=1)                      # 沿维度求和
    z = torch.cat([x, y], dim=0)          # 沿维度拼接张量

2. 模型构建

  • 定义模型

    import torch.nn as nn
    class MyModel(nn.Module):def __init__(self):super().__init__()self.fc = nn.Linear(10, 5)    # 全连接层self.relu = nn.ReLU()         # 激活函数def forward(self, x):return self.relu(self.fc(x))
  • 层与激活函数

    nn.Conv2d(in_channels, out_channels, kernel_size)  # 卷积层
    nn.LSTM(input_size, hidden_size)                   # LSTM层
    nn.BatchNorm2d(num_features)                       # 批归一化
    nn.Dropout(p=0.5)                                  # Dropout层
  • 损失函数

    criterion = nn.CrossEntropyLoss()      # 分类任务
    criterion = nn.MSELoss()              # 回归任务
  • 优化器

    optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
    optimizer = torch.optim.Adam(model.parameters())

3. 数据加载

  • 自定义数据集

    from torch.utils.data import Dataset, DataLoader
    class MyDataset(Dataset):def __len__(self): return len(data)def __getitem__(self, idx): return data[idx], label[idx]dataset = MyDataset()
    dataloader = DataLoader(dataset, batch_size=32, shuffle=True)
  • 预加载数据集

    from torchvision import datasets, transforms
    transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize((0.5,), (0.5,))
    ])
    mnist = datasets.MNIST(root='./data', train=True, download=True, transform=transform)

4. 训练流程

  • 训练循环模板

    device = 'cuda' if torch.cuda.is_available() else 'cpu'
    model = MyModel().to(device)for epoch in range(num_epochs):model.train()for inputs, labels in dataloader:inputs, labels = inputs.to(device), labels.to(device)outputs = model(inputs)          # 前向传播loss = criterion(outputs, labels)optimizer.zero_grad()           # 清零梯度loss.backward()                 # 反向传播optimizer.step()                # 更新参数
  • 评估模式

    model.eval()
    with torch.no_grad():                   # 禁用梯度计算for inputs, labels in val_loader:outputs = model(inputs)

5. 模型保存与加载

# 保存模型参数
torch.save(model.state_dict(), 'model.pth')# 加载模型参数
model.load_state_dict(torch.load('model.pth'))

6. 设备管理

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
model = model.to(device)                  # 模型移至GPU
x = x.to(device)                         # 数据移至GPU
torch.cuda.empty_cache()                  # 清理GPU缓存

7. 其他实用命令

  • 与NumPy互转

    numpy_array = torch_tensor.numpy()       # Tensor → NumPy
    torch_tensor = torch.from_numpy(numpy_array)  # NumPy → Tensor
  • 随机种子设置

    torch.manual_seed(42)                   # 固定随机性
  • 自动求导

    x = torch.tensor(1.0, requires_grad=True)
    y = x**2
    y.backward()                            # 计算梯度
    print(x.grad)                           # 输出梯度值: 2.0

如果此文章对您有所帮助,那就请点个赞吧,收藏+关注 那就更棒啦,十分感谢!!! 

http://www.dtcms.com/a/177117.html

相关文章:

  • Nacos源码—5.Nacos配置中心实现分析二
  • uniapp 搭配 uCharts
  • 回溯进阶(二):以解数独来深入了解映射
  • 【ARM AMBA AHB 入门 3.1 -- AHB控制信号】
  • 分区器(1)
  • ERP进销存系统源码,SaaS模式多租户ERP管理系统,SpringBoot、Vue、UniAPP技术框架
  • 易境通海外仓系统:如何高效管理尾程派送订单?
  • win安装anaconda 并切换软件源
  • VIVADO IP核整理(二)——FFT
  • win11下pip安装matplotlib超时的问题解决
  • Android 10.0 SharedPreferences in credential encrypted storage are not avai
  • 《Python星球日记》 第46天:决策树与随机森林
  • 做 iOS 调试时,我尝试了 5 款抓包工具
  • 从图灵机到量子计算:逻辑可视化的终极进化
  • 动态规划之回文串问题
  • 『深夜_MySQL』数据库操作 字符集与检验规则
  • 格式工厂:一站式多媒体文件转换专家
  • 【MATLAB源码-第277期】基于matlab的AF中继系统仿真,AF和直传误码率对比、不同中继位置误码率对比、信道容量、中继功率分配以及终端概率。
  • 分布式-基于数据库排他锁
  • RFID电子标签(芯片)及RFID射频识别技术深度解析
  • 软件工程学概述
  • 加速页面加载的全流程优化策略
  • 【MySQL】C语言访问数据库
  • 解锁 AI 生产力:Google 四大免费工具全面解析20250507
  • (2025,AR,NAR,GAN,Diffusion,模型对比,数据集,评估指标,性能对比)文本到图像的生成和编辑:综述
  • Rust 与 Golang 深度对决:从语法到应用场景的全方位解析
  • 【HarmonyOS 5】鸿蒙中常见的标题栏布局方案
  • 深入探索 Spark RDD 行动算子:功能解析与实战应用
  • 张正友相机标定方法中标定板角点检测算法原理(Harris和Shi-Tomasi角点检测算法)
  • GSENSE2020BSI sCMOS科学级相机主要参数及应用场景