阅读(7.4k) 书签 (0)

TensorFlow函数:tf.substr

2018-03-26 10:27 更新

tf.substr函数

tf.substr(
    input,
    pos,
    len,
    name=None
)

参见指南:字符串操作>拆分

从字符串的 Tensor 中返回子字符串.

对于输入 Tensor 中的每个字符串,创建一个从索引 pos 开始的子字符串,总长度为 len.

如果 len 定义了一个将超出输入字符串长度的子字符串,那么使用尽可能多的字符.

如果 pos 是负数或指定的字符索引大于任何输入字符串,则会抛出一个 InvalidArgumentError.

pos 和 len 必须具有相同的形状,否则在 Op 创建时会抛出一个 ValueError.

注意:Substr 支持最多两个维度的广播.

例子

使用标量 pos 和 len:

input = [b'Hello', b'World']
position = 1
length = 3

output = [b'ell', b'orl']

使用与 input 具有相同形状的 pos 和 len:

input = [[b'ten', b'eleven', b'twelve'],
         [b'thirteen', b'fourteen', b'fifteen'],
         [b'sixteen', b'seventeen', b'eighteen']]
position = [[1, 2, 3],
            [1, 2, 3],
            [1, 2, 3]]
length =   [[2, 3, 4],
            [4, 3, 2],
            [5, 5, 5]]

output = [[b'en', b'eve', b'lve'],
          [b'hirt', b'urt', b'te'],
          [b'ixtee', b'vente', b'hteen']]

将 pos 和 len 广播到 input:

input = [[b'ten', b'eleven', b'twelve'],
         [b'thirteen', b'fourteen', b'fifteen'],
         [b'sixteen', b'seventeen', b'eighteen'],
         [b'nineteen', b'twenty', b'twentyone']]
position = [1, 2, 3]
length =   [1, 2, 3]

output = [[b'e', b'ev', b'lve'],
          [b'h', b'ur', b'tee'],
          [b'i', b've', b'hte'],
          [b'i', b'en', b'nty']]

将 input 广播到 pos 和 len:

input = b'thirteen'
position = [1, 5, 7]
length =   [3, 2, 1]

output = [b'hir', b'ee', b'n']

函数参数:

  • input:一个 string 类型的 Tensor,strings 张量.
  • pos:一个 Tensor,必须是以下类型之一:int32,int64,标量定义每个子字符串中第一个字符的位置.
  • len:一个 Tensor,必须具有相同的类型pos,标量定义要包含在每个子字符串中的字符数.
  • name:操作的名称(可选).

函数返回值:

函数返回一个 string 类型的 Tensor.