tensorflow的特点 tensor

TF2 基础 (2) : Tensor 介绍 本文是对 官方文档的学习笔记 。
【tensorflow的特点 tensor】 Tensor 的特点:
这是一个 0 阶 Tensor,没有“轴”
一阶 Tensor 类似一个 List,有一个“轴”
二阶 Tensor 类似一个 Matrix ,有两个“轴”
高阶 Tensor,这是个 3阶 Tensor ,shape 是 [3, 2, 5]
注意:shape 的规则,最内部的数据个数,在最后边 。比如上例,它的shape 是 [3, 2, 5],意思是最内部的数组(不再包含其他数组)所包含的元素是 5个,次内部的数组,每个包含2个元素,以此类推 。
对于一般的 Tensor 来说tf.Tensor(之前我们讨论的) 要求内部数据形状必须是矩形 (所有轴上的数据长度相等),但也有比较特殊的Tensor ,支持不规则数据形状 。
Tensor支持常见的数学运算
关于 Tensor 的词汇
关于这一段,原文里面大部分说的很抽象,没啥指导意义 。倒是这张图,还有其中的一句话比较有意义 。右边的数值,更加local ,而且在内存上距离更近 。比如上面图所示,右边的feature 就表示一个sample 的中的feature ,他们之间距离更近 。
TensorFlowindex 规则:
把 [3,1] shape 转换成 Python list:as_list
reshape是转换Tensor shape 的最简单的方式
reshape 以后,Tensor 对象会更新,新的Tensor 还指向相同的数据(The data maintains its layout in memory and a new tensor is created, with the requested shape, pointing to the same data. )
用:tf.reshape(some_tensor, [-1])
reshape一般用于增加、减少一个维度 。对于上面 3* 2 * 3 Tensor 的例子,减少维度的例子:
如下,改变轴的顺序应该用tf.transpose
有人称为是动态形状 Tensor
广播是从NumPy中的等效功能中借用的概念 。简而言之,在某些情况下,在对它们进行组合操作时,较小的张量会自动“拉伸”以适合较大的张量 。
最简单和最常见的情况是尝试将张量乘或加到标量时 。在这种情况下,标量被广播为与其他自变量相同的形状 。
在大多数情况下,广播既节省时间又节省空间,因为广播操作永远不会实现内存中扩展的张量 。
注意,这不和上面广播不一样,broadcast_to 产生的新 Tensor 并不会节约内存 。
TF2 中很多函数都会要求参数是 Tensor ,如果参数不是 Tensor 则会调用 convert_to_tensor来做转换 。有些类型,比如 ndarray,TensorShape,Python list,tf.Variable 已经“注册”了,他们可以自动转换成 Tensor 。对于自定义类型,可以tf.register_tensor_conversion_function来注册转换函数 。
沿某个轴具有可变数量元素的张量称为“Ragged Tensors” 。使用 tf.ragged.RaggedTensor处理不整齐的数据 。
例如
普通 Tensor 处理不了长短不一的情况
tf.string是dtype,也就是说您可以将数据表示为张量中的字符串(可变长度字节数组) 。
这些字符串是原子的,无法像Python字符串那样被索引 。字符串的长度不是张量的轴之一 。有关操作它们的功能,请参见tf.strings。
在上面的打印输出中,b前缀表示tf.string dtype不是unicode字符串,而是字节字符串 。有关在TensorFlow中处理Unicode文本的更多信息,请参见Unicode教程 。
如果传递unicode字符,则它们是utf-8编码的 。
可以在tf.strings中找到一些带有字符串的基本功能,包括tf.strings.split 。
其他更多关于 String Tensor ,可以参考string_tensors
Sparse tensors 用来存储稀疏矩阵类型的数据 。

tensorflow的特点 tensor

文章插图
tensor 与 vector 有什么区别张量积(tensor
product)
,可以应用于不同的上下文中如向量、矩阵、张量、向量空间、代数、拓扑向量空间和模 。在各种情况下这个符号的意义是同样的:
最一般的双线性运算 。在某些上下文中也叫做外积 。tensor是矩阵分析里面的张量,表示高维数组,或者叫多路数据 。二阶张量就是矩阵,一阶张量就是向量 。高阶SVD相对于矩阵SVD更能提取出高维数据的内在结构 。
Vector
类在
java
中可以实现自动增长的对象数组;
vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库 。
(1)
矢量:具有方向性的量 。
(2)
编程语言方面:vector是C++标准模板库中的部分内容,中文偶尔译作“容器”,但并不准确 。它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库 。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据 。

秒懂生活扩展阅读