美文网首页深度学习
tf.unstack与tf.stack

tf.unstack与tf.stack

作者: JempChou | 来源:发表于2018-02-03 10:56 被阅读16340次

    tf.unstack

    原型:

    unstack(
    value,
    num=None,
    axis=0,
    name='unstack' )

    官方解释:https://tensorflow.google.cn/api_docs/python/tf/unstack

    解释:这是一个对矩阵进行分解的函数,以下为关键参数解释:

    value:代表需要分解的矩阵变量(其实就是一个多维数组,一般为二维);

    axis:指明对矩阵的哪个维度进行分解。

    要理解tf.unstack函数,我们不妨先来看看tf.stack函数。Tf.stack刚好是与tf.unstack函数相反,前者是对矩阵进行拼接,后者则对矩阵进行分解。

    Tf.stack用法举例:假如现在有两个变量,a=[1, 2, 3],b=[4, 5, 6],现在我要使用tf.stack对他们进行拼接,变成一个二维矩阵[ [1, 2, 3], [4, 5, 6] ]。代码【示例1】如下:

    【示例1】


    
    import tensorflow as tf
    
    a = tf.constant([1, 2, 3])
    
    b = tf.constant([4, 5, 6])
    
    c = tf.stack( [a,b], axis=0)
    
    with tf.Session() as sess:
    
     print(sess.run(c))
    

    输出结果是:


    
    [[1 2 3]
    
     [4 5 6]]
    

    此时,我如果把【示例1】里面的tf.stack参数axis=0改成1,运行结果如下:


    [[1 4]
    
     [2 5]
    
     [3 6]]
    

    可以理解,axis作用就是指明以何种方式对矩阵进行拼接,说白了,就是对原矩阵的哪个维度进行拼接。

    理解了tf.stack,tf.unstack也就不难理解了。比如说现在有变量c,如下:

    c=[[1 2 3]

    [4 5 6]]

    现在要对c进行分解,代码如下:


    
    import tensorflow as tf
    
    c = tf.constant([[1, 2, 3],
    
     [4, 5, 6]])
    
    d = tf.unstack(c, axis=0)
    
    e = tf.unstack(c, axis=1)
    
    with tf.Session() as sess:
    
     print(sess.run(d))
    
     print(sess.run(e))
    

    结果如下:


    [array([1, 2, 3]), array([4, 5, 6])]
    
    [array([1, 4]), array([2, 5]), array([3, 6])]
    

    可以看出来,tf.unstack其实就是在做与tf.stack相反的事情。这样一来,你是不是恍然大悟了呢?

    相关文章

      网友评论

        本文标题:tf.unstack与tf.stack

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