数据模型——Tensor
* 在TensorFlow中,所有的数据都通过张量的形式来表示
* 从功能的角度,张量可以简单理解为多维数组
零阶张量表示标量(scalar),也就是一个数;
一阶张量为向量(vector),也就是一维数组;
n阶张量可以理解为一个n维数组;
* 张量并没有真正保存数字,它保存的是计算过程
张量的属性
Tensor("Add:0", shape=(), dtype=float32)
- 形状( shape)
张量的维度信息, shape=() ,表示是标量 - 类型( type)
每一个张量会有一个唯一的类型
TensorFlow会对参与运算的所有张量进行类型的检查,发现类型不匹配时会报错
import tensorflow as tf
node = tf.constant([[4.0,1.0],[5.0,2.5]],tf.float32)
print(node.shape()) #输出矩阵的长和宽
print(node.dtype()) #输出元素类型
张量形状
三个术语描述张量的维度: 阶(rank)、 形状(shape) 、 维数(dimension number)
张量形状
由上面我们知道一阶形状是一维数组,二阶为二维数组,我们接下来讨论判断三阶形状的方法,并以此类推:
import tensorflow as tf
node = tf.constant([[[1],[2],[3]],[[4],[5],[6]],[[7],[8],[9]]])
#也可以print(node.get_shape()) 输出形状
print(node.shape)
运行输出:
最外层有三个[[[可知是一个三维数组,这个三维数组里面有三个二维数组,一个二维数组里面有三个一维数组,一个一维数组里面只有一个元素,因此形状为(3,3,1)
获取张量的元素
- 阶为1的张量等价于向量;
- 阶为2的张量等价于矩阵,通过t[i,j] 获取元素;
- 阶为3的张量,通过t[i,j,k] 获取元素;
例如:
import tensorflow as tf
node = tf.constant([[[1],[2],[3]],[[4],[5],[6]],[[7],[8],[9]]])
with tf.Session() as sess :
print(sess.run(node)[1,1,0]) #输出5
输出:
元素5位于三维数组的第一个二维数组(从0开始数)[[4],[5],[6]],这二维数组中的第一个一维数组[5],这个一维数组中的第0个数
对与Tensorflow的可视化理解
参考博文:https://blog.csdn.net/holmes_mx/article/details/82813865