tf.unstack(
value,
num=None,
axis=0,
name='unstack'
value,
num=None,
axis=0,
name='unstack'
)
定义于:tensorflow/python/ops/array_ops.py。
将秩为R的给定维度的tensor的分解为秩为(R-1)的tensor。
通过沿axis维度切割来从value分解num个tensors。如果num未指定(默认值),则从value的形状推断出。如果
value.shape[axis]不知道,则抛出ValueError。例如,给定一个tensor的形状是(A, B, C, D);如果axis == 0,那么output的第i个tensor是切片 value[i, :, :, :],并且output的每个tensor都将具有形状(B, C, D)。(注意,分解的尺寸已经消失,不像split)。
如果axis == 1,那么output的第i个tensor是切片 value[:, i, :, :],并且output的每个tensor都将具有形状(A, C, D)。这与stack相反。参数:
value:R > 0 的Tensor。
num:一个int。axis尺寸的长度。如果为None则自动推断(默认值)。
axis:一个int。指定要被分解的轴。默认为第一个维度。有效范围是[-R, R)。
name:操作的名称(可选)。
返回:从value分解的tensor对象列表。
import tensorflow as tf
A = [[1, 2, 3], [4, 5, 6]]
a1 = tf.unstack(A, num=3,axis=1)
a2 = tf.unstack(A, num=2,axis=0)
with tf.Session() as sess:
print(sess.run(a1))
print(sess.run(a2))
输出:
[array([1, 4]), array([2, 5]), array([3, 6])]
[array([1, 2, 3]), array([4, 5, 6])]