tf.unstack()tf.stack()

Posted fpzs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tf.unstack()tf.stack()相关的知识,希望对你有一定的参考价值。

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相反的事情。这样一来,你是不是恍然大悟了呢?



作者:JempChou
链接:https://www.jianshu.com/p/25706575f8d4
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。









以上是关于tf.unstack()tf.stack()的主要内容,如果未能解决你的问题,请参考以下文章

tf.unstack f.unstack

TensorFlow之tf.unstack学习循环神经网络中用到!

使用data_flow_ops构造batch数据集

tf.stack

tf.stack

tf.stack