【带着学Pytorch】2、张量(Tensor)的介绍与创建

这篇具有很好参考价值的文章主要介绍了【带着学Pytorch】2、张量(Tensor)的介绍与创建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Tensor介绍

 1.1、 张量是什么?

       最开始在出现CPU和GPU, GPU出现主要解决的问题时并行计算,在此基础上的软件层面的工作基本上围绕着并行计算进行的,张量也不例外。

首先,我们先来聊聊 编程语言,python,java ,C,C++等,他们都有的共同特点是什么?在大学中计算机类专业耳熟能详, 算法、数据结构 等等。其实这些语言对于使用者来说仅仅是语法的差异,解决同一个问题它们的核心本质数据结构和算法都没有发生太大的变化。一门语言的语法你掌握了然于心,其实编程就像“搭积木”。然而 深度学习和编程语言有很多相似的地方。pytroch其实就像是一个工具,让你能够用这些“积木”的最小单元进行搭积木。为什么称之为“积木的最小单元”? 看完后面内容你就明白了。

        tensor本质上就是pytorch定义的一种数据结构。它像 python 中的list, 像numpy的数组,它这里仅仅称之为“像”。

        tensor的严格定义 :张量是一个多维数组,它是标量、向量、矩阵的高维拓展。

 他是有多种形态,这个形态与它的维度有很大关系。 

  • 0维:标量 ,理解为一个数字
  • 1维:向量, 一列或一行数字,这里和线性代数的含义共通。
  • 二维:矩阵, 理解就是军训时排列的方阵,里面的人就像是数字。
  • 多维:多维数组,现实世界图片, 就是 3*W*H 的0~255数字组成的多维数组。

Tensor 就是用来在计算机中表示它们的,可以理解为一个形状可以变化的 box, 为什么不称为箱子,通常惯性思考为立体3维,但box 可以是人脑想象不出来的维度。不要进入高维时,不要试图去画面模拟它,单纯把维度看成一个数字就行。

练习:

import torch

ten1 = torch.tensor(1)
print(type(ten1),"ten1:",ten1,"ten1 size",ten1.size())

ten2 = torch.tensor([1,2,3,4,5])
print(type(ten2),"ten2:",ten2,"ten2 size",ten2.size())

ten3 = torch.tensor([[1,2,3,4,5],
                     [2,3,4,5,6],
                     [7,8,9,5,3]])
print(type(ten3),"ten3:",ten3,"ten3 size",ten3.size())

ten4 = torch.tensor([[[1,2,3,4,5],
                     [2,3,4,5,6],
                     [7,8,9,5,3]],
                     [[1,2,3,4,5],
                      [1,2,3,4,5],
                      [1,2,3,4,5]]
                     ])
print(type(ten4),"ten4:",ten4,"ten4 size",ten4.size())

 输出:

"D:\Program Files\anaconda\envs\pytorch37\python.exe" D:/pyWorkSpace/pytorchStudy/1_tensor.py
<class 'torch.Tensor'> ten1: tensor(1) ten1 size torch.Size([])
<class 'torch.Tensor'> ten2: tensor([1, 2, 3, 4, 5]) ten2 size torch.Size([5])
<class 'torch.Tensor'> ten3: tensor([[1, 2, 3, 4, 5],
        [2, 3, 4, 5, 6],
        [7, 8, 9, 5, 3]]) ten3 size torch.Size([3, 5])
<class 'torch.Tensor'> ten4: tensor([[[1, 2, 3, 4, 5],
         [2, 3, 4, 5, 6],
         [7, 8, 9, 5, 3]],

        [[1, 2, 3, 4, 5],
         [1, 2, 3, 4, 5],
         [1, 2, 3, 4, 5]]]) ten4 size torch.Size([2, 3, 5])

Process finished with exit code 0

请注意观察,tensor的size变化,size和tensor的维度是息息相关,在做高维数据时,关注size即可,不建议试图想象形状。 

给该环境打上断点,进行调试。

【带着学Pytorch】2、张量(Tensor)的介绍与创建,AI脚手架,pytorch,人工智能

 可以看到,tensor数据结构中包含

  • data: 包装的Tensor,为什么要包装?用于梯度求导。
  • device:当前tensor所在设备, (细心小伙伴发现是cpu,是因为我没有将它放入gpu)
  • dtype:张量的数据类型

【带着学Pytorch】2、张量(Tensor)的介绍与创建,AI脚手架,pytorch,人工智能

  • layout:表明内存布局(memory layout),即 tensor 在物理设备中的储存结构。学过数据结构的都知道储存结构(物理结构)简单可以分为:顺序储存、链式储存。
  • 可选torch.striedtorch.sparse_coo。分别对应顺序储存、离散储存。
  • 稠密张量适用torch.stried,稀疏张量(0 比较多)适用torch.sparse_coo
  • shape:张量的形状,本质上存放的就是 size() 函数的值。

二、张量的创建

2.1、直接创建

torch.tenor(data: Any, dtype: Optional[_dtype]=None, device: Union[_device, str, None]=None, requires_grad: _bool=False)

像案例中创建一样,这里介绍下torch.tensor 函数,

【带着学Pytorch】2、张量(Tensor)的介绍与创建,AI脚手架,pytorch,人工智能

  •  data:数据,可以是list,numpy
  • dtype:默认和数据一致,可以强制定义
  • device: 设定所在的设备
  • requires_grad: 是否需要计算梯度

2.2、从numpy创建tensor

方法:【注意:该方法创建两个变量共享内存】

ten5 = torch.from_numpy(array1)

源码: 

【带着学Pytorch】2、张量(Tensor)的介绍与创建,AI脚手架,pytorch,人工智能

 案例2:

import torch
import numpy as np
# numpy 创建tensor
list1 =             [[[1,2,3,4,5],
                     [2,3,4,5,6],
                     [7,8,9,5,3]],
                     [[1,2,3,4,5],
                      [1,2,3,4,5],
                      [1,2,3,4,5]]
                     ]
array1 = np.array(list1)

ten5 = torch.from_numpy(array1)

print(type(ten5),"ten5:",ten5,"ten5 size",ten5.size())

<class 'torch.Tensor'> ten5: tensor([[[1, 2, 3, 4, 5],
         [2, 3, 4, 5, 6],
         [7, 8, 9, 5, 3]],

        [[1, 2, 3, 4, 5],
         [1, 2, 3, 4, 5],
         [1, 2, 3, 4, 5]]], dtype=torch.int32) ten5 size torch.Size([2, 3, 5])

 2.3、数值创建

下面将不一一做示例,可以按照上面的方法进行练习

  • tensor.zeros()  : 依据size创建全0张量
  • torch.zeros_like() : 依据 给的 tensor 的形状,创建一个相同形状的全零张量
  • tensor.ones()  : 依据size创建全1张量
  • torch.ones_like() : 依据 给的 tensor 的形状,创建一个相同形状的全1张量
  • torch.full() :依据size创建全给定值张量
  • torch.full_like(): 依据 给的 tensor 的形状,创建一个相同形状的全给定值张量
  • torch.linspace(): 创建均分的一维张量
  • torch.logspace() : 创建对数均分的1维张量
  • torch.eye() : 创建单位对角矩阵 (2维)

 2.4、依据概率创建

  • torch.normal(mean, std ) : 生成正态分布(高斯分布),输入:均值,标准差

有四种模式:均值 【标量,张量】, 标准差 【标量,张量】 2*2 = 4,有四种情况

① 都为张量时:生成的每一个值都来自标准差和均值都不同的正态分布。

②都为标量时,size是指定生成tensor大小,均来自0-1正态分布。

③均值为张量时:生成的每一个值都来自均值都不同的正态分布

④标准差为张量时:生成的每一个值都来自标准差都不同的正态分布

  • torch.randn() :   用来生成随机数字的tensor,这些随机数字满足标准正态分布(0~1)。             
  • torch.randn_like()   :  输出如输入tensor形状一样的,和上面相同输出的tensor
  • torch.rand() : 均匀分布
  • torch.rand_like()
  • torch.randint() : 整数均匀分布
  • torch.randint_like()
  • torch.randperm() ; 生成0~n-1 的随机排列
  • torch.nernoulli( g ): 以给定概率,生成伯努利分布  

下面这些不用全部记住,会查文档就可以了,

主页 - PyTorch中文文档

PyTorch 中文文档 · PyTorch中文文档 · 看云

【带着学Pytorch】2、张量(Tensor)的介绍与创建,AI脚手架,pytorch,人工智能 

 文章来源地址https://www.toymoban.com/news/detail-669584.html

到了这里,关于【带着学Pytorch】2、张量(Tensor)的介绍与创建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【深度学习】pytorch——Tensor(张量)详解

    笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ Tensor,又名张量。它可以是一个数(标量)、一维数组(向量)、二维数组(矩阵)和更高维的数组(高阶数据)。Tensor和Numpy的ndarrays类似,但PyTorch的tensor支持GPU加速。 官方文档 : https://pytorch.org/docs/stable/tensors.html

    2024年02月06日
    浏览(46)
  • Pytorch数据类型Tensor张量操作(操作比较全)

    本文只简单介绍pytorch中的对于张量的各种操作,主要列举介绍其大致用法和简单demo。后续更为详细的介绍会进行补充… 1.创建无初始化张量 torch.empty(3, 4) 创建未初始化内存的张量 2.创建随机张量 x = torch.rand(3, 4) 服从0~1间均匀分布 x = torch.randn(3, 4) 服从(0,1)的正态分布

    2024年02月10日
    浏览(44)
  • 【Pytorch】学习记录分享1——Tensor张量初始化与基本操作

    1. 基础资料汇总 资料汇总 pytroch中文版本教程 PyTorch入门教程 B站强推!2023公认最通俗易懂的【PyTorch】教程,200集付费课程(附代码)人工智能_机器 视频 1.PyTorch简介 2.PyTorch环境搭建 basic: python numpy pandas pytroch theory: study mlp cnn transform rnn model: AlexNet VGG ResNet Yolo SSD 2. Tensor张量

    2024年02月04日
    浏览(47)
  • 【1】深度学习之Pytorch——张量(tensor)的尺寸、储存偏移及步长等基本概念

    深度学习的基本概念 深度学习是一种人工神经网络的学习方法。它通过模仿人脑的学习方式来处理信息。深度学习的网络有很多层,每层都能学习到更抽象的概念。这种方法在语音识别、计算机视觉、自然语言处理等领域有很好的应用。 深度学习也有许多应用,这些应用往

    2024年02月02日
    浏览(41)
  • 将图结构转换矩阵数据转换为PyTorch支持的张量类型时,出现错误AttributeError ‘Tensor‘ object has no attribute ‘todense‘

    将图结构转换矩阵数据转换为PyTorch支持的张量类型时,出现错误AttributeError: ‘Tensor’ object has no attribute ‘todense’ 实例来源于《PyTorch深度学习和图神经网络 卷1》实例26:用图卷积神经网络为论文分类 出错部分p284页 原代码: 错误提示: ​ 找了一圈没有一样的解决方案,但

    2024年02月13日
    浏览(42)
  • 【C++要笑着学】OpenFrameworks 框架介绍 | oF 文件结构 | 图形基础 | 使用 ProjectGenerator 创建项目

      💭 写在前面: 本章我们将介绍一个非常好用的跨平台的 C++ 开源框架 —— openFrameworks。它是一个开源的跨平台的 C++工具包,方便开发者创建出一个更简单和直观的框架,擅长开发图像和动画。     本篇博客全站热榜排名: 8 📜 本章目录: 0x00 openFrameworks 介绍 0x01 开启

    2024年02月04日
    浏览(83)
  • pytorch创建和操作tensor

    参考: https://pytorch.org/docs/stable/tensors.html

    2024年02月16日
    浏览(38)
  • 16、pytorch中张量的8种创建方法

    在PyTorch中,可以使用多种方法来创建张量。下面是一些常见的创建张量的方法: 使用torch.Tensor()函数创建一个未初始化的张量: 使用torch.zeros()函数创建一个全零的张量: 使用torch.ones()函数创建一个全1的张量: 使用torch.eye()函数创建一个单位矩阵张量: 使用torch.arange()函数

    2024年01月24日
    浏览(37)
  • 【Pytorch】学习记录分享2——Tensor基础,数据类型,及其多种创建方式

    pytorch 官方文档 1. 创建 Creating Tensor: 标量、向量、矩阵、tensor 2. 三种方法可以创建张量,一是通过列表(list),二是通过元组(tuple),三是通过Numpy的数组(array),基本创建代码如下: 张量相关属性查看的基本操作,后期遇到的张量结构都比较复杂,难以用肉眼直接看出,因此

    2024年02月04日
    浏览(50)
  • 百度飞桨(PaddlePaddle)- 张量(Tensor)

    张量(Tensor)、标量(scalar)、向量(vector)、矩阵(matrix) 飞桨 使用张量(Tensor) 来表示神经网络中传递的数据 ,Tensor 可以理解为多维数组,类似于 Numpy 数组(ndarray) 的概念。与 Numpy 数组相比,Tensor 除了支持运行在 CPU 上,还支持运行在 GPU 及各种 AI 芯片上,以实现

    2024年02月03日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包