PyTorch应用实战四:基于PyTorch构建复杂应用

简介: PyTorch应用实战四:基于PyTorch构建复杂应用

实验环境

torch1.8.0+torchvision0.9.0

import torch
import torchvision
print(torch.__version__)
print(torchvision.__version__)
1.8.0
0.9.0+cpu

1.PyTorch数据加载

import torchvision.transforms as tfm
from PIL import Image
img = Image.open('volleyball.png')
img_1 = tfm.RandomCrop(200, padding=50)(img)  #随机裁剪图片
img_1.show()
img_1.save('crop.png')
img_2 = tfm.RandomHorizontalFlip()(img)       #随机水平翻转图片
img_2.show()
img_2.save('flip.png')

1.1 数据预处理

torchvision.transforms

transfrom_train = tfm.Compose([
    tfm.RandomCrop(32, padding=4),
    tfm.RandomHorizontalFlip(),   
    tfm.ToTensor(),     #将图片转换为Tensor张量                       
    tfm.Normalize((0.5, 0.5, 0.5),(0.5, 0.5, 0.5))  #标准化
])

1.2 数据加载

torch.utils.data

loader = torch.utils.data.DataLoader(
    datasets, batch_size=32, shuffle=True, sampler=None,
    num_workers=2, collate_fn=None, pin_memory=True, drop_last=False
)

datasets:传入的数据集,可以是自定义的dataset对象或者torchvision中的预定义数据集对象。

batch_size:每个batch中包含的样本数量。

shuffle:是否打乱数据集。

sampler:样本抽样器,如果指定了sampler,则忽略shuffle参数。

num_workers:用于数据加载的子进程数量。

collate_fn:对样本进行批处理前的预处理函数,可用于对样本进行排序、padding等操作。

pin_memory:是否将数据加载到GPU的显存中。

drop_last:如果数据集样本数量不能被batch_size整除,则是否舍弃剩余的不足一个batch的样本。

2.PyTorch模型搭建

2.1 经典模型

torchvision.models

from torchvision import models
net1 = models.resnet50()
net2 = models.resnet50(pretrained=True)

2.2 模型加载与保存

model.load_state_dict(torch.load('pretrained_weights.pth'))
torch.save(model.state_dict(), 'model_weights.pth')

3.PyTorch优化器

3.1 torch.optim

optimizer = optim.SGD([       #SGD随机梯度下降算法
    {'params':model.base.parameters()},
    {'params':model.classifier.parameters(), 'lr': 1e-3}
], lr=1e-2, momentum=0.9)
# 训练过程 
model = init_model_function()               #模型构建
optimizer = optim.SomeOptimizer(            #设置优化器
    model.parameters(), lr, mm
)
for data, label in train_dataloader:
    optimizer.zero_grad()                #前向计算前,清空原有梯度
    output = model(data)                 #前向计算
    loss = loss_function(output, label)  #损失函数
    loss.backward()                      #反向传播 
    optimizer.step()                     #更新参数

3.2 学习率调整

scheduler = optim.lr_scheduler.SomeScheduler(optimizer, *args)
for epoch in range(epochs):
    train()
    test()
    scheduler.step()

常见函数

激活单元类型

ELU MultiheadAttention SELU softshrink Softmin
Hardshrink PReLU CELU Softsign Softmax
Hardtanh ReLU GELU Tanh Softmax2d
LeakyReLU ReLU6 Sigmoid Tanhshrink LogSoftmax
LogSigmoid RReLU Softplus Threshold

损失函数层类型

L1Loss PoissonNLLLoss HingeEmbeddingLoss CosineEmbeddingLoss
MSELoss KLDivLoss MultiLabelMarginLoss MultiMarginLoss
CrossEntropyLoss BCELoss SmoothL1Loss TripletMarginLoss
CTCLoss BCEWithLogitsLoss SoftMarginLoss
NLLLoss MarginRankingLoss MultiLabelSoftMarginLoss

优化器类型

Adadelta AdamW ASGD Rprop
Adagrad SparseAdam LBFGS SGD
Adam Adamax RMSprop

变换操作类型

Compose RandomAffine RandomOrder Resize ToTensor
CenterCrop RandomApply RandomPerspective Scale Lambda
ColorJitter RandomChoice RandomResizedCrop TenCrop
FiveCrop RandomCrop RandomRotation LinearTransformation
Grayscale RandomGrayscale RandomSizedCrop Normalize
Pad RandomHorizontalFlip RandomVerticalFlip ToPILImage

数据集名称

MNIST CocoCaptions CIFAR10 Flickr8k USPS
FashionMNIST cocoDetection CIFAR100 Flickr30k Kinetics400
KMNIST LSUN STL10 VOCSegmentation HMDB51
EMNIST ImageFolder SVHN VOCDetection UCF101
QMNIST DatasetFolder PhotoTour Cityscape CelebA
FakeData ImageNet SBU SBDataset

torchvision.models中所有实现的分类模型

AlexNet VGG-13-bn ResNet-101 Densenet-201 ResNeXt-50-32x4d
VGG-11 VGG-16-bn ResNet-152 Densenet-161 ResNeXt-101-32x8d
VGG-13 VGG-19-bn SqueezeNet Inception-V3 Wide ResNet-50-2
VGG-16 ResNet-18 GoogleNet Wide ResNet-101-2
VGG-19 ResNet-34 Densenet-121 ShuffleNet-V2 MNASNet 1.0
VGG-11-bn ResNet-50 Densenet-169 MobileNet-V2


目录
相关文章
|
2月前
|
机器学习/深度学习 PyTorch TensorFlow
TensorFlow与PyTorch深度对比分析:从基础原理到实战选择的完整指南
蒋星熠Jaxonic,深度学习探索者。本文深度对比TensorFlow与PyTorch架构、性能、生态及应用场景,剖析技术选型关键,助力开发者在二进制星河中驾驭AI未来。
595 13
|
3月前
|
机器学习/深度学习 数据采集 人工智能
PyTorch学习实战:AI从数学基础到模型优化全流程精解
本文系统讲解人工智能、机器学习与深度学习的层级关系,涵盖PyTorch环境配置、张量操作、数据预处理、神经网络基础及模型训练全流程,结合数学原理与代码实践,深入浅出地介绍激活函数、反向传播等核心概念,助力快速入门深度学习。
194 1
|
4月前
|
PyTorch 算法框架/工具 异构计算
PyTorch 2.0性能优化实战:4种常见代码错误严重拖慢模型
我们将深入探讨图中断(graph breaks)和多图问题对性能的负面影响,并分析PyTorch模型开发中应当避免的常见错误模式。
257 9
|
6月前
|
机器学习/深度学习 存储 PyTorch
PyTorch + MLFlow 实战:从零构建可追踪的深度学习模型训练系统
本文通过使用 Kaggle 数据集训练情感分析模型的实例,详细演示了如何将 PyTorch 与 MLFlow 进行深度集成,实现完整的实验跟踪、模型记录和结果可复现性管理。文章将系统性地介绍训练代码的核心组件,展示指标和工件的记录方法,并提供 MLFlow UI 的详细界面截图。
260 2
PyTorch + MLFlow 实战:从零构建可追踪的深度学习模型训练系统
|
9月前
|
机器学习/深度学习 自然语言处理 算法
PyTorch PINN实战:用深度学习求解微分方程
物理信息神经网络(PINN)是一种将深度学习与物理定律结合的创新方法,特别适用于微分方程求解。传统神经网络依赖大规模标记数据,而PINN通过将微分方程约束嵌入损失函数,显著提高数据效率。它能在流体动力学、量子力学等领域实现高效建模,弥补了传统数值方法在高维复杂问题上的不足。尽管计算成本较高且对超参数敏感,PINN仍展现出强大的泛化能力和鲁棒性,为科学计算提供了新路径。文章详细介绍了PINN的工作原理、技术优势及局限性,并通过Python代码演示了其在微分方程求解中的应用,验证了其与解析解的高度一致性。
2375 5
PyTorch PINN实战:用深度学习求解微分方程
|
10月前
|
机器学习/深度学习 算法 安全
用PyTorch从零构建 DeepSeek R1:模型架构和分步训练详解
本文详细介绍了DeepSeek R1模型的构建过程,涵盖从基础模型选型到多阶段训练流程,再到关键技术如强化学习、拒绝采样和知识蒸馏的应用。
1069 3
用PyTorch从零构建 DeepSeek R1:模型架构和分步训练详解
|
并行计算 监控 搜索推荐
使用 PyTorch-BigGraph 构建和部署大规模图嵌入的完整教程
当处理大规模图数据时,复杂性难以避免。PyTorch-BigGraph (PBG) 是一款专为此设计的工具,能够高效处理数十亿节点和边的图数据。PBG通过多GPU或节点无缝扩展,利用高效的分区技术,生成准确的嵌入表示,适用于社交网络、推荐系统和知识图谱等领域。本文详细介绍PBG的设置、训练和优化方法,涵盖环境配置、数据准备、模型训练、性能优化和实际应用案例,帮助读者高效处理大规模图数据。
284 5
|
机器学习/深度学习 人工智能 PyTorch
使用Pytorch构建视觉语言模型(VLM)
视觉语言模型(Vision Language Model,VLM)正在改变计算机对视觉和文本信息的理解与交互方式。本文将介绍 VLM 的核心组件和实现细节,可以让你全面掌握这项前沿技术。我们的目标是理解并实现能够通过指令微调来执行有用任务的视觉语言模型。
346 2
|
存储 缓存 PyTorch
使用PyTorch从零构建Llama 3
本文将详细指导如何从零开始构建完整的Llama 3模型架构,并在自定义数据集上执行训练和推理。
331 1
|
机器学习/深度学习 PyTorch TensorFlow
TensorFlow和PyTorch的实际应用比较
TensorFlow和PyTorch的实际应用比较
352 2

热门文章

最新文章

推荐镜像

更多