Tensorflow实战学习(四)【张量表示、类型、形状、计算】

张量是N维矩阵抽象。一维张量是向量。二维张量是矩阵,三维或以上称N维张量或N阶张量。

输入节点,从接收标量,改为接收向量。.reduce_prod()创建归约乘积Op。reduce_sum()创建归约求和Op。

    import tensorflow as tf
    a = tf.constant([[[1,2,3],[4,5,6]],[[7,8,9],[1,2,3]]], name="input_a")
    b = tf.reduce_prod(a, name="prod_b")#定义节点b,创建归约乘积Op,接收一个N维张量输入,输出张量所有分量(元素)的乘积,以prod_b标识。
    c = tf.reduce_sum(a, name="sum_c")#定义节点c,创建归约求和Op,接接收一个N维张量输入,输出张量所有分量(元素)的求和,以sum_c标识。
    d = tf.add(b,c, name="add_d")
    sess = tf.Session()
    out = sess.run(d)
    writer = tf.summary.FileWriter('./my_graph', sess.graph)
    writer.close()
    sess.close()

TensorFlow可接收Python数值、布尔值、字符串、数组。单个数值转化为0阶张量(标量)。数值列表转化为1阶张量(向量)。由列表构成的列表转化为2阶张量(矩阵)。
TensorFlow数据类型:float32、float64、int8、int16、int32、int64、uint8、string、bool、cpmples64(实部32位虚部32位的64位复数)、qint8(有符号用于量化Op)、qint32、quint8(无符号用于量化Op)。

NumPy专为操作N维数组设计的科学计算软件包,是数据科学通用语言。TensorFlow数据类型基于NumPy。任何NumPy数组都可以传递给TensorFlow Op。指定所需数据类型代价最小。NumPy没有与tf.string字符串精确对应的数据类型。TensorFlow可以导入NumPy的字符串数组,但不能在NumPy中显式指定dtype属性。Session.run()方法返回的张量都是NumPy数组。不要用TensorFlow的数据类型初始化NumPy数组。推荐用NumPy手工指定Tensor对象。
张量Shape属性,表示张量的维(阶)数和每一维的长度。张量形状是包含有序整数集的列表(list)或元组(tuple)。元素数量即维数,元素数值即每一维的长度。.shape()创建获取张量形状Op。

    import tensorflow as tf
    #指定0阶张量(标量)形状
    s_0 = 1
    #指定1阶张量(向量)形状
    s_1_list = [1,2,3]
    s_1_tuple = (1,2,3)
    #指定2阶张量(矩阵)形状
    s_2 = [[2,3],[2,3]]
    #指定任意维数任意长度的张量形状
    s_any = None
    shape = tf.shape(s_2, name="mystery_shape")#创建获取张量形状Op,接收一个张量,输出张量形状,以mystery_shape标识。
    sess = tf.Session()
    sess.run(shape)

Operation,Op,Tensor对象运算节点,返回张量。在Python中调用创建Op的构造方法,传入所需所有Tensor输入,以及正确创建Op所需属性,返回创建Op的输出(张量)句柄。name属性用描述性字符串指代Op。

运算符重载,为了使运算更加简洁。运算符有一个或多个操作对象为Tensor对象,TensorFlow Op被调用,添加到数据流图。-x,.neg(),x中每个元素的相反数。~x,.logical_not(),x中每个元素的逻辑非,只适用dtype为tf.bool的Tensor对象。abc(),.abs(),x中每个元素的绝对值。x+y,.add(),x、y逐元素相加。x-y,.sub(),x、y逐元素相减。x-y,.sub(),x、y逐元素相减。x*y,.multiply(),x、y逐元素相乘。x/y,.div(),x、y逐元素相除,整数张量执行整数除法,浮点数张量执行浮点数除法。x%y,.mod(),逐元素取模。x**y,.pow(),x逐元素为底,y逐元素为指数的幂。x,.less(),逐元素计算x真值。x<=y,.less_equal(),逐元素计算x<=y真值。x>y,.greater(),逐元素计算x>y真值。x>=y.greater_equal(),逐元素计算x>=y真值。x&y,.logical_and(),逐元素计算x&y真值,元素dtype必须为tf.bool。x|y,.logical_or(),逐元素计算x|y真值,元素dtype必须为tf.bool。x^y,.logical_xor(),逐元素计算x^y真值,元素dtype必须为tf.bool
运算符重载无法为Op指定name。==判断两个Tensor对象名是否引用同一个对象。.equal()和.not_equal()判断张量值是否相同。

参考资料:
《面向机器智能的TensorFlow实践》

你可能感兴趣的:(Tensorflow实战学习(四)【张量表示、类型、形状、计算】)