TF张量类型和运算

作者: 焜俞 | 来源:发表于2020-03-19 16:18 被阅读0次

    TF张量类型和运算

    TensorFlow有一些基础的数据类型和对数据的运算,我们来进行简单介绍

    本节目录

    • TF数据类型
    • TF数学运算

    数据类型

    TF的数据基础是张量,零维的张量是一个标量(Scalar),二维张量是一个向量,三维张量是一个矩阵,随之还有四维甚至更高维度张量。

    通常我们使用tf.constant(value, dtype=None, shape=None, name='Const')创建一个普通张量,value是张量Python下的表示,dtype是张量的精度,提供有tf.int, tf.float等很多可供选择。其余参数不太常用,我们不做过多介绍。给出如下例子:

    #TensorFlow的数据类型:张量
    t1 = tf.constant(1) #scalar标量
    t2 = tf.constant([1,2,3,4]) #一维行向量vector
    t3 = tf.constant([[1],[2],[3],[4]]) #一维列向量
    t4 = tf.constant([[1,2],[3,4]]) #2*2矩阵 Matrix
    t5 = tf.constant([[[1,2],[3,4]],[[5,6],[7,8]]]) #2*2*2张量
    #图片一般是四维张量,TenSorFlow中包括图片数量,长,宽,RGB通道数和PyTorch略有不同
    

    当然我们还可以创建字符串String或者布尔值Boolen,我们给出如下示意:

    #TensorFlow的数据类型:字符串
    tstr = tf.constant('Hello, TensorFlow')
    print(tstr)
    print(tf.strings.lower(tstr))
    #我们可以使用tf.strings中的方法,对字符串进行处理
    
    #TensorFlow的数据类型:布尔值
    tBool1 = tf.constant(True)
    tBool2 = tf.constant([True,False])
    print(tBool1)
    print(tBool2)
    #但是tf中的Bool和Python中的Bool并不一样
    print(True==tBool1) #仅进行数值比较
    print(True is tBool1) #还进行类别比较
    

    上面我们创建的只是普通的张量,在大多时候我们需要创建可优化的张量,也就是需要优化的参数,比如y = a*x + b中的ab,就属于不断优化的参数,我们通过使用tf.Variable()方法创建,给出如下实例:

    #TensorFlow的数值类型:待优化张量Variable,比如我们要求的参数,线性回归中的w和b这些。Variable在普通中添加了name和trainable属性
    tt = tf.constant([1,2,3])
    Vtt = tf.Variable(tt) 
    #将普通数值类型转换为待优化
    Vt = tf.Variable([1,2,3]) #直接创建待优化张量
    print(Vt.name,Vt.trainable)
    print(Vtt)
    print(Vt) #数值一样。名称一样
    
    #我们也可以将数值精度用tf.cast()进行转换,还可以进行类型之间的转换
    tt1 = tf.cast(t1,tf.int8)
    tt2 = tf.cast(tf.constant(True),tf.int8)
    print(tt1)
    print(tt2)
    

    TF数学运算

    我们比较常见的数学运算TF都提供的有,我们给出如下实例

    #+, -, *, /加减乘除
    # @是矩阵乘法
    tf.pow#自定义指数运算
    tf.exp#e指数运算
    tf.math.log#对数运算
    

    相关文章

      网友评论

        本文标题:TF张量类型和运算

        本文链接:https://www.haomeiwen.com/subject/vfulyhtx.html