机器学习入门Pre——TF-Boys的Tensorflow入门

作者: 焜俞 | 来源:发表于2019-11-06 17:57 被阅读0次

    跟着我左手右手一个慢动作~~耶呃~~来左边跟我一起画条龙,来右边跟我一起画道彩虹。

    TensorFlow

    正经点不和大家开玩笑,Tensorflow对于入门机器学习的同学们来说一定如雷贯耳。Tensorflow作为谷歌爸爸的开源机器学习框架,强大咱就不多说了,它在搭建各种机器学习模型方面都很方便,可谓不可不学。

    TaensorFlow的安装

    本教程目前只介绍Windows平台下的安装教程(主要是只会Window,我太菜了),直接按照下面操作:

    pip install tensorflow
    或者
    pip install tensorflow-gpu
    

    然后到你的Idle中看一看,下面代码是否运行成功

    import tensorflow as tf
    

    1、张量的基本运算操作

    import tensorflow as tf
    sess=tf.InteractiveSession()#交互窗口下的会话,否则直接Session
    x=tf.constant([[1,3,5,7],[6,8,9,1],[7,5,6,4],[3,1,4,2]],dtype=tf.float32)
    #用constant方法创建张量,可以指定数据类型
    floatx=tf.constant([[1,3,5,7],[6,8,9,1],[7,5,6,4],[3,1,4,2]],dtype=tf.float32)
    tf.transpose(x).eval()#求张量的转置
    #eval方法将张量转化为Numpy的数组
    >>>array([[1, 6, 7, 3],
           [3, 8, 5, 1],
           [5, 9, 6, 4],
           [7, 1, 4, 2]])
    tf.matmul(x,x).eval()#张量的乘法
    >>>array([[ 75,  59,  90,  44],
           [120, 128, 160,  88],
           [ 91,  95, 132,  86],
           [ 43,  39,  56,  42]])
    tf.matrix_determinant(floatx).eval()#注意这个时候输入要是浮点型数据,计算张量行列式
    >>>559.99994
    tf.matrix_inverse(floatx).eval()#张量的逆
    >>>array([[-0.12857144, -0.09999999,  0.22857143,  0.04285716],
           [ 0.05714285,  0.09999999,  0.09285715, -0.43571427],
           [ 0.02142857,  0.09999999, -0.24642858,  0.36785716],
           [ 0.12142858, -0.1       ,  0.10357143, -0.08214287]],
          dtype=float32)#输入也必须是浮点型,否则会报错
    tf.matrix_solve(floatx,tf.matmul(floatx,floatx)).eval()#求张量的解,已知一个张量和张量的积,求另一个张量
    >>>array([[0.9999999, 3.0000007, 5.0000014, 7.000001 ],
           [6.       , 8.       , 9.       , 1.0000005],
           [7.       , 4.999999 , 5.999999 , 3.9999993],
           [3.0000002, 1.0000004, 4.0000005, 2.0000002]], dtype=float32)#解矩阵方程
    

    2、约简:是一种跨纬度的张量操作,计算结果比原张量缩减一个维度

    import tensorflow as tf
    sess=tf.InteractiveSession()
    t=tf.constant([[1,2,3],[3,2,1],[8,7,9]])
    tf.reduce_max(t,reduction_indices=1).eval()#求每一行的最大值
    >>>array([3, 3, 9])
    tf.reduce_min(t,reduction_indices=1).eval()#求最小
    >>>array([1, 1, 7])
    tf.reduce_mean(t,reduction_indices=1).eval()#求平均
    >>>array([2, 2, 8])
    

    3、张量分割:通过索引对重复索引元素进行操作

    import tensorflow as tf
    sess=tf.InteractiveSession()
    option=tf.constant([0,0,1,2,2])
    t=tf.constant([[1,3,5,7],[2,4,6,8],[2,5,7,9],[1,5,6,4],[9,7,6,4]])
    #[0,0,1,2,2]分别对应从第一到第五行;1,2两行都是0,所以会对它俩进行操作,同理对4,5两行
    tf.segment_sum(t,option).eval()
    >>>array([[ 3,  7, 11, 15],
           [ 2,  5,  7,  9],
           [10, 12, 12,  8]])#对1,2两行上下求和;对4,5两行上下求和
    tf.segment_max(t,option).eval()
    >>>array([[2, 4, 6, 8],
           [2, 5, 7, 9],
           [9, 7, 6, 4]])#同理,求最大值
    tf.segment_min(t,option).eval()
    >>>array([[1, 3, 5, 7],
           [2, 5, 7, 9],
           [1, 5, 6, 4]])#同理求最小
    tf.segment_mean(t,option).eval()
    >>>array([[1, 3, 5, 7],
           [2, 5, 7, 9],
           [5, 6, 6, 4]])#同理求平均值
    

    4、序列:返回操作对应元素的索引

    t=tf.constant([[1,3,5,7],[2,4,6,8],[2,5,7,9],[1,5,6,4],[9,7,6,4]])
    tf.arg_max(t,0).eval()#第一个参数是张量,第二个是轴;返回每一列最大值的索引
    >>>array([4, 4, 2, 2], dtype=int64)
    tf.arg_min(t,1).eval()#返回每一行最小值的索引
    array([0, 0, 0, 0, 3], dtype=int64)
    

    5、张量形状变换

    t=tf.constant([[1,3,5,7],[2,4,6,8],[2,5,7,9],[1,5,6,4],[9,7,6,4]])
    tf.shape(t).eval()#返回张量形状
    >>>array([5, 4])
    tf.size(t).eval()#返回张量的大小
    >>>20
    tf.reshape(t,[5,4]).eval()#改变张量的形状
    >>>array([[1, 3, 5, 7],
           [2, 4, 6, 8],
           [2, 5, 7, 9],
           [1, 5, 6, 4],
           [9, 7, 6, 4]])
    

    6、张量切片(难点)

    t=tf.constant([[1,3,5,7],[2,4,6,8],[2,5,7,9],[1,5,6,4],[9,7,6,4]])
    tf.slice(t,[2,2],[2,2]).eval()
    array([[7, 9],
           [6, 4]])
    

    原理:第一个数组表示初始位置,第二个表示截取的张量形状;上面第一个[2,2]表示第三行第三列(数组索引从0开始),7即为起始元素;第二个数组[2,2]表示从起始元素开始算几行几列,[2,2]就表示两行两列,也就是[[7,9],[6,4]]

    练习题

    对数组[[1,3,5,7],[2,4,6,8],[2,5,7,9],[1,5,6,4],[9,7,6,4]],tf.slice([1,2],[4,2])切片结果是多少?
    答案:[[6,8],[7,9],[6,4],[6,4]],你做对了吗?

    以上就是TensorFlow最最基本的操作。有人可能就要问了,TensorBoard呢?Holder呢?哎,别急别急,等到用时,结合实例学习岂不更好?


    我要变强,我要变强,一起变强吧

    相关文章

      网友评论

        本文标题:机器学习入门Pre——TF-Boys的Tensorflow入门

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