一、Python 原生类型

    TensorFlow接受了Python自己的原生数据类型,例如Python中的布尔值类型,数值数据类型(整数,浮点数)和字符串类型。单一值将转换为0维张量(标量),列表值将转换为1维张量(向量),列表套列表将被转换成2维张量(矩阵)等等,以下示例来自于TensorFlow for Machine Intelligence.

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

TensorFlow中的数据类型_python

三、Numpy数据类型

     你可能已经注意到了Numpy和TensorFlow有很多相似之处。TensorFlow在设计之初就希望能够与Numpy有着很好的集成效果。Numpy软件包现在已经成为数据科学的通用语言。

    TensorFlow数据类型很多也是基于Numpy的,事实上,如果你令 np.int32==tf.int32将会返回True.你也可以直接传递Numpy数据类型直接给TensorFlow中的ops。

tf.ones([2, 2], np.float32) ==> [[1.0 1.0], [1.0 1.0]]

请记得,我们的好朋友tf.Session.run(),要求的输入对象是一个Tensor但是它的输出是一个Numpy数组。事实上,在绝大多数场合,你可以同时使用TensorFlow类型和Numpy类型。