2.理解张量

    1. 张量(Tensors)介绍

张量是物理和工程领域的基础数学结构。但是过去张量很少在计算机科学里使用。它与离散数学和逻辑学有更多的联系。随着机器学习的出现,这种状态开始显著的改变,成为连续向量的计算基础。现代机器学习以张量的操作和微积分为基础。

张量是TensorFlow工作的基本计算单元。假如你用语句 import tensorflow as tf导入tensorflow,它的基本的对象是张量 tensor,是类tf.tensor tf.tensor有两个特性:

  • 数据类型 (例如, float32)
  • 形状 (例如, [2,3],意味着张量有2行和3)

张量有静态的数据类型和动态的维。在评估的时候你不能改变它的数据类型但是在评估前可以动态的改变它的维 (基本上,你声明张量时可以不用指明维,TensorFlow会从输入值推断维)

简单的来说张量只不过是原始数据类型的集合 (例如,浮点数)形状为 n-维的数组。这里是一些张量的例子 (以及相关的 Python定义) :

1 一个标量

[1,2,3] 一个向量

[[1,2,3], [4,5,6]] 一个矩阵或两维数组

一个重要的方面是张量的每一个元素总是有相同的类据类型,而形状不一定要在声明时定义。 (后面的实例会更清楚些。)

通常人们讨论张量的 rankshape数组的长度称为tensor的rank。简单的来说它就是张量维的数目(而标量的 rank 0)Ranking tensors的意思是包含于张量本身的数组的维。张量的形状表示每一个维的数值。如

Scalar—32:rank 0张量的形状(shape)为 [ ].

Vector—[3, 4, 5]: rank 1张量的形状(shape)为[3].

Matrix =1 2 3

4 5 6

7 8 9    : rank 2 张量的形状(shape)[3, 3]。

2-1有助于理解张量的不同 ranks是什么。

2-1.  Ranks 0, 1, 2, 3 Tensors的例子

Rank       数学实体                                                             Python示例

0             标量 (例如,长度或重量)                 l=30

1             向量 (例如,物体在二维平面上的速度)     s=[10.2,12.6]

2             矩阵                                  m=[[23.2, 44.2], [12.2, 55.6]]

3            3d矩阵 (有三个维)                  C = [[[1],[2]],[[3],[4]], [[5], [6]]]

可以用a.get_shape()来得到张量a的shape。a.reshape()可以改变张量a的shape。

记住张量(tensor)只是数据的容器。它有两个基本的特征:数据类型(dtype和型状(shape)。dtype用来控制数据的类型,一个给定的tensor只能存贮一种类型的数据。Shape是整数数组,用来指示tensor里有多少个元素以及元素是如何组织的。可以把它当作容器的“形状和大小”(见图2-5)。

       

                    图2-5  rank 为0,1,2,3,4的tensor

例如,一个1D tensor,也称为向量(vector),它的rank为1。1D tensor的shape是一个只含有一个数字的数组,这个数字告诉我们1D tensor的长度是多少。将rank增加1,我们得到2D tensor,可以把它看作2D平面上的数字的网格(像灰度图像)。2D tensor的shape有两个数字,它告诉我们网格的高度和宽度。习惯上,rank-2 tensor被称为矩阵,它由行和列组成。 再将rank增加1,我们得到3D tensor。如上图,你可以把3D tensor看作数字的3D网格。3D tensor的shape有三个整数;它们分别告诉我们3D网格沿三个维度的大小。通常彩色图像可以用3D tensor编码。Rank为4的tensor(4D tensor)难于直接可视化,因为我们生活在三维空间里。4D tensors经常用在许多模型里,例如,深层卷积(deep convnets)。一个时长为10分钟的video可以认为是一个4D tensors。TensorFlow里支持的tensors可以多达rank 6。实践中, rank-5 tensors只用于一些合适的场合(例如,包含多个video的数据), 而rank-6 tensors更为少用。

张量的主要类型有

  • tf.Variable
  • tf.constant
  • tf.placeholder(虽然TensorFlow v2不再使用)

tf.constanttf.placeholder的值是在一个session运行过程中不可以改变的。 一旦它们有了值,它们就不能改变。例如,tf.placeholder可能包含你想在训练神经网络时使用的数据集。一旦赋值,它不会在评估阶段改变。tf.Variable可能包含你的神经网络的权重,它们会在训练过程中改变,从而找到针对你的问题的最佳值。最后 tf.constant永远不会改变。下一节告诉你如何使用这三种类型的张量,并在开发模型要注意什么。

2.1.1标量(Scalars),向量 Vectors, 和矩阵(Matrices)

我们以你可能已经熟悉的张量的例子开始,最简单的张量是标量,它是来自实数域的一个常数(记住实数是任意精度的小数,正数和负数都可以)。数学上,我们记实数为R。更正式地,我们称scalar为rank-0 张量。

精通数学的读者可能会抗议,基于复数或二进制数定义张量完全有意义。一般地,只要0,1,加、减、乘、除有定义的数都可以构成张量,包括实数R,有理数Q,复数C, 和有限域例如Z2。

为了简单起见,我们只假定实数张量,但是用其它域的数代替也是合理的。

如果标量是rank-0 张量,那rank-1张量是什么呢?正规的说,rank-1张量是向量,是实数的列表。习惯地,向量写作列向量

                         

或行向量

                     

标记上,所有的长度为2的列向量记为R2 × 1而长度为2的行向量记为R1 × 2。计算上,我们说列向量的形状为 (2, 1), 而行向量的形状为 (1, 2)。如果我们不想指明向量是行向量还是列向量,我们可以说它来自 R2集合且形状为 (2)。张量的形状对于理解TensorFlow的计算很重要,后面我们还会返回它。 向量的最简单的用途是作为现实世界的坐标。

假如我们确定原点(你当前的地点),则世界上任意一点可以用相对于你当前地点的三个位移值来呈现(左右,前后,上下位移)。因此向量集R3可以呈现世界上的任意一点。

举不同的例子,我们假定用高,宽,和颜色来描述猫。则视频游戏猫可以用R3向量来表示。

                    

这种表示通常称为特征化(featurization)。即特征化是用向量表示真实世界中的一个实体。几乎所有的机器学习算法都操作向量或张量。因此,特征化的过程是机器学习管线的重要部分。通常,特征化系统是机器学习系统中最为复杂的部分。假如我们有图2-5所示的苯酚分子。

                        

图2-5. 苯酚分子的表示.

我们要如何将这个分子式转换为适合机器学习系统查询的向量呢?有多种可能的方案,大部分方案使用分子片断。用 1/0二值向量 ( 0, 1n)标记特定的片断的存在与否。这个过程用图Figure 2-2表示

                   

图 2-2. 用于特征化的片断的选择(那些包含OH)。这些片断被哈希到固定长度的向量的索此中。这些位置被设置为1而其它位置设置为零。注意,这个过程听起来很复杂。实际上构建机器学习系统最为困难的是确定如何将数据转换为张量形式。对于某些数据,这种转换是很显然的。而对于别的数据(如分子式),转换很复杂。对于机器学习的实践者,没有必要发明新的特征化方法因为学术文献里有现存的,但是有必要读研究论文来理解转换数据流的最佳实践。

现在我们已经确定rank-0张量为标量 (R)以及rank-1张量为向量 (Rn),那 rank-2张量是什么呢? 习惯上,rank-2张量是matrix:

                           

这个矩阵有2行和2列。这种矩阵的集合称为R2 × 2。返回到前面张量形状的标记,这种矩阵的形状为(2, 2)。习惯上,矩阵用来表示向量的变换。例如,在一个平面上旋转一个向量一个角度 α可以用矩阵来进行

                      

为了理解这一点,我们记x单位向量 (1, 0)被矩阵乘转换为向量(cos (α), sin (α))。 (我们后面讲矩阵乘的定义,现在只简单的讲结果)。

                    

这种变换可以用图形展示。图2-3展示原始的单位向量旋转后的最终向量。

               

图2-3. 单位元的位置用cosine和sine参数化。

前面我们介绍了标量为rank-0 张量,向量为rank-1张量,矩阵为rank-2 张量。那么rank-3 张量是什么?在给出定义之前,想一下标量,向量,矩阵的共性是有帮助的。标量是一个数,向是多个数的列素。要找到向量里的某个数,需要知道它的索引。因此需要给向量一个索引元素(也是rank-1张量)。矩阵是多个数组成的表。要找到矩阵中的元素需要知道它所在的行和列。回此需要二个索引元素(也是 rank-2 张量)。很自然, rank-3张量是有三个索引元素的多个数的集合。把rank-3张量想像为长方体是很有帮助的,如图2-4所示。

图 2-4.一个rank-3张量可以看作多个数组成的长方体.

图中rank-3张量 T的形状为 (N, N, N)。可以通过指明 (i, j, k)作为索引得到任意元素。

张量与形状之间存在一定的联系。一个rank-1张量有一个维素数为1的形状,一个rank-2 张量有一个维数为2的形状,一个rank-3张量有一个维数为3的形状。你会抗议,这与我们前面讨论的行向量和列向量相反。通过我们的定义,列向量的形状为(n, 1)。这不是让列向量成为rank-2张量 (或矩阵吗)? 正是这样。记住不指明行向量或列向量的向量的形状为 (n)。当我们指明一个向量是行向量或列向量时,我们实际上指明了将向量转为矩阵的方法。

这种类型的维扩展是张量操作的一个常见技巧。 注意,另一种想像rank-3 张量的方法是把它当作相同形状的矩阵的列表。假如W是形状为(n, n)的矩阵,则张量Tijk = W1, ⋯,Wn 包含n个矩阵W注意黑白图像可以表示为rank-2张量。假如我们有224 × 224-像素的黑白图像。则pixel (i, j)为1/0 以编码黑/白像素。黑白图像可以用形状为 (224, 224)的矩阵表示。现在考虑一个224 × 224 的彩色图像,指定像素的色彩用三个独立的RGB通道表示,即pixel (i, j)表示为元组 (r, g, b)来编码这像素的红、绿、蓝的多少。 r, g, b是从0 到255的整数。现在彩色图像可以用形状为 (224, 224, 3)的rank-3张量表示。继续分析,考虑彩色视频。假如视频的每一帧是224 × 224的彩色图像,则一分钟视频 ( 60 fps)是形状为 (224, 224, 3, 3600)的rank-4张量。进一步,10个这样的视频形成形状为 (10, 224, 224, 3,3600)的 rank-5张量。通常,张量可以方便的表示数值数据。实践中,大于rank-5 的张量很少见,但是设计允许任意张量的张量系统是明智的,因为聪明的用户总会遇到设计者不会考虑到的情况。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flume 安装与配置步骤

1.解压 tar -zxvf apache-flume-1.9.0-bin.tar.gz 2.配置环境变量 vim /etc/profile export FLUME_HOME/home/wang/soft/flume/apache-flume-1.9.0-bin export PATH$PATH:$FLUME_HOME/bin source /etc/profile 3.创建必要的目录 mkdir -p $FLUME_HOME/conf 4.创建 Flume 配置文…

还原线上 WebView 异常:手机端APP远程调试

前端调试总被理解为开发阶段的事,但在实际项目中,真正困难的调试往往发生在产品上线之后。用户反馈“看不到内容”、“一直转圈”、“点了没反应”,而开发环境无法复现,测试机也正常运行,这时怎么定位、验证和解决问题…

102页满分PPT | 汽车设备制造业企业信息化业务解决方案智能制造汽车黑灯工厂解决方案

这份文档是一份汽车设备制造业企业信息化业务解决方案,详细阐述了企业从生产到销售的全流程信息化建设。针对企业目前手工管理为主、信息化程度低、数据追溯困难等问题,提出了建立统一信息化平台的目标,涵盖财务、业务、流程和数据的整合。方…

SQLite 表达式详解

SQLite 表达式详解 引言 SQLite 是一个轻量级的数据库,广泛用于移动设备和桌面应用程序。SQLite 的表达式是 SQL 语句的核心,它们用于查询、更新和删除数据库中的数据。本文将详细解释 SQLite 的各种表达式,并探讨它们在数据库操作中的重要性。 表达式概述 在 SQLite 中…

沉浸式AI交互数字人技术解析

360智汇云沉浸式AI交互数字人支持开发者灵活接入和私有化部署大模型服务,构建面向业务场景的实时音视频交互能力。系统集成了360智汇云自研的沉浸式AI交互数字人引擎与高性能 RTC 模块,保障音视频传输过程中的低延迟、高稳定性和高并发承载能力&#xff…

HarmonyOS 评论回复弹窗最佳实践

HarmonyOS 评论回复弹窗最佳实践 前言 在移动应用开发中,评论回复功能是一个常见且重要的交互场景。本文将详细介绍如何在 HarmonyOS 中实现一个功能完善的评论回复弹窗,包括弹窗选型、富文本编辑、软键盘适配等关键技术点。 功能概述 我们要实现的评…

Git 回退操作详解:带示例的“小白”指南

前言 在日常开发中,我们难免会遇到: 改错代码:推送之前才发现某些行根本就不该动提交错误:commit 信息打错、提交到错误分支想回到之前版本:测试时发现之前版本是好的,需要回去查看 这就需要用到 Git 的…

redux以及react-redux

1.redux案例完整版 上一篇文章我们是没有action文件,直接在countre组件与store以及reducer直接进行状态的改变以及展示。 下面我们加上action文件,我们就不能直接通过dispatch传,而是通过调用action里面的函数讲我们传入的参数变成action这种…

idea中配置svn及提交提示“未检测到更改”提示

首先要安装TortoiseSVN,选command line client tools; 在idea中,文件->设置->Subversion->如下图 文件->设置->目录映射->如下图 初次导入到svn, 输入服务器上的svn地址,等待成功即可;…

vue 实现dot-dropdown

<template><div class"app-container"><div class"mt30"></div><el-row :gutter"20"><!-- title --><!-- <div class"modt-box">导航管理</div> --><el-col :span"2&q…

使用 mysql2/promise 模块返回以后,使用 await 返回数据总结

SELECT 返回结构 const [rows, fields] await db.query(SELECT * FROM folders);返回&#xff1a; rows: 是一个数组&#xff0c;包含所有查到的记录。fields: 是字段的结构定义&#xff08;列信息&#xff09;&#xff0c;一般不用。 rows 是一个数组&#xff0c;包含所有…

Manus Metagloves pro高精度+无漂移+低延迟 ,重构VR/XR手部交互方式

manus metagloves pro是一款专为动画制作、虚拟现实及游戏开发打造的高精度无线动作捕捉手套。采用先进的Quantum追踪技术&#xff0c;实现毫米级动作捕捉&#xff0c;精准还原手指细节&#xff0c;显著提升创作效率与交互真实感。 MANUS Metagloves Pro解锁动捕 / 机器人 / XR…

Uniapp插件改造指南:如何让vue-plugin支持HarmonyOS5原生能力?

一、分层架构设计 采用通用逻辑与平台实现分离的三层结构&#xff1a; uni-plugin-harmony ├── common # 跨平台通用层 │ ├── interfaces # 能力接口抽象&#xff08;如Scanner.ets&#xff09; │ └── utils # 工具类 ├── harmony …

P1040 [NOIP 2003 提高组] 加分二叉树 题解

题目描述 设一个 n n n 个节点的二叉树 tree \text{tree} tree 的中序遍历为 ( 1 , 2 , 3 , … , n ) (1,2,3,\ldots,n) (1,2,3,…,n)&#xff0c;每个节点都有一个分数&#xff08;均为正整数&#xff09;。任一棵子树 subtree \text{subtree} subtree&#xff08;包含 tr…

【Golang面试题】Data Race 问题怎么检测?

Go Race Detector 深度指南&#xff1a;原理、用法与实战技巧 一、什么是数据竞争&#xff1f; 在并发编程中&#xff0c;数据竞争发生在两个或多个 goroutine 同时访问同一内存位置&#xff0c;且至少有一个是写操作时。这种竞争会导致不可预测的行为和极其难以调试的问题。…

257. 二叉树的所有路径(js)

257. 二叉树的所有路径——DFS 回溯&#xff08;js&#xff09; 题目描述解题思路完整代码时间复杂度分析 题目描述 257. 二叉树的所有路径 解题思路 题意理解 给定一棵二叉树&#xff0c;要求返回所有从根节点到叶子节点的路径&#xff0c;路径以字符串形式表示&#xff0c…

自动化文档生成工具(亲测可运行)

本文介绍了一个用Java编写的自动化文档生成工具&#xff0c;通过读取开发清单文本自动生成格式规范的Word文档。该工具的主要特点包括&#xff1a; 采用Apache POI库处理Word文档&#xff0c;支持多级标题和段落自动生成实现中文数字转换功能&#xff0c;将编号转换为"一、…

湖北理元理律师事务所债务优化模型:法律与生活的平衡之道

在债务重组领域&#xff0c;专业机构需同时解决两个矛盾&#xff1a;法律合规性与债务人可持续生存能力。湖北理元理律师事务所通过“三维干预模型”&#xff0c;在武汉某餐饮连锁企业债务危机中验证了该方案的有效性。 一、法律底层设计&#xff1a;还款方案的合法性审查 以该…

Web3-代币ERC20/ERC721以及合约安全溢出和下溢的研究

Web3-代币ERC20/ERC721以及合约安全溢出和下溢的研究 以太坊上的代币 如果你对以太坊的世界有一些了解&#xff0c;你很可能听人们聊过代币— ERC20代币 一个 代币 在以太坊基本上就是一个遵循一些共同规则的智能合约——即它实现了所有其他代币合约共享的一组标准函数&…

论文笔记 <交通灯><多智能体>MetaLight:基于价值的元强化学习用于交通信号控制

今天看的论文是这篇MetaLight:基于价值的元强化学习用于交通信号控制 里面提到的创新点就是MetaLight框架&#xff1a;他目标是让交通信号控制智能体&#xff08;Agent&#xff09;在新路口&#xff08;即使结构或流量模式不同&#xff09;上能​​快速学习​​&#xff08;Few…