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.