IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> pytorch的主要模块 -> 正文阅读

[人工智能]pytorch的主要模块

01 torch模块

激活函数

  • Sigmoid (torch.sigmoid)
  • ReLU (torch.relu)
  • Tanh (torch.tanh)

张量

  • 矩阵的乘法 (torch.mm)
  • 张量元素的选择 (torch.select)

能够产生一定形状的张量

  • torch.zeros产生元素全为0的张量
  • torch.randn产生元素服从标准正态分布的张量

02 torch.Tensor模块

torch.Tensor模块定义了torch中的张量类型,其中的张量有不同的数值类型,如单精度、双精度浮点、整数类型等,而且张量有一定的维数和形状。


同时,张量的类中也包含着一系列的方法,返回新的张量或者更改当前的张量

这里需要提到一一点,如果张量的某个类方法会返回张量,按照PyTorch中
的命名规则,如果张量方法后缀带下画线,则该方法会修改张量本身的数据,反之则会返回新的张量

比如,

  • Tensor.add方法会让当前张量和输入参数张量做加法,返回新的张量,
  • Tensor.add_ 方法会改变当前张量的值,新的值为旧的值和输入参数之和。

torch.Storage则负责torch.Tensor底层的数据存储,即前面提到的为一个张量 分配连续的一维内存地址(用于存储相同类型的一系列元素,数目则为张量的总元素数目)。

03 torch.sparse模块

定义稀疏张量

04 torch.cuda模块

定义了与cuda运算相关的一系列函数,如

  • 检查系统的CUDA是否可用,
  • 当前进程对应的GPU序号(在多GPU情况下),
  • 清除GPU上的缓存,
  • 设置GPU的计算流( Stream) ,
  • 同步GPU上执行的所有核函数(Kernel)等。

05 torch.nn模块

是PyTorch神经网络模块化的核心。这个模块定义了一系列模块,包括:

  • 卷积层nn.ConvNd (N=1, 2,3)
  • 线性层(全连接层)nn.Linear

torch.nn中也定 义了一系列的损失函数,包括:

  • 平方损失函数( torch.nn.MSELoss )
  • 交叉熵损失函数( torch.nn.CrossEntropyLoss)

一般来说,torch.nn 里定义的神经网络模块都含有参数,可以对这些参数使用优化器进行训练。


当构建深度学习模型的时候,可以通过继承nn.Module类并重写forward方法来实现一个新的神经网络。

06 torch.nn.function模块

torch.nn.functional是PyTorch的函数模块,定义了一些核神经网络相关的函数,包括卷积函数池化函数等。

torch.nn中定义的模块一般会调用torch.nn.functional里的函数,比如:

  • nn.ConvNd模块 (N=1, 2,3)会调用torch.nn.functional.convNd函数
    (N=1,2,3)。

torch.nn.functional里面还定义了一些不常用的激活函数,包括

  • torch.nn.functional.relu6
  • torch.nn.functional.elu

07 torch.nn.init模块

定义了神经网络权重的初始化。

如果初始的神经网络权重取值不合适,就会导致后续的优化过程收敛很慢。

这个模块中的函数就是为了解决神经网络权重的初始化问题,其中使用了很多初始化方法,包括

  • 均匀初始化torch.nn.init.uniform_
  • 正态分布归一化torch.nn.init.normal

在PyTorch中函数或者方法如果以下画线结尾,则这个方法会直接改变作用张量的值。
因此,这些方法会直接改变传入张量的值,同时会返回改变后的张量。

07 torch.optim模块

torch.optim模块定义了一系列的优化器,如:

  • torch.optim.SGD (随机梯度下降算法)
  • torch.optim.Adagrad(AdaGrad算法)
  • torch.optim.RMSprop ( RMSProp 算法)
  • torch.optim.Adam (Adam算法)

还包含学习率衰减的算法的子模块,即torch.optim.lr_ scheduler, 这个子模块中包含了一些学习率衰减算法如:

  • 学习率阶梯下降算法torch.optim.lr_ scheduler .StepLR
  • 余弦退火算法torch.optim.lr_ scheduler.CosineAnnealingLR等。

09 torch.autograd模块

是PyTorch的自动微分算法模块

定义了一系列的自动微分函数,包括:

  • torch.autograd.backward函数, 主要用于在求得损失函数之后进行反向梯度传播,
  • torch.autograd.grad函 数用于一个标量张量(即只有一个分量的张量)对另一个张量求导,以及在代码中设置不参与求导的部分。

另外,这个模块还内置了数值梯度功能和检查自动微分引擎是否输出正确结果的功能。

10 torch.distributed模块

分布计算模块

11 torch.distributions模块

提供了一系列类,使得PyTorch能够对不同的分布进行采样,并且生成概率采样过程的计算图。
常应用于强化学习中

12 torch.hub模块

torch.hub提供了一系列预训练的模型供用户使用。

比如,

  • 可以通过torch.hub.list函数来获取某个模型镜像站点的模型信息。
  • 通过torch.hub.load来 载入预训练的模型,载入后的模型可以保存到本地,并可以看到这些模型对应类支持的方法
  • 更多torch.hub支持的模型可以参考PyTorch官网中的相关页面。

13 torch.jit模块

是PyTorch的即时编译器( Just-In-Time Compiler, JIT)模块。

这个模块存在的意义是把PyTorch的动态图转换成可以优化和序列化的静态图。

14 torch.multiprocessing模块

定义了PyTorch中的多进程API

15 torch.random模块

torch.random提供了一系列的方法来保存和设置随机数生成器的状态,包括:

  • get_rng_state函数获取当前随机数生成器状态
  • set_rng_state函数设置 当前随机数生成器状态,
  • manual _seed 函数来设置随机种子
  • initial_ seed函数来得到程序初始的随机种子。

因为神经网络的训练是一个随机的过程,包括数据的输入、权重的初始化都具有一定的随机性设置一个统一的随机种子可以有效地帮助我们测试不同结构神经网络的表现,有助于调试神经网络的结构。

16 torch.onnx模块

定义了PyTorch导出和载入ONNX格式的深度学习模型描述文件

17 一些PyTorch的辅助工具模块

torch.utils提供了一系列的工具来帮助神经网络的训练、测试和结构优化。
这个模块主要包含以下6个子模块:

  • torch.utils.bottleneck模块:可以用来检查深度学习模型中模块的运行时间,从而可以找到导致性能瓶颈的那些模块,通过优化那些模块的运行时间,从而优化整个深度学习模型的性能。
  • torch.utils.checkpoint模块:可以用来节约深度学习使用的内存。通过前面的介绍我们知道,因为要进行梯度反向传播,在构建计算图的时候需要保存中间的数据,而这些数据大大增加了深度学习的内存消耗。为了减少内存消耗,让迷你批次的大小得到提高,从而提升深度学习模型的性能和优化时的稳定性,我们可以通过这个模块记录中间数据的计算过程,然后丢弃这些中间数据,等需要用到的时候再重新计算这些数据。这个模块设计的核心思想是以计算时间换内存空间,当使用得当的时候,深度学习模型的性能可以有很大的提升。
  • torch.utils.cpp_ extension模块:定义了PyTorch的C++扩展,其主要包含两个类:CppExtension定义了使用C++来编写的扩展模块的源代码相关信息,CUDAExtension则定义了C++/CUDA编写的扩展模块的源代码相关信息。在某些情况下,用户可能需要使用C++实现某些张量运算和神经网络结构(比如PyTorch没有类似功能的模块或者PvTorch类似功能的模块性能比较低),PvTorch的C++扩展模块就提供了一个方法能够让Python来调用使用C++/CUDA编写的深度学习扩展模块。在底层上,这个扩展模块使用了pybind11,保持了接口的轻量性并使得PyTorch易于被扩展。在后续章节会介绍如何使用C++/CUDA来编写PyTorch的扩展。
  • torch.utils.data模块:引入了数据集(Dataset) 和数据载入器( DataLoader)的概念,前者代表包含了所有数据的数据集,通过索引能够得到某一条特定的数据,后者通过对数据集的包装,可以对数据集进行随机排列( Shuffle) 和采样(Sample),得到一系列打乱数据顺序的迷你批次。
  • torch.utils.dlpacl模块:定义了PyTorch张量和DLPack张量存储格式之间的转换,用于不同框架之间张量数据的交换。
  • torch.utils.tensorboard模块:是PyTorch对TensorBoard数据可视化工具的支持。TensorBoard原来是TensorFlow自带的数据可视化工具,能够显示深度学习模型在训练过程中损失函数、张量权重的直方图,以及模型训练过程中输出的文本、图像和视频等。TensorBoard的功能 非常强大,而且是基于可交互的动态网页设计的,使用者可以通过预先提供的一系列功能来输出特定的训练过程的细节(如某一神经网络层的权重的直方图,以及训练过程中某- . 段时间的损失函数等)。PyTorch支持TensorBoard可视化之后,在PyTorch的训练过程中,可以很方便地观察中间输出的张量,也可以方便地调试深度学习模型。
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-02 11:21:53  更:2021-09-02 11:22:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 16:52:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码