• PyTorch源码学习系列 - 2. Tensor


    本系列文章会优先发布于微信公众号和知乎专栏,欢迎大家关注

    微信公众号:小飞怪兽屋

    知乎:  PyTorch源码学习 - 知乎 (zhihu.com)


    目录

    前言

    Tensor是什么?

    Tensor如何存储?

    PyTorch眼中的Tensor

    Tensor的创建过程

    Tensor的函数与方法


    前言

    如果有人问我刚开始接触PyTorch该从何处学起时,我的回答一定不会是举世瞩目,让人惊叹不已的神经网络(NN, Neural Network),也不会是不明觉厉,精巧设计的梯度自动求导系统(Autograd),反而恰恰是平淡无奇,却无处不在的张量(Tensor)。正如所有人学习编程所做的第一件事情就是在控制台输出“Hello World”一样,Tensor就是PyTorch的“Hello World” ,每一位初学者在接触PyTorch时所做的第一件事就是用torch.tensor函数创建一个属于自己的Tensor。

    1. import torch
    2. torch.tensor([1,2,3])

    当我们写下上面这段代码的时候,我们就已经开始走进PyTorch的宏观世界,我们利用PyTorch提供的函数创建了一个Tensor对象。但是,不知你们是否曾好奇过Tensor是如何创建的,是否曾想过Tesnor是如何存储的,是否曾探究过Tensor是如何设计的 ?今天,就让我们深入研究上面这段代码,一起走入Tensor的微观世界。

    Tensor是什么?

    在深入研究之前让我们先来简单回顾下Tensor是什么?从数学角度上来说,Tensor本质上是一个多维向量。在数学里,一个数我们称之为标量,一维数据我们称之为向量,二维数据我们称之为矩阵,到三维及更高维度的时候,我们并没有为每一个维度数据都提供一个专有名称,我们将这些包含维度信息的数据统称为张量(Tensor)。

    Tensor

    从图上可以看出,标量就是0维的Tensor,向量是1维的Tesnor,矩阵是二维的Tensor。在介绍Tensor的时候我们引入一个叫做维度的抽象概念,维度本质上是衡量事物的一种方式。比如时间就是一种维度,假如我们在网上卖东西,每天晚上都要汇总今天的销售额,我们就可以得到销售额相对于时间的关系,这里销售额就是基于时间的一维Tensor。当我们觉得销售额不仅仅和时间有关系,可能还和当天的客户访问量有关系,我们就又引入了一种维度,可以得到销售额与(时间,访问量)之间的关系,我们就建立一个二维的Tensor。Tensor就是用来表示这种多维数据的一种抽象概念,在不同的场景下具有不同的物理含义。在空间上,它是表示长宽高的三维tensor;在RGB颜色上,它是表示红绿蓝的三维Tensor;在语音通话中,它是表示时间与语音信息的二维Tensor。

    Tensor如何存储?

    当我们了解了Tensor的概念后,那该如何在计算机中存储包含多维信息的Tensor呢?当程序在计算机中运行时,我们需要将程序代码,程序运行需要的数据以及程序运行过程中生成的数据加载到内存中,所以我们可以得出一个结论,存储Tensor的物理媒介是内存(GPU上是显存),内存是一块可供寻址的存

  • 相关阅读:
    JMETER与BeanShell
    OPENSQL
    动态内存管理(malloc free calloc realloc)
    【机器学习】038_梯度消失、梯度爆炸
    【无标题】
    【Sql】MVCC有关问题,以及锁,日志和主从复制原理
    电脑突然开机无反应,怎么办
    Kylin (四) --------- Kylin 4.0 查询引擎
    关于良率:交期延误、报废补料、不做退款都是什么情况?
    TDengine 时序性数据库为什么海量数据下不卡顿呢
  • 原文地址:https://blog.csdn.net/flydreamforever/article/details/127478063