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


目录
相关文章
|
3月前
|
机器学习/深度学习 人工智能 PyTorch
使用Pytorch构建视觉语言模型(VLM)
视觉语言模型(Vision Language Model,VLM)正在改变计算机对视觉和文本信息的理解与交互方式。本文将介绍 VLM 的核心组件和实现细节,可以让你全面掌握这项前沿技术。我们的目标是理解并实现能够通过指令微调来执行有用任务的视觉语言模型。
75 2
|
3月前
|
并行计算 监控 搜索推荐
使用 PyTorch-BigGraph 构建和部署大规模图嵌入的完整教程
当处理大规模图数据时,复杂性难以避免。PyTorch-BigGraph (PBG) 是一款专为此设计的工具,能够高效处理数十亿节点和边的图数据。PBG通过多GPU或节点无缝扩展,利用高效的分区技术,生成准确的嵌入表示,适用于社交网络、推荐系统和知识图谱等领域。本文详细介绍PBG的设置、训练和优化方法,涵盖环境配置、数据准备、模型训练、性能优化和实际应用案例,帮助读者高效处理大规模图数据。
82 5
|
4月前
|
机器学习/深度学习 数据采集 自然语言处理
【NLP自然语言处理】基于PyTorch深度学习框架构建RNN经典案例:构建人名分类器
【NLP自然语言处理】基于PyTorch深度学习框架构建RNN经典案例:构建人名分类器
|
5月前
|
机器学习/深度学习 数据挖掘 TensorFlow
解锁Python数据分析新技能,TensorFlow&PyTorch双引擎驱动深度学习实战盛宴
在数据驱动时代,Python凭借简洁的语法和强大的库支持,成为数据分析与机器学习的首选语言。Pandas和NumPy是Python数据分析的基础,前者提供高效的数据处理工具,后者则支持科学计算。TensorFlow与PyTorch作为深度学习领域的两大框架,助力数据科学家构建复杂神经网络,挖掘数据深层价值。通过Python打下的坚实基础,结合TensorFlow和PyTorch的强大功能,我们能在数据科学领域探索无限可能,解决复杂问题并推动科研进步。
94 0
|
5月前
|
存储 缓存 PyTorch
使用PyTorch从零构建Llama 3
本文将详细指导如何从零开始构建完整的Llama 3模型架构,并在自定义数据集上执行训练和推理。
92 1
|
6月前
|
机器学习/深度学习 PyTorch TensorFlow
TensorFlow和PyTorch的实际应用比较
TensorFlow和PyTorch的实际应用比较
122 1
|
6月前
|
机器学习/深度学习 分布式计算 PyTorch
构建可扩展的深度学习系统:PyTorch 与分布式计算
【8月更文第29天】随着数据量和模型复杂度的增加,单个GPU或CPU已无法满足大规模深度学习模型的训练需求。分布式计算提供了一种解决方案,能够有效地利用多台机器上的多个GPU进行并行训练,显著加快训练速度。本文将探讨如何使用PyTorch框架实现深度学习模型的分布式训练,并通过一个具体的示例展示整个过程。
288 0
|
6月前
|
机器学习/深度学习 数据采集 自然语言处理
PyTorch 在自然语言处理中的应用实践
【8月更文第29天】随着深度学习技术的发展,自然语言处理(NLP)领域取得了显著的进步。PyTorch 作为一款强大的深度学习框架,因其灵活性和易用性而被广泛采用。本文将介绍如何利用 PyTorch 构建文本分类模型,并以情感分析为例进行详细介绍。
89 0
|
6月前
|
机器学习/深度学习 PyTorch 测试技术
深度学习入门:使用 PyTorch 构建和训练你的第一个神经网络
【8月更文第29天】深度学习是机器学习的一个分支,它利用多层非线性处理单元(即神经网络)来解决复杂的模式识别问题。PyTorch 是一个强大的深度学习框架,它提供了灵活的 API 和动态计算图,非常适合初学者和研究者使用。
81 0
|
6月前
|
机器学习/深度学习 自然语言处理 PyTorch
PyTorch与Hugging Face Transformers:快速构建先进的NLP模型
【8月更文第27天】随着自然语言处理(NLP)技术的快速发展,深度学习模型已经成为了构建高质量NLP应用程序的关键。PyTorch 作为一种强大的深度学习框架,提供了灵活的 API 和高效的性能,非常适合于构建复杂的 NLP 模型。Hugging Face Transformers 库则是目前最流行的预训练模型库之一,它为 PyTorch 提供了大量的预训练模型和工具,极大地简化了模型训练和部署的过程。
374 2

推荐镜像

更多