当前位置:   article > 正文

pytorch常用的模块函数汇总(2)

pytorch常用的模块函数汇总(2)

目录

torch.utils.data:数据加载和处理模块,包括 Dataset 和 DataLoader 等工具,用于加载和处理训练数据。

torchvision:计算机视觉模块,提供了图像数据集、转换函数、预训练模型等,用于计算机视觉任务。

torchtext:自然语言处理模块,包含了文本数据集、文本处理工具等,用于自然语言处理任务。

torch.nn.functional:函数式接口模块,包含了一些函数式的操作,如激活函数、池化函数、卷积函数等。

torch.nn.init:参数初始化模块,用于初始化神经网络的参数。

torch.optim.lr_scheduler:学习率调度器模块,用于动态调整学习率。

torch.utils:实用工具模块,包含了模型保存和加载、学习率调整等实用工具。

torch.distributed:分布式计算模块,提供了用于分布式计算的支持。


  • torch.utils.data:数据加载和处理模块,包括 Dataset 和 DataLoader 等工具,用于加载和处理训练数据。

  • torch.utils.data.Dataset是一个抽象类,代表数据集。为了自定义数据集,我们可以创建一个继承自Dataset的子类,并实现__len____getitem__方法,以便能够按索引获取数据集中的样本。

  • torch.utils.data.DataLoader是一个用于批量加载数据的工具。它接收一个Dataset对象作为输入,然后在训练过程中按照指定的批量大小和顺序加载数据,并可选择是否进行数据打乱等操作。

  • torch.utils.data.random_split(dataset, lengths)函数用于将一个数据集按照给定的长度随机分割成多个子数据集。这在划分训练集和验证集时很有用。

  • torch.utils.data.Subset类表示原始数据集的一个子集,可以通过传入索引列表来创建。

  • torch.utils.data.TensorDataset是一个将张量作为数据集的类,通常用于将特征张量和标签张量进行配对。

  • torch.utils.data.ConcatDataset类允许将多个数据集串联起来,以便联合使用多个数据集的样本。

  • torch.utils.data.Sampler类用于指定样本抽样的策略,如随机抽样、有放回抽样、无放回抽样等。

  • torchvision:计算机视觉模块,提供了图像数据集、转换函数、预训练模型等,用于计算机视觉任务。

  • transforms 模块

    • transforms.Compose(transforms):将多个图像变换组合在一起。
    • transforms.ToTensor():将 PIL 图像或 ndarray 转换为张量。
    • transforms.Normalize(mean, std):对张量进行归一化。
    • transforms.Resize(size):调整图像尺寸。
    • transforms.CenterCrop(size):对图像进行中心裁剪。
    • transforms.RandomHorizontalFlip():随机水平翻转图像。
    • transforms.RandomRotation(degrees):随机旋转图像。
  • datasets 模块

    • datasets.ImageFolder(root, transform):加载包含图像的文件夹数据集,可以自动根据文件夹名称进行分类。
    • datasets.CIFAR10(root, train=True, transform=None, target_transform=None, download=False):加载 CIFAR-10 数据集。
    • datasets.CIFAR100(root, train=True, transform=None, target_transform=None, download=False):加载 CIFAR-100 数据集。
    • datasets.MNIST(root, train=True, transform=None, target_transform=None, download=False):加载 MNIST 数据集。
    • datasets.VOCDetection(root, year='2012', image_set='train', transform=None, target_transform=None, download=False):加载 VOC 数据集。
  • models 模块

    • 预训练的图像分类模型:models.resnet18(pretrained=True)models.resnet50(pretrained=True) 等。
    • 预训练的目标检测模型:models.detection.fasterrcnn_resnet50_fpn(pretrained=True)models.detection.maskrcnn_resnet50_fpn(pretrained=True) 等。
  • utils 模块

    • utils.make_grid(tensor, nrow=8, padding=2, normalize=False, range=None, scale_each=False, pad_value=0):将张量转换为图像网格显示。
    • utils.save_image(tensor, filename, nrow=8, padding=2, normalize=False, range=None, scale_each=False, pad_value=0):保存张量为图像文件。
    • 这些函数和类使得我们能够方便地处理图像数据,加载常用的数据集,构建图像处理流水线,以及使用预训练的模型进行图像分类、目标检测等任务。
  • torchtext:自然语言处理模块,包含了文本数据集、文本处理工具等,用于自然语言处理任务

  • data 模块

    • data.Field:定义文本字段的处理规则,如分词方法、是否转换为小写等。
    • data.TabularDataset.splits:加载文本数据集并进行划分。
    • data.Iterator:生成数据迭代器,用于模型训练。
    • data.Example:表示一个样本,包含字段和对应的数值。
  • datasets 模块

    • datasets.LanguageModelingDataset:用于语言建模任务的数据集。
    • datasets.SequenceTaggingDataset:用于序列标注任务的数据集。
    • datasets.TranslationDataset:用于机器翻译任务的数据集。
  • vocab 模块

    • vocab.Vocab:构建词汇表对象,包含词汇表的词汇和索引映射关系。
    • vocab.GloVe:加载预训练的 GloVe 词向量。
  • utils 模块

    • utils.get_tokenizer:获取用于分词的 tokenizer。
    • utils.ngrams_iterator:生成 n 元组(n-grams)的迭代器。
  • experimental 模块

    • experimental.datasets.SNLI:加载斯坦福自然语言推断数据集。
    • experimental.datasets.IMDB:加载 IMDB 电影评论情感分类数据集。
  • 通过使用这些函数和类,我们可以方便地处理文本数据,并将其转换为模型可接受的格式,从而进行文本相关的任务,如文本分类、序列标注、机器翻译等。 torchtext 的功能丰富且易于使用,能够加速文本数据处理流程。

  • torch.nn.functional:函数式接口模块,包含了一些函数式的操作,如激活函数、池化函数、卷积函数等

  1. 激活函数

    • torch.nn.functional.relu(input, inplace=False):ReLU(修正线性单元)激活函数。
    • torch.nn.functional.sigmoid(input):Sigmoid 激活函数。
    • torch.nn.functional.tanh(input):双曲正切激活函数。
    • torch.nn.functional.softmax(input, dim=None):Softmax 激活函数。
  2. 池化函数

    • torch.nn.functional.max_pool2d(input, kernel_size, stride=None, padding=0, dilation=1, ceil_mode=False):二维最大池化。
    • torch.nn.functional.avg_pool2d(input, kernel_size, stride=None, padding=0, ceil_mode=False, count_include_pad=True):二维平均池化。
  3. 损失函数

    • torch.nn.functional.cross_entropy(input, target):交叉熵损失函数。
    • torch.nn.functional.mse_loss(input, target):均方误差损失函数。
  4. 卷积函数

    • torch.nn.functional.conv2d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1):二维卷积操作。
    • torch.nn.functional.conv_transpose2d(input, weight, bias=None, stride=1, padding=0, output_padding=0, groups=1, dilation=1):二维转置卷积操作(反卷积)。

      反卷积主要作用如下:上采样:反卷积可以用来实现上采样操作,将输入特征图的尺寸放大,从而恢复到更高分辨率的特征图。这在一些任务中非常有用,比如图像分割、图像生成等。特征映射还原:在某些情况下,我们需要将经过卷积降维的特征图还原到原始输入的尺寸,反卷积可以帮助我们实现这一目的,从而保留更多的空间信息。重建输入:反卷积可以用于重建输入信号,尤其在一些自编码器、生成对抗网络(GAN)等模型中,可以通过反卷积层来重建生成的图像或信号。网络可视化:在神经网络可视化中,我们常常会使用反卷积来可视化卷积神经网络中各个层的特征激活图,帮助理解网络学到的特征。

  5. 归一化函数

    • torch.nn.functional.batch_norm(input, running_mean, running_var, weight=None, bias=None, training=False, momentum=0.1, eps=1e-5):批量归一化操作。批量归一化的基本思想是对每个特征维度的数据进行归一化处理,使其均值接近0,方差接近1,然后再通过缩放和平移参数(γ 和 β)来恢复网络的表示能力。加速收敛; 控制过拟合; 提高泛化能力。
    • torch.nn.functional.layer_norm(input, normalized_shape, weight=None, bias=None, eps=1e-5):层归一化操作。与批量归一化不同,层归一化是针对每个样本的所有特征进行归一化处理,而不是像批量归一化一样对每个特征维度在 mini-batch 上进行归一化。
  6. 其他常用函数

    • torch.nn.functional.dropout(input, p=0.5, training=True, inplace=False):随机丢弃操作。
    • torch.nn.functional.embedding(input, weight, padding_idx=None, max_norm=None, norm_type=2.0):嵌入层操作。

  • torch.nn.init:参数初始化模块,用于初始化神经网络的参数

torch.nn.init.xavier_uniform_: 使用 Xavier 均匀分布初始化权重。

torch.nn.init.xavier_normal_: 使用 Xavier 正态分布初始化权重。

torch.nn.init.kaiming_uniform_: 使用 Kaiming 均匀分布初始化权重。

torch.nn.init.kaiming_normal_: 使用 Kaiming 正态分布初始化权重。

torch.nn.init.uniform_: 使用均匀分布初始化张量。

torch.nn.init.normal_: 使用正态分布初始化张量。

torch.nn.init.constant_: 使用常数初始化张量。

备注:

Xavier 初始化的核心思想是根据网络的输入与输出的尺度,合理地初始化权重,使得每一层的输出方差尽量保持不变。具体来说,对于一个全连接层或卷积层的权重矩阵 ( W ),Xavier 初始化将权重初始化为从均匀或正态分布中采样的值。

  • torch.optim.lr_scheduler:学习率调度器模块,用于动态调整学习率

StepLR: 根据给定的步长调整学习率。

MultiStepLR: 在指定的 epochs 处调整学习率。

ExponentialLR: 使用指数衰减调整学习率。

ReduceLROnPlateau: 当某个指标不再变化时,减小学习率。

CosineAnnealingLR: 使用余弦退火调整学习率。

  • torch.utils:实用工具模块,包含了模型保存和加载、学习率调整等实用工具

  1. data: 数据处理相关的工具函数和数据集类。

  2. data.dataloader: 数据加载器,用于批量加载数据并提供数据增强功能。

  3. data.dataset: 数据集抽象类,用于自定义数据集。

  4. model_zoo: 包含预训练模型的存储库,可以加载预训练的模型参数。

  5. utils.clip_grad_norm_: 对模型梯度进行裁剪,防止梯度爆炸。

  6. utils.data: 提供数据集、数据加载器等数据处理相关的函数。

  7. utils.make_grid: 将多张图片拼接成一个网格形式的图片显示。

  8. utils.parameters_to_vector, utils.vector_to_parameters: 将模型参数转换为向量、将向量转换回模型参数。

  9. utils.save_checkpoint, utils.load_checkpoint: 保存和加载模型检查点。

  • torch.distributed:分布式计算模块,提供了用于分布式计算的支持

通过这些函数,可以方便地在多个设备或多台机器上进行模型训练,并实现数据并行、模型并行等分布式训练策略。

init_process_group: 初始化分布式环境,并设置通信后端。

is_initialized: 检查当前进程是否已经初始化了分布式环境。

get_rank: 获取当前进程的全局排名。

get_world_size: 获取参与训练的总进程数。

broadcast: 在所有进程之间广播张量数据。

reduce: 在所有进程中对张量数据进行归约操作。

all_reduce: 对所有进程中的张量数据进行全局归约操作。

gather: 收集所有进程中的张量数据到指定进程。

scatter: 将指定进程中的张量数据分发到所有进程。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/345681
推荐阅读
相关标签
  

闽ICP备14008679号