tensorflow-编程基础之基础类型定义及操作函数

学习基础类型定义及操作函数,以期能使用TensorFlow编写代码

张量及操作

张量可以说是TensorFlow的标志,因为整个框架的名称TensorFlow就是张量流的意思。

张量介绍

TensorFlow程序使用tensor数据结构来代表所有的数据。计算图中,操作间传递的数据都是Tensor。
可以把tensor看作一个n维的数组或者列表,每个tensor中包含了类型(type)、阶(rank)和形状(shape)。

  1. tensor类型
    tensor类型与python类型对比如下:
tensor类型 python类型 描述
DT_FLOAT tf.float32 32位浮点数
DT_DOUBLE tf.float64 64位浮点数
DT_INT64 tf.int64 64位有符号整型
DT_INT32 tf.int32 32位有符号整型
DT_INT16 tf.int16 16位有符号整型
DT_INT8 tf.int8 8位有符号整型
DT_UINT8 tf.uint8 8位无符号整型
DT_STRING tf.string 可变长度的字节数组,每一个张量元素都是一个字节数组
DT_BOOL tf.bool 布尔型
DT_COMPLEX64 tf.complex64 由两个32位浮点数组成的复数:实数和虚数
  1. rank(阶)
    rank(阶)指的就是维度。但张量的阶和矩阵的阶并不是同一个概念,主要是看有几层中括号。例如,对于一个传统意义上的3阶矩阵a=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]来讲,在张量中的阶数表示为2阶(因为它有两层中括号)。
    标量、向量、矩阵的阶数:
rank 实例 例子
0 标量(只有大小) a = 1
1 向量(大小和方向) b = [1, 1, 1, 1]
2 矩阵(数据表) C = [[1, 1], [1, 1]]
3 3阶张量(数据立体) D = [[[1], [1]], [[1], [1]]]
n n阶 E = [[[[[[…[[1],[1],]]]…]]]]] (n层中括号)
  1. shape(形状)
    shape(形状)用于描述张量内部的组织关系。’形状’可以通过python中的整型列表或元组(int list或tuples)来表示,也可以用TensorFlow中的相关形状函数来表示。例如:一个二阶张量a = [[1, 2, 3], [4, 5, 6]] 形状是两行三列,描述为(2, 3)

张量相关操作

  • 类型转换
函数 描述
tf.string_to_number(string_tensor, out_type=None,name=None) 字符串转为数字
tf.to_double(x,name=’ToDouble’) 转为64位浮点类型
tf.to_float(x,name=’ToFloat’) 转为32位浮点类型
tf.to_int32(x,name=’ToInt32’) 转为32位整型
tf.to_int64(x,name=’ToInt64’) 转为64位整型
tf.cast(x,dtype,name=None) 将x或者x.values转换为dtype所指定的类型。例如:W=tf.Variable(1.0), tf.cast(W, tf.int32) ===> W=1 # dtype=tf.int32
  • 数值操作
函数 描述
tf.ones(shape,dtype) 按指定类型与形状生成值为1的张量,如:tf.ones([2,3], tf.int32) ===> [[1 1 1]][1 1 1]]
tf.zeros(shape,dtype) 按指定类型与形状生成值为0的张量,如:tf.zeros([2,3], tf.int32) ===> [[0 0 0][0 0 0]]
tf.ones_like(input) 生成一个和输入的张量一样形状和类型的0,如:tensor=[[1,2,3],[4,5,6]] tf.ones_like(tensor) ===> [[0 0 0][0 0 0]]