【Pytorch】 理解张量Tensor

news2025/1/18 2:14:54

本文参加新星计划人工智能(Pytorch)赛道:https://bbs.csdn.net/topics/613989052

这是目录

  • 张量Tensor是什么?
  • 张量的创建
  • 为什么要用张量Tensor呢?
  • 总结

张量Tensor是什么?

在深度学习中,我们经常会遇到一个概念:张量Tensor。那么,张量Tensor到底是什么呢?它有什么用处呢?

首先,我们要明白一个基本的数学概念:矩阵Matrix。矩阵Matrix是一个由若干个数字按照一定的行列排列组成的表格。例如:

123
456
789

这就是一个3×3的矩阵Matrix,它有3行3列,每个位置上都有一个数字。我们可以用矩阵Matrix来表示很多东西,比如线性方程组、线性变换、向量Vector等等。

向量Vector其实就是一种特殊的矩阵Matrix,它只有一行或者一列。例如:

1
2
3

这就是一个3×1的向量Vector,它只有一列,每个位置上都有一个数字。我们可以用向量Vector来表示很多东西,比如坐标、速度、力等等。

那么,张量Tensor又是什么呢?简单地说,张量Tensor就是一个更高维度的矩阵Matrix。如果矩阵Matrix可以看作是由若干个数字组成的二维表格,那么张量Tensor可以看作是由若干个数字组成的多维立方体(或者其他形状)。例如:

在这里插入图片描述

这就是一个2×2×2的张量Tensor,它有2层2行2列。我们可以用张量Tensor来表示很多东西,比如彩色图像、声音信号、神经网络参数等等。

参考:张量(Tensor):神经网络的基本数据结构
参考: Canonical Forms of 2x2x2 and 2x2x2x2 Tensors

张量的创建

张量Tensor是一个n维的数值数组,可以用来表示复杂的数学对象和运算。在TensorFlow中,张量Tensor是最基本的数据类型,可以用不同的函数来创建。

常用的创建张量Tensor的函数有:

  • tf.constant (value, dtype=None, shape=None, name=‘’):根据给定的值、数据类型、形状和名称创建一个常量张量Tensor。
  • tf.zeros (shape, dtype=tf.float32, name=None):根据给定的形状、数据类型和名称创建一个全零张量Tensor。
  • tf.ones (shape, dtype=tf.float32, name=None):根据给定的形状、数据类型和名称创建一个全一张量Tensor。
  • tf.fill (dims, value, name=None):根据给定的维度、值和名称创建一个填充指定值的张量Tensor。
  • tf.linspace (start, stop, num, name=None):根据给定的起始值、终止值和数量创建一个线性分布的张量Tensor。
  • tf.range (start, limit=None, delta=1, dtype=None,name=‘range’):根据给定的起始值、限制值、步长、数据类型和名称创建一个范围内分布的张量Tensor。

例如:

import tensorflow as tf
t1 = tf.constant([1.0 , 2.0 , 3.0]) # 创建一个一维浮点型常量张量
t2 = tf.zeros([2 , 3]) # 创建一个二维全零整型张量
t3 = tf.ones([3 , 4]) # 创建一个三维全一整型张量
t4 = tf.fill([2 , 2], 5) # 创建一个二维填充5 的整型张量
t5 = tf.linspace(10.0 , 13.0 , 4) # 创建一个一维线性分布从10 到13 的浮点型张量
t6 = tf.range(10 , 20 , 2) # 创建一个一维范围从10 到20 步长为2 的整型张量

如何创建具有已知值的张量

为什么要用张量Tensor呢?

在深度学习中,我们需要处理很多复杂而高维的数据结构和运算。如果只用普通的矩阵Matrix和向量Vector来表示和计算,可能会非常麻烦和低效。而使用张量Tensor,则可以让我们更方便地存储和操作数据,并且利用其内在的多重线性映射特性来实现各种复杂而高效的运算。

例如,在计算机视觉中,我们常常需要处理彩色图像文件(RGB)。每个彩色图像文件(RGB)都可以看作是一个三维张量Tensor:第一维表示图像中每个像素的位置,第二维表示图像中每个像素的颜色通道(R、G、B),第三维表示每个颜色通道中每个像素的强度(0-255)。例如,一个256×256的彩色图像文件(RGB)就可以表示为一个256×256×3的张量Tensor。

我们可以用PyTorch来加载和处理彩色图像文件(RGB),并将它们转换为张量Tensor。PyTorch提供了一些模块和函数来方便我们操作图像数据,比如torchvision、imageio等。下面是一个简单的示例:

import torch
import imageio.v2 # 用于加载图像文件
import torchvision # 用于转换图像格式

img_arr = imageio.v2.imread('../data/image-dog/bobby.jpg') # 加载一张狗狗的图片
img = torch.from_numpy(img_arr) # 将numpy数组转换为张量Tensor
img = img.permute(2, 0, 1) # 将张量Tensor的排列顺序从H*W*C变为C*H*W
img = img.float() # 将张量Tensor的数据类型从整数变为浮点数
img = img / 255.0 # 将张量Tensor的数据范围从0-255变为0-1

# 或者我们可以直接用torchvision.transforms模块中提供的函数来实现上述操作:
transform = torchvision.transforms.Compose([ # 定义一个转换函数,包含多个步骤
    torchvision.transforms.ToTensor(), # 将numpy数组或PIL图片转换为张量Tensor,并自动调整排列顺序和数据范围
])
img = transform(img_arr) # 应用转换函数

print(img.shape) # 打印张量Tensor的形状——> (通道数, 高度, 宽度)

通过上述代码,我们就可以将一张彩色图像文件(RGB)表示为一个三维张量Tensor,并且符合PyTorch处理图像数据的要求。

总结

本文简要介绍了什么是张量Tensor,以及如何将彩色图像文件(RGB)表示为张量Tensor。我们了解了张量Tensor是一种多维数组,可以用来存储和操作高维数据结构。并学习了如何用PyTorch来加载和处理彩色图像文件(RGB),并将它们转换为适合深度学习模型使用的张量Tensor。

推荐学习视频:What’s a Tensor?
在这里插入图片描述

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

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

相关文章

初探Redis整体架构

文章目录1、Redis为什么选择单线程2、逐步加入多线程3、Redis采用IO多路复用---epoll和Reactor架构4、Redis6/7默认是否开启了多线程?1、Redis为什么选择单线程 这种问法其实并不严谨,为啥这么说呢? Redis几个里程碑式的重要版本 理清一个事实&#…

一文带你安装opencv和常用库(保姆级教程少走80%的弯路)

0.导语 离上一个opencv安装保姆级教程发布已经过去了快一年了,这一年来我收到了来自很多C友的鼓励。打算学opencv的各位朋友都会在安装opencv和各种库过程中浪费掉60%的时间和精力;博主在这一年来尝试各种各样的安装方法,全网搜集各种资料总…

[ 云计算 | Azure ] Chapter 05 | 核心体系结构之管理组、订阅、资源和资源组以及层次关系

本文主要对如下内容进行讲解:Azure云计算的核心体系结构组件中的:资源、订阅和资源组,以及了解 Azure 资源管理器 (ARM) 如何部署资源。 本系列已经更新文章列表: [ 云计算 | Azure ] Chapter 03 | 描述云计算运营中的 CapEx 与…

元宇宙与网络安全

元宇宙是一种虚拟现实空间,用户可以在计算机生成的环境中进行互动。元宇宙的应用范围很广,比如房地产,医疗,教育,军事,游戏等等。它提供了更具沉浸感的体验,更好地现实生活整合,以及…

图像分类算法:ResNet论文解读

图像分类算法:ResNet论文解读 前言 ​ 其实网上已经有很多很好的解读各种论文的文章了,但是我决定自己也写一写,当然,我的主要目的就是帮助自己梳理、深入理解论文,因为写文章,你必须把你所写的东西表达清楚…

游戏工厂:AI(AIGC/ChatGPT)与流程式游戏开发(码客 卢益贵)

关键词:AI(AIGC、ChatGPT、文心一言)、流程式管理、好莱坞电影流程、电影工厂、游戏工厂、游戏开发流程、游戏架构、模块化开发 一、前言 开发周期长、人工成本高、成功率低等使得游戏公司融资比较困难。有的公司凭一个爆款游戏一骑绝尘之后…

奇异值分解(SVD)和图像压缩

在本文中,我将尝试解释 SVD 背后的数学及其几何意义,还有它在数据科学中的最常见的用法,图像压缩。 奇异值分解是一种常见的线性代数技术,可以将任意形状的矩阵分解成三个部分的乘积:U、S、V。原矩阵A可以表示为&#…

阿里通义千问、百度文心一言、ChatGPT与GPT-4大比拼

各个大模型的研究测试传送门 ​阿里通义千问传送门: https://tongyi.aliyun.com/chat 百度文心一言传送门: https://yiyan.baidu.com/ ChatGPT传送门(免墙,可直接注册测试): https://wowchat.cn GPT…

离线安装k8s/kubernetes v1.17.1并部署服务验证功能

条件: 3台没有网络的centos7.9服务器 1.系统优化 hostnamectl set-hostname k8s-master && bash #只在master节点上执行 hostnamectl set-hostname k8s-node1 && bash #只在node1节点上执行 hostnamectl set-hostname k8s-node2 && …

嵌入式:BSP的理解

BSP概念总结BSP定义BSP的特点BSP的主要工作BSP在嵌入式系统和Windowsx系统中的不同BSP和PC机主板上的BIOS区别BSP与 HAL关系嵌入式计算机系统主要由 硬件层,中间层,系统软件层和应用软件层四层组成。硬件层:包含CPU,存储器(SDRAM&…

(数字图像处理MATLAB+Python)第四章图像正交变换-第一节:离散傅里叶变换

文章目录一:一维离散傅里叶变换(1)定义(2)实例二:一维快速傅里叶变换(1)定义(2)实例三:二维离散傅里叶变换(1)定义&#x…

SpringCloud微服务技术栈.黑马跟学(十二)

SpringCloud微服务技术栈.黑马跟学 十二今日目标服务异步通信-高级篇1.消息可靠性1.1.生产者消息确认1.1.1.修改配置1.1.2.定义Return回调1.1.3.定义ConfirmCallback1.2.消息持久化1.2.1.交换机持久化1.2.2.队列持久化1.2.3.消息持久化1.3.消费者消息确认1.3.1.演示none模式1.3…

Flutter TextField UI 实例 —— 新手礼包

大家好,我是17。 新手礼包一共 3 篇文章,每篇都是描述尽量详细,实例讲解,包会! Flutter Row 实例 —— 新手礼包Flutter TextField UI 实例 —— 新手礼包Flutter TextField 交互实例 —— 新手礼包 本篇介绍了 Tex…

机器学习:基于逻辑回归对超市销售活动预测分析

系列文章目录 作者:i阿极 作者简介:Python领域新星作者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒关注哦!&a…

linxu学习之进程

文章目录进程程序和进程产生进程销毁进程多进程高并发设计孤儿僵尸守护进程孤儿进程:守护进程(重点)僵尸进程:进程 程序和进程 操作系统可以运行多个程序,那他是如何运行的?实际上,CPU的执行是很快的,而待…

《随便测测》WEB接口测试平台

编写用例的船新版本,从未有过的顺滑体验背景在保证用例运行稳定、高效、准确的前提下以降低测试人员编写用例的时间为目的,减少编写用例的复杂度,达到提升效率的目的。解决问题因被测系统业务流程长,接口多(多的一个场…

【ssl认证、证书】SSL 证书基本概念、证书格式、openssl和keytool的区别

文章目录1. keytool VS openssl2. X.509 VS PKCS2.1 PKCS2.2 X.5092.2.1 证书编码格式2.2.1.1 DER 证书编码格式二进制2.2.1.2 文本格式 pem2.2.2 文件后缀名3. 常见Web服务软件及证书格式参考相关文章://-----------Java SSL begin----------------------【ssl认证…

【云原生】k8s集群命令行工具kubectl之集群管理命令

kubectl集群管理命令详解一、准备工作1.1、Replication Controller1.2、Deployment1.3、DaemonSet1.4、查看创建的svc和pod1.5、kubectl 命令自动补全设置二、集群管理命令2.1、top2.2、cordon2.3、uncordon2.4、drain2.5、taint2.5.1、污点设置。2.5.2、容忍度使用一、准备工作…

Scala之函数式编程

目录 函数和方法的区别: 参数默认值: 函数至简原则---能省则省: 至简原则细节 匿名函数的化简: 匿名函数至简原则: 高阶函数: 高阶函数的三种用法: (1)函数可以作…

【K8S系列】深入解析Pod对象(二)

目录 序言 1.Volume 简单介绍 2 Projected Volume 介绍 2.1 Secret 2.1.1 yaml讲解 2.1.2 创建Pod 2.2 Downward API 2.2.1 yaml示例 2.2.2 Downward API 支持字段 3 投票 序言 任何一件事情,只要坚持六个月以上,你都可以看到质的飞跃。 在…