阅读(464) (13)

TensorFlow函数:tf.split

2018-03-15 10:07:42 更新

tf.split函数

split(
    value,
    num_or_size_splits,
    axis=0,
    num=None,
    name='split'
)

定义在:tensorflow/python/ops/array_ops.py.

参见指南:张量变换>切割和连接

将张量分割成子张量.

如果 num_or_size_splits 是整数类型,num_split,则 value 沿维度 axis 分割成为 num_split 更小的张量.要求 num_split 均匀分配 value.shape[axis].

如果 num_or_size_splits 不是整数类型,则它被认为是一个张量 size_splits,然后将 value 分割成 len(size_splits) 块.第 i 部分的形状与 value 的大小相同,除了沿维度 axis 之外的大小 size_splits[i].

例如:

# 'value' is a tensor with shape [5, 30]
# Split 'value' into 3 tensors with sizes [4, 15, 11] along dimension 1
split0, split1, split2 = tf.split(value, [4, 15, 11], 1)
tf.shape(split0)  # [5, 4]
tf.shape(split1)  # [5, 15]
tf.shape(split2)  # [5, 11]
# Split 'value' into 3 tensors along dimension 1
split0, split1, split2 = tf.split(value, num_or_size_splits=3, axis=1)
tf.shape(split0)  # [5, 10]

函数参数:

  • value:要分割的 Tensor.
  • num_or_size_splits:指示沿 split_dim 分割数量的 0-D 整数 Tensor 或包含沿 split_dim 每个输出张量大小的 1-D 整数 Tensor ;如果为一个标量,那么它必须均匀分割 value.shape[axis];否则沿分割维度的大小总和必须与该 value 相匹配.
  • axis:A 0-D int32 Tensor;表示分割的尺寸;必须在[-rank(value), rank(value))范围内;默认为0.
  • num:可选的,用于指定无法从 size_splits 的形状推断出的输出数.
  • name:操作的名称(可选).

函数返回值:

如果 num_or_size_splits 是标量,返回 num_or_size_splits Tensor对象;如果 num_or_size_splits 是一维张量,则返回由 value 分割产生的 num_or_size_splits.get_shape[0] Tensor对象.

函数可能引发的异常:

  • ValueError:如果 num 没有指定并且无法推断.