什么是张量

news2025/1/11 18:41:14

张量的基础概念

学习使用pytorc库进行深度学习网络搭建时,张量这个词总是不定时会出现。其实,Pytorch中的所有操作都是在张量的基础上进行的,今天就来了解张量到底是什么

图片

由PyTorch官网官网介绍可知,一个Tensor是一个包含单一数据类型的多维矩阵。

通常,其多维特性用三维及以上的矩阵来描述,例如下图所示:单个元素为标量(scalar),一个序列为向量(vector),多个序列组成的平面为矩阵(matrix),多个平面组成的立方体为张(tensor)。PS:张量也无需严格限制在三维及以上才叫张量,也有一维张量、二维张量

直白话:其实就把张量理解成数组就行,只不过里面的数据类型比较特殊,因此,几维张量外面就相当于最外层数组包含几层[ ]

为什么深度学习要使用Tensor

监督机器学习模型的输入X通常是多个特征列组成的二维矩阵,输出y是单个特征列组成的标签向量或多个特征列组成的二维矩阵。那么深度学习中,为何要定义多维矩阵Tensor呢?

深度学习当前最成熟的两大应用方向莫过于CV和NLP,其中CV面向图像和视频,NLP面向语音和文本,二者分别以卷积神经网络和循环神经网络作为核心基础模块,且标准输入数据集都是至少三维以上。其中,

  • 图像数据集:至少包含三个维度(样本数Nx图像高度Hx图像宽度W);如果是彩色图像,则还需增加一个通道C,包含四个维度(NxHxWxC);如果是视频帧,可能还需要增加一个维度T,表示将视频划分为T个等时长的片段。

  • 文本数据集:包含三个维度(样本数N×序列长度L×特征数H)。

因此,输入学习模型的输入数据结构通常都要三维以上,这也就促使了Tensor的诞生。

Tensor数据类型

下面这种图展示了大部分张量数据类型

张量的每种数据类型都有对应CPU和GPU版本,因此进行张量处理的时候需要指定一个设备,它要么是CPU要么是GPU,因此我们可以用torch.device来创建一个设备,并指定索引,例如:

device=torch.device('cuda:0')

输出结果为:device(type='cuda',index=0),可看到类型为'cuda',即GPU,索引0表示为第一个GPU。

Tensor形状

张量具有如下形状属性:

  • Tensor.ndim:张量的维度,例如向量的维度为1,矩阵的维度为2。

  • Tensor.shape: 张量每个维度上元素的数量。

  • Tensor.shape[n]:张量第n维的大小。第n维也称为轴(axis)。

  • Tensor.numel:张量中全部元素的个数。

创建一个四位张量Tensor

Tensor=torch.ones([2,3,4,5])

它的属性axis、shape、dimension、ndim之间关系如下图所示。

图片

Tensor创建

Pytorch可基于给定数据手动创建Tensor,并提供了多种方式

  • torch.tensor()

import numpy as np
import torch
arr = np.ones((3, 3))
'''
[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]
'''
print(arr)
# ndarray的数据类型: float64
print("ndarray的数据类型:", arr.dtype)
t= torch.tensor(arr)
'''
tensor([[1., 1., 1.],
        [1., 1., 1.],
        [1., 1., 1.]], dtype=torch.float64)
'''
print(t)

  • 从numpy创建Tensor ->torch.from_numpy(ndarray)

import numpy as np
import torch
# 创建一个numpy数组
numpy_array = np.array([[1, 2, 3], [4, 5, 6]])

# 从numpy数组创建一个Tensor,并保持数据共享(更改Tensor内容会同时改变numpy数组)
tensor_from_numpy = torch.from_numpy(numpy_array)
print(tensor_from_numpy)

# 输出:
# tensor([[1, 2, 3],
#         [4, 5, 6]], dtype=torch.int32)

# 修改tensor,array也会被修改
print("# -----------修改tensor--------------*")
t[0, 0] = -1
print("numpy array: ", arr)
# 输出:
# numpy array:  [[-1  2  3]
#               [ 4  5  6]]
print("tensor : ", t)
# 输出:
# tensor([[-1, 2, 3],
#         [4, 5, 6]], dtype=torch.int32)

  • 根据数值创建张量

1.torch.zeros():根据size创建全0张量

torch.zeros(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)

2. torch.zeros_like:根据input形状创建全0张量

torch.zeros_like(input, dtype=None, layout=None, device=None, requires_grad=False, memory_format=torch.preserve_format)

此外 还有一些如下: 

3. torch.full() & torch.full_like():创建自定义某一数值的张量。

4. torch.linspace():创建均分的一维张量

5.torch.logspace():创建对数均分的一维张量

6.torch.arrange():创建等差的一维张量

7. torch.eye():创建单位对角矩阵

  • 根据概率创建张量

1.torch.normal():生成正态分布(高斯分布)

torch.normal(mean, std, *, generator=None, out=None)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2045513.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试自学三个月,进了一家自研薪资11k,面试总结分享给大家

功能方面:问得最多的就是测试流程,测试计划包含哪些内容,公司人员配置,有bug开发认为不是 bug怎么处理,怎样才算是好的用例,测试用例设计方法(等价类,边界值等概念方法)&…

DVWA靶场配置相关问题解决

本文主要提到鄙人在DVWA配置过程中所遇到的问题,以及我的解决方式,希望会帮到大家! 首先,我使用的是windows版本,运用的是小皮搭建,前期准备可参考:【靶场搭建】超级详细——DVWA靶场搭建&…

springboot美术馆管理系统--论文源码调试讲解

第2章 开发环境与技术 本章节对开发美术馆管理系统管理系统需要搭建的开发环境,还有美术馆管理系统管理系统开发中使用的编程技术等进行阐述。 2.1 技术路线 在美术馆管理系统中常用的技术方案如下所展示: 针对已有的购物中心,系统结构为B…

ChatGPT:智能聊天机器人微信开发实战

简介 ChatGPT近期以强大的对话和信息整合能力风靡全网,可以写代码、改论文、讲故事,几乎无所不能,这让人不禁有个大胆的想法,能否用他的对话模型把我们的微信打造成一个智能机器人,可以在与好友对话中给出意想不到的回…

微信分享朋友圈单页面设置

需求:用户在朋友圈打开分享的小程序页面,并不会真正打开小程序,而是进入一个“小程序单页模式”的页面,需要自定义单页面样式 第一步:先读官方文档 分享到朋友圈 | 微信开放文档 由官方文档可知,当进入单页面会返回一个场景值1154,判断如果是1154就展示…

利用腾讯云AI代码助手优化图书馆管理系统

引言 在当今信息爆炸的时代,软件开发已成为推动社会进步和科技发展的重要力量。随着项目规模的扩大和复杂性的提升,我们开发者在编程过程中面临着越来越多的挑战。代码编写的效率、准确性和规范性,直接关系到项目的成功与否。为了应对这些挑…

开机就能打?没那么玄乎!客观分析 “狂躁许可”漏洞(CVE-2024-38077)及其影响范围

一、事件背景 2024年7月9日,微软官方发布了一个针对“windows远程桌面授权服务远程代码执行漏洞”(CVE-2024-38077)的修复补丁包,起初并没有引起大家的警觉。今日在国外某网站上疑似漏洞的作者公开了该漏洞的“POC验证代码”。一…

无法判断编程器固件类型

按照简书上指导把小米路由器4C刷机了OpenWrt,玩个新鲜,看看都有什么功能,确实挺强大,能做很多事,但是不稳定,又想刷回去,结果卡在上传步骤,报错,提示“无法判断编程器固件…

解决 Kibana 中的 “Invalid character in header content” 错误

在使用 Kibana 进行数据可视化和分析的过程中,我们可能会遇到一些配置相关的问题。本文将介绍一个常见的错误:“Invalid character in header content”,并提供详细的解决步骤。 问题背景 当启动 Kibana 服务时,如果遇到以下错误…

【三维重建】Pixel-GS:三维高斯泼溅的像素感知的梯度密度控制(去除浮点,提升精度)

项目:https://pixelgs.github.io/ 标题:Pixel-GS: Density Control with Pixel-aware Gradient for 3D Gaussian Splatting 来源:香港大学;腾讯AI Lab 文章目录 摘要一、前言二、相关工作1.新视图合成2.基于点的辐射场3.Floater 的…

MFC系列-改变控件字体和颜色

【1】在资源管理器中,选择对话框,右键选择类向导,消息中选择WM_CTLCOLOR HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);//if (nCtlColor CTLCOLOR_STATIC) …

Postgres 超时 (Timeout) 详解

原文地址 https://www.bytebase.com/blog/postgres-timeout/ PostgreSQL 提供各种超时 (Timeout) 设置,通过控制某些进程的持续时间来帮助管理和优化数据库操作。这些超时对于确保系统的稳定性和性能至关重要,尤其是在高流量或复杂查询的环境中。让我们…

脱胎于 S 语言的R语言,它何为成为各行业数据分析师的首选?

下面内容摘录自《R 语言与数据科学的终极指南》专栏文章的部分内容,每篇文章都在 5000 字以上,质量平均分高达 94 分,看全文请点击下面链接: 1章3节:R 语言的产生与发展轨迹(更新2024/08/14)-C…

积木报表导出数据量太大报错

积木报表导出数据量太大报错问题处理 问题背景解决方案运行结果关键代码 问题背景 积木报表在导出大量数据时可能会遇到报错‌,‌这通常是由于数据量大导致的性能问题或数据处理方式不当引起的。‌以下是一些可能导致报错的原因及相应的解决方法:‌ …

Redis13-多级缓存

目录 概述 JVM进程缓存 Caffeine 实现进程缓存 Lua语法 初识Lua 变量和循环 Lua的数据类型 声明变量 循环 条件控制、函数 函数 条件控制 实现多级缓存 安装OpenResty OpenResty快速入门 请求参数处理 查询Tomcat 发送http请求的API 封装http工具 CJSON工…

传感器灯光与避障系统的详细作用!

传感器灯光 视觉指示:传感器灯光为无人机提供了直观的视觉指示,帮助飞行员或地面操作人员清晰地识别无人机的飞行状态、方向和位置。 通信与警示:通过特定的灯光颜色和闪烁模式,传感器灯光能够传达无人机的特定状态或警告信息&a…

Gato:A Generalist Agent

发表时间:11 Nov 2022 论文链接:https://readpaper.com/pdf-annotate/note?pdfId4689785740490440705&noteId2412686834489472512 作者单位:DeepMind 前言:近日,DeepMind发布了文章《A Generalist Agent》&#…

jenkins配置+vue打包多环境切换

jenkins配置流水线过程 1.新建item 加入相关的参数就行了。 流水线脚本设置 后端脚本 node {stage checkoutsh"""#每次打包清空工作空间目录rm -rf $workspace/*cd $workspace#到工作空间下从远端svn服务端拉取代码svn co svn://10.1.19.21/repo/技术中台/低…

深度学习基础之循环神经网络

目录 基本概念与特点 定义与工作原理 结构组成 应用领域 自然语言处理 语音识别 时间序列分析 优缺点 优点 缺点 改进方法 总结 循环神经网络在自然语言处理中的最新应用和研究进展是什么? 长短期记忆网络(LSTM)与门控循环单元…

国内首个非遗数字人智能体,AI让传统文化“活”起来

在数字化与智能化时代,文化传承正迎来全新的机遇。河南省非物质文化遗产保护和智慧化中心基于百度文心智能体平台,成功推出了国内首个非遗数字人(智能体)——「河南非遗数字人」,开启了非遗文化传播的新篇章。 河南非遗…