tensorflow---之张量的理解

自己通过网上查询的有关张量的解释,稍作整理。

TensorFlow用张量这种数据结构来表示所有的数据.你可以把一个张量想象成一个n维的数组或列表.一个张量有一个静态类型和动态类型的维数.张量可以在图中的节点之间流通.

在TensorFlow系统中,张量的维数来被描述为阶.但是张量的阶和矩阵的阶并不是同一个概念.张量的阶(有时是关于如顺序或度数或者是n维)是张量维数的一个数量描述.比如,下面的张量(使用Python中list定义的)就是2阶.

    t = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

你可以认为一个二阶张量就是我们平常所说的矩阵,一阶张量可以认为是一个向量.对于一个二阶张量你可以用语句t[i, j]来访问其中的任何元素.而对于三阶张量你可以用't[i, j, k]'来访问其中的任何元素.

数学实例 Python 例子
0 纯量 (只有大小) s = 483
1 向量(大小和方向) v = [1.1, 2.2, 3.3]
2 矩阵(数据表) m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
3 3阶张量 (数据立体) t = [[[2], [4], [6]], [[8], [10], [12]], [[14], [16], [18]]]
n n阶 (自己想想看) ....

张量是所有深度学习框架中最核心的组件,因为后续的所有运算和优化算法都是基于张量进行的。几何代数中定义的张量是基于向量和矩阵的推广,通俗一点理解的话,我们可以将标量视为零阶张量,矢量视为一阶张量,那么矩阵就是二阶张量。

举例来说,我们可以将任意一张RGB彩色图片表示成一个三阶张量(三个维度分别是图片的高度、宽度和色彩数据)。如下图所示是一张普通的水果图片,按照RGB三原色表示,其可以拆分为三张红色、绿色和蓝色的灰度图片,如果将这种表示方法用张量的形式写出来,就是图中最下方的那张表格。

这里写图片描述

这里写图片描述

图中只显示了前5行、320列的数据,每个方格代表一个像素点,其中的数据[1.0, 1.0, 1.0]即为颜色。假设用[1.0, 0, 0]表示红色,[0, 1.0, 0]表示绿色,[0, 0, 1.0]表示蓝色,那么如图所示,前面5行的数据则全是白色。

将这一定义进行扩展,我们也可以用四阶张量表示一个包含多张图片的数据集,其中的四个维度分别是:图片在数据集中的编号,图片高度、宽度,以及色彩数据。

总结:

1.我们可以将张量理解为数组

2.我们指的tensorflow是用数据流图来进行计算的,tensor可以在数据流图中流动

3.如果在sess.run(op)之前,print(op),得到的只会是一个张量:

如下所示:
例如:

import tensorflow as tf
t = tf.add(8,9)
print(t)
output:("Add_1:0",shape=(),dtype=int32)


if sess:

import tensorflow as tf
t = tf.add(8,9)
sess = tf.session()
print(sess.run(t))
output:17

4.一个节点可以有多个输入张量也可以有多个输出张量,例如上面的第一个0表示,这个节点的第一个输出,如果是这个节点有多个输出的话,可能后面的其他数值会是0,1,2,3分别表示节点的第一个第二个第三个第四个输出

5.为什么要使用tensor?:使用数据流图(符号式编程),相比于命令式编程,速度更快

转载:https://blog.csdn.net/pandamax/article/details/63684633

猜你喜欢

转载自blog.csdn.net/zxyhhjs2017/article/details/81261596