前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pytorch的API总览

Pytorch的API总览

作者头像
狼啸风云
修改2022-09-03 21:20:44
2.6K0
修改2022-09-03 21:20:44
举报

torch包包含多维张量的数据结构,并定义了多维张量的数学运算。此外,它还提供了许多实用程序来高效地序列化张量和任意类型,以及其他有用的实用程序。它有一个CUDA的副本,可以让你运行你的张量计算在一个NVIDIA GPU,并且计算能力>= 3.0。

定义实现神经网络的各种函数。

定义实现神经网络的各种函数。

用于生成新的张量。

张量的属性。

torch.autograd提供实现任意标量值函数的自动微分的类和函数。它只需要对现有代码进行最小的修改—您只需要声明张量s,使用requires_grad=True关键字来计算它的梯度。

这个包增加了对CUDA张量类型的支持,它实现了与CPU张量相同的功能,但是它们利用gpu进行计算。

torch.distributed支持三个后端,每个后端具有不同的功能。下表显示了哪些函数可用于CPU / CUDA张量。

分布包包含可参数化的概率分布和抽样函数。这允许构造随机计算图和随机梯度估计器进行优化。这个包通常遵循TensorFlow分布包的设计。不可能直接通过随机样本进行反向传播。但是,有两种主要的方法可以创建可以反向传播的代理函数。这些是分数函数估计量/似然比估计量/增强量和路径导数估计量。摘要在强化学习中,强化常被视为策略梯度方法的基础,而在变分自编码器的重参数化技巧中,路径导数估计常被视为参数。而score函数只需要样本f(x)的值,而pathwise导数需要导数f ' (x)。下一节将在一个强化学习示例中讨论这两个问题。

Pytorch Hub是一个预训练模型库,旨在促进研究的重现性。

TorchScript是一种从PyTorch代码创建可序列化和可优化模型的方法。任何TorchScript程序都可以从Python进程中保存并加载到没有Python依赖项的进程中。我们提供了一些工具来增量地将模型从纯Python程序转换为能够独立于Python运行的TorchScript程序,例如在独立的c++程序中。这样就可以使用熟悉的Python工具在PyTorch中培训模型,然后通过TorchScript将模型导出到生产环境中,在这种环境中,Python程序可能会处于不利地位。由于性能和多线程的原因。

神经网络的张量初始化。

Open Neural Network Exchange (ONNX)是开放生态系统的第一步,它使人工智能开发人员可以在项目的发展过程中选择合适的工具;ONNX为AI models提供了一种开源格式。它定义了一个可以扩展的计算图模型,同时也定义了内置操作符和标准数据类型。最初我们关注的是推理(评估)所需的能力。

torch.optim是一个实现各种优化算法的包。最常用的方法已经得到了支持,而且接口足够通用,因此将来可以轻松集成更复杂的方法。

量化是指在比浮点精度低的位宽下执行计算和存储张量的技术。量化模型对带有整数而不是浮点值的张量执行部分或全部操作。这允许在许多硬件平台上使用更紧凑的模型表示和高性能向量化操作。与典型的FP32模型相比,PyTorch支持INT8量化,因此可以减少4倍的模型大小和4倍的内存带宽需求。对INT8计算的硬件支持通常比FP32计算快2到4倍。量化主要是一种加速推理的技术,对于量化操作符只支持前向传递。PyTorch支持多种方法来量化深度学习模型。在大多数情况下,模型在FP32中进行训练,然后将模型转换为INT8。此外,PyTorch还支持量化感知训练,该训练使用伪量化模块对前向和后向传递中的量化错误进行建模。注意,整个计算都是在浮点数中进行的。在量化感知训练的最后,PyTorch提供了转换函数,将训练后的模型转换为较低精度的模型。在底层,PyTorch提供了一种表示量子化张量的方法,并使用它们执行操作。它们可以用来直接构建模型,以较低的精度执行全部或部分计算。提供了更高级别的api,它们结合了将FP32模型转换为较低精度且精度损失最小的典型工作流。

伪随机数发生器。

Torch支持COO(rdinate)格式的稀疏张量,它可以有效地存储和处理大多数元素为零的张量。

一个torch.Storage是单个数据类型的连续一维数组。

torch.utils.bottleneck是一种工具,可以用作调试程序瓶颈的初始步骤。它总结了使用Python分析器和PyTorch的autograd分析器运行脚本的情况。

检查点是通过在向后期间为每个检查点段重新运行前向段来实现的。这可能导致像RNG状态这样的持久状态比没有检查点的状态更高级。默认情况下,检查点包括调整RNG状态的逻辑,这样通过使用RNG(例如通过dropout)的检查点通过与非检查点通过相比具有确定的输出。根据检查点操作的运行时间,隐藏和恢复RNG状态的逻辑可能导致适度的性能下降。如果不需要与非检查点传递相比较的确定性输出,则为检查点或checkpoint_sequential提供preserve_rng_state=False,以便在每个检查点期间省略存储和恢复RNG状态。隐藏逻辑保存并恢复当前设备和所有cuda张量参数到run_fn的设备的RNG状态。但是,逻辑无法预测用户是否将张量移动到run_fn本身中的新设备。因此,如果在run_fn中将张量移动到一个新设备(“新”意味着不属于[当前设备+张量参数的设备]的集合)中,与非检查点遍历相比,确定性输出永远无法得到保证。

C++扩展库。

PyTorch数据加载实用程序的核心是torch.utils.data。DataLoader类。它表示在数据集上可迭代的Python,支持映射样式和迭代样式的数据集,自定义数据加载顺序,自动批量化,单进程和多进程数据加载,自动记忆锁住。这些选项是由DataLoader的构造函数参数配置的,它具有信号:

DataLoader(dataset, batch_size=1, shuffle=False, sampler=None,batch_sampler = None, num_workers = 0, collate_fn =None,pin_memory = False, drop_last = False,timeout= 0,worker_init_fn =None)

将DLPack解码成Tensor张量。

在给定的URL加载torch序列化对象。

安装了TensorBoard之后,这些实用程序允许您将PyTorch模型和指标记录到TensorBoard UI中的一个目录中,以便进行可视化。对于PyTorch模型和张量以及咖啡因2网络和blobs,都支持标量、图像、直方图、图形和嵌入可视化。

torch的数值特性。可以通过任何一个torch访问dtype.finfo或torch.iinfo。

命名张量的目的是通过允许用户将显式名称与张量维相关联来简化张量的使用。在大多数情况下,带有维度参数的操作将接受维度名称,从而避免了根据位置跟踪维度的需要。此外,命名张量使用名称来自动检查api在运行时是否被正确使用,从而提供了额外的安全性。名称还可以用来重新安排维度,例如支持“按名称广播”而不是“按位置广播”。

请先阅读命名张量的介绍。这个文档是一个命名推断的参考,这个过程定义了如何命名张量:

使用名称来提供额外的自动运行时正确性检查

将名称从输入张量传播到输出张量

下面是由命名张量及其关联的名称推理规则支持的所有操作的列表。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档