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: 将指定进程中的张量数据分发到所有进程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/783298.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

门控循环单元(GRU)

概述 门控循环单元(Gated Recurrent Unit, GRU)由Junyoung Chung等人于2014年提出,原论文为《Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling》。GRU是循环神经网络(Recurrent Neural Network, …

实现富文本的三部曲

1、引入 ueditor.config.js ueditor.all.min.js lang/zh-cn/zh-cn.js 2、编辑器显示处 id"content" <textarea id"content" name"content"></textarea> 3、底部 <script type"text/javascript"> //实例化编辑器 …

2024.3.30学习笔记

今日学习韩顺平java0200_韩顺平Java_对象机制练习_哔哩哔哩_bilibili 今日学习p295-p314 super关键字 super代表父类的引用&#xff0c;用于访问父类的属性、方法、构造器 super细节和语法 访问父类的属性&#xff0c;但不能访问父类的private属性 super.属性名 访问父类的…

贵州华夏生态交易中心交易规则分享,助市场健康发展

近年来,生态产品交易市场的发展日益受到关注,生态产品交易活动你参与过吗?选择一个合规安全的交易平台对于生态产品交易商来说是是一个好的开端。贵州华夏生态交易中心是一个重要的生态产品交易平台,将贵州丰富的生态资源优势转化为产业优势和经济优势,充分发挥在生态产品流通…

回溯算法|39.组合总和

力扣题目链接 class Solution { private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& candidates, int target, int sum, int startIndex) {if (sum > target) {return;}if (sum target) {result.push_back…

Taskflow:异常处理(Exception Handling)

从运行的Taskflow中捕捉异常 当Task抛出异常时&#xff0c;执行器将以tf::Future句柄引用的共享状态存储该异常。 #include <taskflow/taskflow.hpp> void print_str(char const* str) {std::cout << str << std::endl; } int main() {tf::Executor execut…

Flutter(踩坑)之Android sdkmanager tool not found

D:\Flutter\flutter\bin\flutter.bat doctor --verbose [√] Flutter (Channel stable, v1.2.1, on Microsoft Windows [Version 10.0.22631.3296], locale zh-CN)• Flutter version 1.2.1 at D:\Flutter\flutter• Framework revision 8661d8aecd (5 years ago), 2019-02-14 …

力扣--101.分割等和子集

以下是题目&#xff1a; 给定一个非空的正整数数组 nums &#xff0c;请判断能否将这些数字分成元素和相等的两部分。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,11,5] 输出&#xff1a;true 解释&#xff1a;nums 可以分割成 [1, 5, 5] 和 [11] 。 示例 2&#xff1…

Android Selinux详解[八]--常用sepolicy函数和权限组说明

te_macros中的函数以及global_macros权限组是我们在加sepolicy策略或者读sepolicy策略时经常碰到的&#xff0c;我们需要对其有所了解。 一&#xff09;te_macros te_macros中有很多函数&#xff0c;比如domain_auto_trans, r_dir_file等等&#xff0c;见源码中定义的地方 t…

【C++航海王:追寻罗杰的编程之路】priority_queue(优先队列) | 容器适配器你知道哪些?

目录 1 -> priority_queue的介绍和使用 1.1 -> priority_queue的介绍 1.2 -> priority_queue的使用 1.3 -> priority_queue的模拟实现 2 -> 容器适配器 2.1 -> 什么是适配器 2.2 -> STL标准库中stack和queue的底层结构 2.3 -> deque的介绍 2.…

[python][whl]rknn_toolkit_lite2的whl版本下载地址汇总

rknn_toolkit_lite2-2.0.0b0-cp311-cp311-linux_aarch64.whl下载地址&#xff1a;https://download.csdn.net/download/FL1623863129/89061081 rknn_toolkit_lite2-2.0.0b0-cp39-cp39-linux_aarch64.whl下载地址&#xff1a;https://download.csdn.net/download/FL1623863129/8…

Flutter 全局控制底部导航栏和自定义导航栏的方法

1. 介绍 导航栏在移动应用中扮演着至关重要的角色&#xff0c;它是用户与应用之间进行导航和交互的核心组件之一。无论是简单的页面切换&#xff0c;还是复杂的应用导航&#xff0c;导航栏都能够帮助用户快速找到所需内容&#xff0c;提升用户体验和应用的易用性。 在移动应用…

Mamba: Linear-Time Sequence Modeling with Selective State Spaces(论文笔记)

What can I say? 2024年我还能说什么&#xff1f; Mamba out! 曼巴出来了&#xff01; 原文链接&#xff1a; [2312.00752] Mamba: Linear-Time Sequence Modeling with Selective State Spaces (arxiv.org) 原文笔记&#xff1a; What&#xff1a; Mamba: Linear-Time …

进程等待+替换

✨MyShell实现✨ c并发编程&#xff08;书籍&#xff09; ✨进程等待  ✨wait/waitpid   ✨代码示例  ✨coredump   ✨什么是coredump   ✨开启coredump功能   ✨示例代码   ✨退出码 ✨进程替换  ✨原理  ✨进程替换接口一览  ✨实现一个shell  ✨myshell反思…

单链表就地逆置

算法思想&#xff1a;构建一个带头结点的单链表L&#xff0c;然后访问链表中的每一个数据结点&#xff0c;将访问到的数据结点依此插入到L的头节点之后。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef s…

【学习】软件科技成果鉴定测试有何作用

软件科技成果鉴定测试是针对软件进行项目申报、科技成果鉴定等相关目的进行的测试。软件测试报告可作为项目申报、科技成果鉴定等工作的依据之一。软件类科技成果鉴定测试从软件文档、功能性、使用技术等方面对软件系统进行符合性测试。其测试结果证明软件的质量是否符合技术合…

智能指针(C++11)

智能指针的使用 问题 我们在平时写程序的时候&#xff0c;有些情况下不可避免地会遇见内存泄露的情况。内存泄露是指因为疏忽或错误&#xff0c;造成程序未能释放已经不再使用的内存的情况。例如下面这个例子&#xff0c;内存泄漏不易被察觉。 int div() {int a, b;cin >…

Vue tree自定义滚动条位置

贴一张效果图&#xff0c;我的效果不方便贴出来 实现支持&#xff1a; 1、懒加载 2、普通加载 下面贴关键思想&#xff1a; document有一个获取element元素的方法。 let element document.getElementById(tree); let arr document.querySelectorAll(".nodelModel&quo…

【JDK常用的API】包装类

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏 …

使用 SQLite数据库,磁盘数据库,也叫本地数据库

建库与表 1查看 2删除 3修改 4增加 建立 # 只运行一次&#xff0c;建立库与表。 import sqlite3 import os import sysif os.path.exists(abc.db):print(abc.db已经存在&#xff0c;不需要再建立)sys.exit(1)conn sqlite3.connect(abc.db) curs conn.cursor() curs.execute(&…