TensorFlow基本操作1
重点函数
查看 tensor 数据类型:
a.dtype
a.dtype
//通过访问张量的 dtype 成员属性可以判断张量的保存精度
tensor 数据类型转换:
tf.cast()
tf.device()
a.cpu()
a.gpu()
tf.cast(a, tf.double)
// 数据类型转换
// a 待转换的数据, tf.double 转换到的数据类型
tf.device("cpu")
tf.device("gpu")
a.device
//查看 tensor 所在的设备
a.cpu()
a.gpu()
查看 tensor 形状:
a.shape
a.ndim
a.shape
// 看一个 tensor 的 shape
a.ndim
// 看一个 tensor 的 维度
判断是否是 tensor :
tf.is_tensor()
tf.is_tensor(a)
// 判断是否是 tensor
1 数据类型
1.1 数值类型
标量(Scalar) 1.1 (dim=0)
向量(Vector) [1.1] (dim=1)
[1.1,1.2,1.3,...]
矩阵(Matrix) [[1 2]
[3 4]]
tensor: rank>2
1.2 字符串类型
除了丰富的数值类型外,TensorFlow 还支持字符串(String)类型的数据,例如在表示图 片数据时,可以先记录图片的路径,再通过预处理函数根据路径读取图片张量。通过传入 字符串对象即可创建字符串类型的张量
1.3 布尔类型
需要注意的是,TensorFlow 的布尔类型和 Python 语言的布尔类型并不对等,不能通用
2 数值精度
2.1 读取精度
通过访问张量的 dtype 成员属性可以判断张量的保存精度
a.dtype
2.2 类型转换
系统的每个模块使用的数据类型、数值精度可能各不相同,对于不符合要求的张量的类型及精度,需要通过 tf.cast
函数进行转换:
In [16]:
a = tf.constant(np.pi, dtype=tf.float16) tf.cast(a, tf.double)
Out[16]:
<tf.Tensor: id=44, shape=(), dtype=float64, numpy=3.140625>
进行类型转换时,需要保证转换操作的合法性,例如将高精度的张量转换为低精度的张量 时,可能发生数据溢出隐患:
In [17]:
a = tf.constant(123456789, dtype=tf.int32) tf.cast(a, tf.int16)
Out[17]:
<tf.Tensor: id=38, shape=(), dtype=int16, numpy=-13035>
布尔型与整形之间相互转换也是合法的,是比较常见的操作:
In [18]:
a = tf.constant([True, False]) tf.cast(a, tf.int32)
Out[18]:
<tf.Tensor: id=48, shape=(2,), dtype=int32, numpy=array([1, 0])>
一般默认 0 表示 False,1 表示 True,在 TensorFlow 中,将非 0 数字都视为 True:
In [19]:
a = tf.constant([-1, 0, 1, 2]) tf.cast(a, tf.bool)
Out[19]:
<tf.Tensor: id=51, shape=(4,), dtype=bool, numpy=array([ True, False, True,
True])>