【Pytorch】学习记录分享2——Tensor基础,数据类型,及其多种创建方式

这篇具有很好参考价值的文章主要介绍了【Pytorch】学习记录分享2——Tensor基础,数据类型,及其多种创建方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

pytorch 官方文档

1. 创建 Creating Tensor: 标量、向量、矩阵、tensor

#标量 scalar
scalar = torch.tensor(7)
scalar.ndim  # 查看维度
scalar.item() # 转换成 python中的整数 

#向量 vector
vector = torch.tensor([7, 7])
vector.shape #查看形状

#矩阵 matrix
MATRIX = torch.tensor([[7, 8], 
                       [9, 10]])

#随机tensor,下面是一些生成随机tensor的方法:[更多详细方法见博客](https://blog.csdn.net/Darlingqiang/article/details/134946446?spm=1001.2014.3001.5501)

【Pytorch】学习记录分享2——Tensor基础,数据类型,及其多种创建方式,DL,pytorch,学习,人工智能

2. 三种方法可以创建张量,一是通过列表(list),二是通过元组(tuple),三是通过Numpy的数组(array),基本创建代码如下:

import torch                                # 导入pytorch
import numpy as np                          # 导入numpy

print(torch.__version__)                    # 查看torch版本
t1 = torch.tensor([1,1])                    # 通过列表创建
t1 = torch.tensor((1,1))                    # 通过元组创建
t1 = torch.tensor(np.array([1,1])           # 通过数组创建
t1                                          # tensor([1, 1])

张量相关属性查看的基本操作,后期遇到的张量结构都比较复杂,难以用肉眼直接看出,因此相关方法用的也比较频繁

方法 描述 栗子🌰
ndim 查看张量的维度,也可使用dim() t.ndim /t.dim()
dtype 查看张量的数据结构 t.dtype
shape 查看张量的形状 t.shape
size 查看张量的形状,和shape方法相同 t.size()
numel 查看张量内元素的元素 t.numel()

注:size()和numel()是需要加括号, 实例

t2 = torch.tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
t2.ndim                             # 2
t2.dtype                            # torch.int64
t2.shape                            # torch.Size([3, 3])
t2.size()                           # torch.Size([3, 3])
t2.numel()                          # 返回9

3. 张量类型, pytorch下的数组类型

python作为动态语言,很少去注意到变量的类型,因为我们编写代码时并不需要声明变量类型,但是细心的小伙伴会发现,调用dtype后返回的是torch.int64, 这说明pytorch对于数组的类型是很严谨,因此我们还要了解在pytorch下的数组类型

注: 只需要记住有整数,浮点数,布尔型和复数即可

类型 dtype
32bit浮点数 torch.float32 或 torch.float
64bit浮点数 torch.float64 或 torch.double
16bit浮点数 torch.float16
8bit无符号整数 torch.uint8
8bit有符号整数 torch.int8
16bit有符号整数 torch.int16 或 torch.short
32bit有符号整数 torch.int32 或 torch.int
64bit有符号整数 torch.int64 或 torch.long
布尔型 torch.bool
复数型 torch.complex64

在pytorch中,默认的张量整数类型是int64,使用浮点数类型是float32【不同版本pytorch可能不同】;

双精度double能存储的有效位数比单精度float更多,但相应的需要的存储空间越多

int16,int32,int64的区别主要在于表示值的范围不同,数字越大所能表示的范围越大

在pytorch中,可以使用在创建时指定数据类型,也可以后期进行修改,实例如下

t3 = torch.tensor([True, 1.0])              # tensor([1., 1.])隐式转换
t3 = torch.tensor([1,1,1,1],dtype=float)
t3.dtype                                    # torch.float64
t3.int()                                    # tensor([1, 1, 1, 1], dtype=torch.int32)
t3.byte()                                   # tensor([1., 1., 1., 1.], dtype=torch.float64)
t3.short()                                  # tensor([1, 1, 1, 1], dtype=torch.int16)
t3.bool()                                   # tensor([True, True, True, True])

4. 张量特殊类型及其创建方法

方法 描述
torch.zeros() 创建全为0的张量
torch.ones() 创建全为1的张量
torch.eye() 创建对角为1的单位矩阵
torch.diag(t) 创建对角矩阵,需要传入1维张量
torch.rand() 创建服从0-1均匀分布的张量
torch.randn() 创建服从标准正态分布的张量
torch.normal() 创建服从指定正态分布的张量
torch.randn 创建服从标准正态分布的张量
torch.randint() 创建由指定范围随机抽样整数组成的张量
torch.arange() 创建给定范围内的连续整数组成的张量
torch.linspace() 创建给定范围内等距抽取的数组成的张量
torch.empty() 创建未初始化的指定形状的张量
torch.full() 创建指定形状,指定填充数值的张量

需要注意有哪些方法是传入代表结构的列表,有哪些是传入张量,有哪些是传入数字,实例如下

torch.zeros([3,3])                      # 创建3行3列,元素全为0的2维张量
torch.ones([3,3])                   # 创建3行3列,元素全为1的2维张量
torch.eye(4)                          # 创建4行4列的单位矩阵

t = torch.tensor([1,2,3,4])   # 创建需要传入的1维张量
torch.diag(t)                 # 创建对角元素为1,2,3,4的对角矩阵

【Pytorch】学习记录分享2——Tensor基础,数据类型,及其多种创建方式,DL,pytorch,学习,人工智能

torch.rand([3,4])                           # 创建元素为0-1分布的3行4列张量
torch.normal(3, 4, [2, 2])      # 创建服从均值为3,标准差为4的正态分布元素组成的张量
torch.randn([3,4])                      # 创建元素为标准正态分布的3行4列张量

【Pytorch】学习记录分享2——Tensor基础,数据类型,及其多种创建方式,DL,pytorch,学习,人工智能

torch.randint(0,20,[3,4])     # 创建由0-20间的随机整数组成的3行4列的张量
torch.arange(1,20)            # 创建0-20内连续整数组成的张量

【Pytorch】学习记录分享2——Tensor基础,数据类型,及其多种创建方式,DL,pytorch,学习,人工智能


torch.linspace(1, 10, 5)      # 创建给定范围内等距取样的数组成的张量   1-10范围内,创建5个元素
torch.empty([3,4])            # 创建3行4列的未初始化张量
torch.full([3, 4], 2)         # 创建3行4列的全为2的张量

【Pytorch】学习记录分享2——Tensor基础,数据类型,及其多种创建方式,DL,pytorch,学习,人工智能文章来源地址https://www.toymoban.com/news/detail-758705.html

到了这里,关于【Pytorch】学习记录分享2——Tensor基础,数据类型,及其多种创建方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 将图结构转换矩阵数据转换为PyTorch支持的张量类型时,出现错误AttributeError ‘Tensor‘ object has no attribute ‘todense‘

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

    2024年02月13日
    浏览(45)
  • 【Pytorch基础教程39】torch常用tensor处理函数

    torch.tensor 会复制data,不想复制可以使用 torch.Tensor.detach() 。 如果是获得numpy数组数据,可以使用 torch.from_numpy() ,共享内存 torch.mm : 用于两个矩阵(不包括向量)的乘法。如维度为(l,m)和(m,n)相乘 torch.bmm : 用于带batch的三维向量的乘法。如维度为(b,l,m)和(b,m,n)相乘 torch.mul : 用于

    2024年02月13日
    浏览(75)
  • 【深度学习】pytorch——Tensor(张量)详解

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

    2024年02月06日
    浏览(50)
  • PyTorch项目源码学习(2)——Tensor代码结构初步学习

    PyTorch版本:1.10.0 Tensor Tensor是Pytorch项目较为重要的一部分,其中的主要功能如存储,运算由C++和CUDA实现,本文主要从前端开始探索学习Tensor的代码结构。 结构探索 PyTorch前端位于torch目录下,从_tensor.py可以找到Tensor的python定义,可以看到其继承自torch._C._Tensorbase 而Tensorbase的

    2024年02月02日
    浏览(45)
  • 深度学习--PyTorch定义Tensor以及索引和切片

    ​这些方法只是开辟了空间,所附的初始值(非常大,非常小,0),后面还需要我们进行数据的存入。 torch.empty():返回一个没有初始化的Tensor,默认是FloatTensor类型。 torch.FloatTensor():返回没有初始化的FloatTensor。 torch.IntTensor():返回没有初始化的IntTensor。 随机均匀分布:

    2023年04月20日
    浏览(49)
  • 1.PyTorch数据结构Tensor常用操作

    从接口的角度来讲,对tensor的操作可分为两类: torch.function ,如 torch.save 等。 另一类是 tensor.function ,如 tensor.view 等。 为方便使用,对tensor的大部分操作同时支持这两类接口,如 torch.sum (torch.sum(a, b)) 与 tensor.sum (a.sum(b)) 功能等价。 而从存储的角度来讲,对tensor的操作又可

    2024年02月04日
    浏览(41)
  • unity的C#学习——标识符号、关键字与数据类型及其转换方式

    标识符是用来识别 类、变量、函数 或任何其它用户定义的 项目 。在 C# 中,类的命名必须遵循如下基本规则: 标识符必须以 字母、下划线或 @ 开头,后面可以跟一系列的字母、数字( 0 - 9 )、下划线( _ )、@。 标识符中的第一个字符不能是数字。 标识符必须不包含任何

    2024年02月01日
    浏览(47)
  • pytorch中的tensor实现数据降维以及通道数转换

            首先导入torch包,利用torch.narrow()函数实现数据通道数转换,具体实例见下图         利用torch.rand(5,6)随机生成一个5X6的二维矩阵,利用torch.narrow(x,dim,start,length)进行通道数转化,narrow()函数里第一个参数是你需要转换的原始数据,必须是tensor形式。第二个变量

    2024年02月17日
    浏览(47)
  • 【自学记录】【Pytorch2.0深度学习从零开始学 王晓华】第四章 深度学习的理论基础

    遇到的疑问: 1、对神经网络前向计算中,关于系数矩阵W的讨论。 上一章讲到了层结构是【out,in】,所以我觉得在计算Y=WX+b的时候,W矩阵也应该是【out,in】的形状。但是该代码(或者正规代码实现流程)不是的,他是一个这样的结构: 所以,W矩阵还是【in,out】结构,a1=X1 W

    2024年04月09日
    浏览(56)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包