tensorflow数据模型——张量

1.张量的概念

从功能角度看,张量(tensor)可以简单理解为多维数组。
零阶张量表示标量(scalar),即一个数;
第一阶张量为向量(vector),即一个一维数组;
第n阶张量可以理解为一个n维数组。

但是张量在tensorflow中并不是直接采用数组的形式,它只是对tensorflow中计算结果的引用。
在张量中并没有真正保存数字,它保存的是如何得到这些数字的计算过程。

tensorflow计算的结果不是一个具体的数字,而是一个张量的结构。

示例:

import tensorflow as tf

#tf.constant是一个计算,这个计算的结果是一个张量,保存在a中
a = tf.constant([1.0,2.0],name="a")
b = tf.constant([2.0,3.0],name="b")
result = a + b

print (result)
'''
输出:
Tensor("add:0",shape=(2,0),dtype=float32)
'''

从运行结果可以看出:一个张量主要保存三个属性——名字(name)、维度(shape)、类型(type)
(1)名字(name)
名字是张量的唯一标识符。张量的命名可以通过“node:src_output”的形式给出。
其中node为节点名称,src_output表示当前张量来自节点的第几个输出。
比如上面打印的“add:0”,说明result这个张量是计算节点“add”输出的第一个结果(编号从0开始)

(2)维度(shape)
比如上面的shape=(2,),说明result是一个一维数组,这个数组的长度为2。

(3)类型(type)
每一个张量有唯一的类型。如果不指定类型,比如不带小数点的数会被默认为int32,带小数点的会默认为float32。

tensorflow支持14种不同的类型:
	实数(tf.float32、tf.float64)
	整数(tf.int8、tf.int16、tf.int32、tf.int64、tf.unit8)
	布尔型(tf.bool)
	复数(tf.complex64、tf.complex128)

2.张量的使用

张量的使用主要分为两大类:
(1)第一类用途是对中间计算结果的引用。
示例:

import tensorflow as tf

	#使用张量记录中间的结果
	a = tf.constant([1.0,2.0],name="a")
	b = tf.constant([2.0,3.0],name="b")
	result = a + b

	#直接计算向量的和,但是这样可读性差
	result = tf.constant([1.0,2.0],name="a") + b = tf.constant([2.0,3.0],name="b")

(2)第二类用途是当计算图构造完成后,张量可以通过会话(Session)得到真实的数字。

3.张量的形状

shape——描述了张量的维数和每一维的长度。
张量的形状可以是包含有序整数集的列表(list)或元组(tuple)。

like:列表[2,3]描述了一个2阶张量的形状,其中第一维长度是2,第2维长度是3.

张量还可以用None作为某一维的值,使之具有可变长度。此外,将形状指定为None(而非使用包含None的列表或元组)将
通知Tensorflow允许一个张量为任意形状,即张量可拥有任意维数,且每一维都可具有任意长度。

-*-如果需要在数据流图的中间获取某个张量的形状,可以使用tf.shape(),它的输入是tensor对象,输出是一个int32类型的向量。

注意:与其他Op一样,tf.shape只能通过Session对象得到执行。

猜你喜欢

转载自blog.csdn.net/weixin_43202635/article/details/83961489