觉之瞳专题:PyTorch API接口综述(v1.0解析方法)

38 阅读6分钟

关于本系列文章的相关声明

创作声明

本系列的内容创作分为如下三个部分:

  1. 个人阅读文档之后的理解
  2. 对原文档的部分翻译
  3. 无关紧要部分的AI辅助创作
  4. 部分相关信息的引用及二次创作

本系列的图片来自于:

  1. PPT图形制作
  2. 幕布思维导图工具
  3. AI绘画辅助创作
  4. 网络(如侵权,请联系作者删除)

在此向人类艺术家与一切内容创作者,AI科学家与工程师,程序员团体致以最崇高的敬意。

费曼学习法声明

费曼学习法(Feynman Technique)是一种通过将所学知识用简单明了的语言解释给别人听来加深自己的理解和记忆的学习方法。这种方法最初由物理学家理查德·费曼(Richard Feynman)提出。

费曼学习法的基本思想是:将所学知识用自己的语言表达出来,以便理解、记忆和应用。

瞳君通过边学边创作的方式,将所学知识用简单明了的语言解释给大家,以加深自己的理解和记忆。由于个人理解的局限性,创作内容可能存在错误,欢迎各位专家批评指正。

实验&创作就是失败,失败就是学习,学习就是进步。

原创声明

本系列下的文章引用皆包含出处,未包含出处的皆为瞳君原创 @搞知识的觉之瞳遵循相应平台的相关协议进行分发。如需转载,请根据相关平台的内容规定进行转载。

动动手指点击关注,这是免费的,而且你也可以随时改变主意,享受你的阅读吧!

It's free and you can always change your mind, enjoy your reading!

PyTorch辣么大,我怎么解析?

首先让我们来看看PyTorch的API文档列表。。。。。。

image.png

image.png

你确定这些你都要解析吗?

回顾:API 提供了一组预定义的方法、函数、协议和数据结构,用于实现特定的操作、访问数据或执行特定的功能。

换而言之:API的解析是实现特定的操作、访问数据或执行特定的功能的提供者的解析。

换而言之:API的解析目的是分析实现特定的操作、访问数据或执行特定的功能的提供者如何实现特定的操作、访问数据或执行特定的功能

换而言之:API的解析归根到底是分析——功能是如何实现的

也就是说,只要咱们把功能厘清了,API就分析得差不多了。

如果功能如何实现的都清楚了,源码(对于用户而言)又有什么用呢?

换句话,如果钟表走的很好,你还会闲着无聊把它拆了吗?

所以,我们需要的,不是把下面这玩意大卸八块。

image.png

而应该是从需求的角度出发,分析PyTorch的主要功能究竟是如何实现的。

毕竟,对于用户(尽管用户也是程序员)而言,底层无关紧要,我只关注想要的功能及其性能。

那么,接下来我们需要做的事就很简单了:

  1. PyTorch有哪些功能?
  2. PyTorch XX功能是通过什么实现的?基于哪些API?
  3. 对API进行浅层分析。

同时,这些搞完了,瞳君也差不多学完PyTorch(的应用)了。

那么,本文先解决第一个问题:

PyTorch有哪些功能?

关于PyTorch有哪些功能?这个肯定大佬更具一筹了。瞳君只是PyTorch小萌新。。。

但是!

PYTORCH DOCUMENTATION(PyTorch文档)是PyTorch大爹写的呀!

所以,我们要将该文档的首页(index)的分类理清楚,然后总结其具体功能。

然后,PyTorch的功能便不言而喻了。

image.png

那么现在先整理一下PyTorch的相关功能:

1.png

在API那的功能还是太多了,于是乎我们需要将功能进一步进行压缩:

大体来讲也就如下几种功能:

  • 社区治理体系(划掉不看)
  • 数据/数据集/模型加载与保存
  • 算子搭建
  • 算子训练
  • 计算平台处理
  • 调试模块
  • 算子部署

再细分,划分为需要解决的问题(这里我们假设我们对于PyTorch一无所知

Ia! Ia! N'gai, n'yah, n-yah, shoggog, phfaghn!

  • 数据/数据集/模型加载与保存

    • 数据在PyTorch中是什么? 作用是什么?
    • 数据集在PyTorch中是什么? 作用是什么?
    • 模型在PyTorch中是什么? 作用是什么?
    • 如何加载及保存数据:PyTorch序列化(不准写)
    • 数据如何预处理与特征工程?
    • 模型如何下载与加载?
    • 模型如何保存?
  • 算子搭建

    • 算子搭建的一般步骤是?

    • 算子在PyTorch中是什么?作用是什么?

    • 有哪些算子?分哪些用途?

      • 有哪些神经网络层算子?
      • 有哪些损失函数算子?
      • 有哪些优化器算子?
      • 有哪些其它算子?作用是什么?
    • 算子如何搭建?

    • 算子与模型的关系是什么?

  • 算子训练

    • 算子训练的一般步骤是?
    • 算子具体是如何训练的?
  • 计算平台处理与并行计算?

    • 什么是计算平台?
    • 计算平台在PyTorch中是什么?作用是什么?
    • 计算平台如何与算子训练进行互动?(通过计算平台加速算子训练的一般流程是什么?)
    • 什么是并行计算?
    • 并行计算在PyTorch中是什么?作用是什么?
    • 并行计算如何与算子训练进行互动?(通过并行计算加速算子训练的一般流程是什么?)
    • 计算平台如何与算子部署进行互动?(通过计算平台加速算子部署的一般流程是什么?)
    • 并行计算如何与算子部署进行互动?(通过并行计算加速算子部署的一般流程是什么?)
  • 调试模块

    • 调试模块在PyTorch中到底是什么?作用是什么
    • 调试模块有哪些功能?
  • 算子压缩

    • 算子压缩在PyTorch是什么?作用是什么?

    • 算子压缩的一般流程什么?

    • 算子压缩有哪些类型?

      • 算子量化在PyTorch中是什么?作用是什么?
      • 算子量化的一般流程是什么?
      • 算子量化有哪些方法?
  • 算子部署

    • 算子部署在PyTorch是什么?作用是什么?
    • 算子部署的一般流程是什么?
    • 算子部署有哪些类型?

那么,目前我们的问题解决如下:

  1. PyTorch有哪些功能? (寄)
  2. PyTorch XX功能是通过什么实现的?基于哪些API?(准备处理)
  3. 对API进行浅层分析。(并行处理)

同时多了上述的子问题。

那么,我们将在下期解决这些问题(的一部分)。