一、Python 原生类型
TensorFlow接受了Python自己的原生数据类型,例如Python中的布尔值类型,数值数据类型(整数,浮点数)和字符串类型。单一值将转换为0维张量(标量),列表值将转换为1维张量(向量),列表套列表将被转换成2维张量(矩阵)等等,以下示例来自于TensorFlow for Machine Intelligence.
代码语言:javascript复制t_0 = 19 # Treated as a 0-d tensor, or "scalar"
tf.zeros_like(t_0) # ==> 0
tf.ones_like(t_0) # ==> 1
t_1 = [b"apple", b"peach", b"grape"] # treated as a 1-d tensor, or "vector"
tf.zeros_like(t_1) # ==> [b'' b'' b'']
tf.ones_like(t_1) # ==> TypeError
t_2 = [[True, False, False],
[False, False, True],
[False, True, False]] # treated as a 2-d tensor, or "matrix"
tf.zeros_like(t_2) # ==> 3x3 tensor, all elements are False
tf.ones_like(t_2) # ==> 3x3 tensor, all elements are True
二、TensorFlow原生类型
就像Numpy一样,TensorFlow也有属于自己的数据类型,你会在TensorFlow中看到诸如tf.int32, tf.float32除了这些之外,还有一些很有意思的数据类型例如tf.bfloat, tf.complex, tf.quint.下面是全部的TensorFlow数据类型,截图来自tf.DType
三、Numpy数据类型
你可能已经注意到了Numpy和TensorFlow有很多相似之处。TensorFlow在设计之初就希望能够与Numpy有着很好的集成效果。Numpy软件包现在已经成为数据科学的通用语言。
TensorFlow数据类型很多也是基于Numpy的,事实上,如果你令 np.int32==tf.int32将会返回True.你也可以直接传递Numpy数据类型直接给TensorFlow中的ops。
代码语言:javascript复制tf.ones([2, 2], np.float32) ==> [[1.0 1.0], [1.0 1.0]]
请记得,我们的好朋友tf.Session.run(),要求的输入对象是一个Tensor但是它的输出是一个Numpy数组。事实上,在绝大多数场合,你可以同时使用TensorFlow类型和Numpy类型。