903 lines
30 KiB
C++
903 lines
30 KiB
C++
// This file is MACHINE GENERATED! Do not edit.
|
|
|
|
#ifndef TENSORFLOW_CC_OPS_STRING_OPS_H_
|
|
#define TENSORFLOW_CC_OPS_STRING_OPS_H_
|
|
|
|
// This file is MACHINE GENERATED! Do not edit.
|
|
|
|
#include "tensorflow/cc/framework/ops.h"
|
|
#include "tensorflow/cc/framework/scope.h"
|
|
#include "tensorflow/core/framework/tensor.h"
|
|
#include "tensorflow/core/framework/tensor_shape.h"
|
|
#include "tensorflow/core/framework/types.h"
|
|
#include "tensorflow/core/lib/gtl/array_slice.h"
|
|
|
|
namespace tensorflow {
|
|
namespace ops {
|
|
|
|
/// @defgroup string_ops String Ops
|
|
/// @{
|
|
|
|
/// Converts each entry in the given tensor to strings. Supports many numeric
|
|
///
|
|
/// types and boolean.
|
|
///
|
|
/// Arguments:
|
|
/// * scope: A Scope object
|
|
///
|
|
/// Optional attributes (see `Attrs`):
|
|
/// * precision: The post-decimal precision to use for floating point numbers.
|
|
/// Only used if precision > -1.
|
|
/// * scientific: Use scientific notation for floating point numbers.
|
|
/// * shortest: Use shortest representation (either scientific or standard) for
|
|
/// floating point numbers.
|
|
/// * width: Pad pre-decimal numbers to this width.
|
|
/// Applies to both floating point and integer numbers.
|
|
/// Only used if width > -1.
|
|
/// * fill: The value to pad if width > -1. If empty, pads with spaces.
|
|
/// Another typical value is '0'. String cannot be longer than 1 character.
|
|
///
|
|
/// Returns:
|
|
/// * `Output`: The output tensor.
|
|
class AsString {
|
|
public:
|
|
/// Optional attribute setters for AsString
|
|
struct Attrs {
|
|
/// The post-decimal precision to use for floating point numbers.
|
|
/// Only used if precision > -1.
|
|
///
|
|
/// Defaults to -1
|
|
TF_MUST_USE_RESULT Attrs Precision(int64 x) {
|
|
Attrs ret = *this;
|
|
ret.precision_ = x;
|
|
return ret;
|
|
}
|
|
|
|
/// Use scientific notation for floating point numbers.
|
|
///
|
|
/// Defaults to false
|
|
TF_MUST_USE_RESULT Attrs Scientific(bool x) {
|
|
Attrs ret = *this;
|
|
ret.scientific_ = x;
|
|
return ret;
|
|
}
|
|
|
|
/// Use shortest representation (either scientific or standard) for
|
|
/// floating point numbers.
|
|
///
|
|
/// Defaults to false
|
|
TF_MUST_USE_RESULT Attrs Shortest(bool x) {
|
|
Attrs ret = *this;
|
|
ret.shortest_ = x;
|
|
return ret;
|
|
}
|
|
|
|
/// Pad pre-decimal numbers to this width.
|
|
/// Applies to both floating point and integer numbers.
|
|
/// Only used if width > -1.
|
|
///
|
|
/// Defaults to -1
|
|
TF_MUST_USE_RESULT Attrs Width(int64 x) {
|
|
Attrs ret = *this;
|
|
ret.width_ = x;
|
|
return ret;
|
|
}
|
|
|
|
/// The value to pad if width > -1. If empty, pads with spaces.
|
|
/// Another typical value is '0'. String cannot be longer than 1 character.
|
|
///
|
|
/// Defaults to ""
|
|
TF_MUST_USE_RESULT Attrs Fill(StringPiece x) {
|
|
Attrs ret = *this;
|
|
ret.fill_ = x;
|
|
return ret;
|
|
}
|
|
|
|
int64 precision_ = -1;
|
|
bool scientific_ = false;
|
|
bool shortest_ = false;
|
|
int64 width_ = -1;
|
|
StringPiece fill_ = "";
|
|
};
|
|
AsString(const ::tensorflow::Scope& scope, ::tensorflow::Input input);
|
|
AsString(const ::tensorflow::Scope& scope, ::tensorflow::Input input, const
|
|
AsString::Attrs& attrs);
|
|
operator ::tensorflow::Output() const { return output; }
|
|
operator ::tensorflow::Input() const { return output; }
|
|
::tensorflow::Node* node() const { return output.node(); }
|
|
|
|
static Attrs Precision(int64 x) {
|
|
return Attrs().Precision(x);
|
|
}
|
|
static Attrs Scientific(bool x) {
|
|
return Attrs().Scientific(x);
|
|
}
|
|
static Attrs Shortest(bool x) {
|
|
return Attrs().Shortest(x);
|
|
}
|
|
static Attrs Width(int64 x) {
|
|
return Attrs().Width(x);
|
|
}
|
|
static Attrs Fill(StringPiece x) {
|
|
return Attrs().Fill(x);
|
|
}
|
|
|
|
Operation operation;
|
|
::tensorflow::Output output;
|
|
};
|
|
|
|
/// Decode web-safe base64-encoded strings.
|
|
///
|
|
/// Input may or may not have padding at the end. See EncodeBase64 for padding.
|
|
/// Web-safe means that input must use - and _ instead of + and /.
|
|
///
|
|
/// Arguments:
|
|
/// * scope: A Scope object
|
|
/// * input: Base64 strings to decode.
|
|
///
|
|
/// Returns:
|
|
/// * `Output`: Decoded strings.
|
|
class DecodeBase64 {
|
|
public:
|
|
DecodeBase64(const ::tensorflow::Scope& scope, ::tensorflow::Input input);
|
|
operator ::tensorflow::Output() const { return output; }
|
|
operator ::tensorflow::Input() const { return output; }
|
|
::tensorflow::Node* node() const { return output.node(); }
|
|
|
|
Operation operation;
|
|
::tensorflow::Output output;
|
|
};
|
|
|
|
/// Encode strings into web-safe base64 format.
|
|
///
|
|
/// Refer to the following article for more information on base64 format:
|
|
/// en.wikipedia.org/wiki/Base64. Base64 strings may have padding with '=' at the
|
|
/// end so that the encoded has length multiple of 4. See Padding section of the
|
|
/// link above.
|
|
///
|
|
/// Web-safe means that the encoder uses - and _ instead of + and /.
|
|
///
|
|
/// Arguments:
|
|
/// * scope: A Scope object
|
|
/// * input: Strings to be encoded.
|
|
///
|
|
/// Optional attributes (see `Attrs`):
|
|
/// * pad: Bool whether padding is applied at the ends.
|
|
///
|
|
/// Returns:
|
|
/// * `Output`: Input strings encoded in base64.
|
|
class EncodeBase64 {
|
|
public:
|
|
/// Optional attribute setters for EncodeBase64
|
|
struct Attrs {
|
|
/// Bool whether padding is applied at the ends.
|
|
///
|
|
/// Defaults to false
|
|
TF_MUST_USE_RESULT Attrs Pad(bool x) {
|
|
Attrs ret = *this;
|
|
ret.pad_ = x;
|
|
return ret;
|
|
}
|
|
|
|
bool pad_ = false;
|
|
};
|
|
EncodeBase64(const ::tensorflow::Scope& scope, ::tensorflow::Input input);
|
|
EncodeBase64(const ::tensorflow::Scope& scope, ::tensorflow::Input input, const
|
|
EncodeBase64::Attrs& attrs);
|
|
operator ::tensorflow::Output() const { return output; }
|
|
operator ::tensorflow::Input() const { return output; }
|
|
::tensorflow::Node* node() const { return output.node(); }
|
|
|
|
static Attrs Pad(bool x) {
|
|
return Attrs().Pad(x);
|
|
}
|
|
|
|
Operation operation;
|
|
::tensorflow::Output output;
|
|
};
|
|
|
|
/// Joins a string Tensor across the given dimensions.
|
|
///
|
|
/// Computes the string join across dimensions in the given string Tensor of shape
|
|
/// `[\\(d_0, d_1, ..., d_{n-1}\\)]`. Returns a new Tensor created by joining the input
|
|
/// strings with the given separator (default: empty string). Negative indices are
|
|
/// counted backwards from the end, with `-1` being equivalent to `n - 1`. If
|
|
/// indices are not specified, joins across all dimensions beginning from `n - 1`
|
|
/// through `0`.
|
|
///
|
|
/// For example:
|
|
///
|
|
/// ```python
|
|
/// # tensor `a` is [["a", "b"], ["c", "d"]]
|
|
/// tf.reduce_join(a, 0) ==> ["ac", "bd"]
|
|
/// tf.reduce_join(a, 1) ==> ["ab", "cd"]
|
|
/// tf.reduce_join(a, -2) = tf.reduce_join(a, 0) ==> ["ac", "bd"]
|
|
/// tf.reduce_join(a, -1) = tf.reduce_join(a, 1) ==> ["ab", "cd"]
|
|
/// tf.reduce_join(a, 0, keep_dims=True) ==> [["ac", "bd"]]
|
|
/// tf.reduce_join(a, 1, keep_dims=True) ==> [["ab"], ["cd"]]
|
|
/// tf.reduce_join(a, 0, separator=".") ==> ["a.c", "b.d"]
|
|
/// tf.reduce_join(a, [0, 1]) ==> "acbd"
|
|
/// tf.reduce_join(a, [1, 0]) ==> "abcd"
|
|
/// tf.reduce_join(a, []) ==> [["a", "b"], ["c", "d"]]
|
|
/// tf.reduce_join(a) = tf.reduce_join(a, [1, 0]) ==> "abcd"
|
|
/// ```
|
|
///
|
|
/// Arguments:
|
|
/// * scope: A Scope object
|
|
/// * inputs: The input to be joined. All reduced indices must have non-zero size.
|
|
/// * reduction_indices: The dimensions to reduce over. Dimensions are reduced in the
|
|
/// order specified. Omitting `reduction_indices` is equivalent to passing
|
|
/// `[n-1, n-2, ..., 0]`. Negative indices from `-n` to `-1` are supported.
|
|
///
|
|
/// Optional attributes (see `Attrs`):
|
|
/// * keep_dims: If `True`, retain reduced dimensions with length `1`.
|
|
/// * separator: The separator to use when joining.
|
|
///
|
|
/// Returns:
|
|
/// * `Output`: Has shape equal to that of the input with reduced dimensions removed or
|
|
/// set to `1` depending on `keep_dims`.
|
|
class ReduceJoin {
|
|
public:
|
|
/// Optional attribute setters for ReduceJoin
|
|
struct Attrs {
|
|
/// If `True`, retain reduced dimensions with length `1`.
|
|
///
|
|
/// Defaults to false
|
|
TF_MUST_USE_RESULT Attrs KeepDims(bool x) {
|
|
Attrs ret = *this;
|
|
ret.keep_dims_ = x;
|
|
return ret;
|
|
}
|
|
|
|
/// The separator to use when joining.
|
|
///
|
|
/// Defaults to ""
|
|
TF_MUST_USE_RESULT Attrs Separator(StringPiece x) {
|
|
Attrs ret = *this;
|
|
ret.separator_ = x;
|
|
return ret;
|
|
}
|
|
|
|
bool keep_dims_ = false;
|
|
StringPiece separator_ = "";
|
|
};
|
|
ReduceJoin(const ::tensorflow::Scope& scope, ::tensorflow::Input inputs,
|
|
::tensorflow::Input reduction_indices);
|
|
ReduceJoin(const ::tensorflow::Scope& scope, ::tensorflow::Input inputs,
|
|
::tensorflow::Input reduction_indices, const ReduceJoin::Attrs&
|
|
attrs);
|
|
operator ::tensorflow::Output() const { return output; }
|
|
operator ::tensorflow::Input() const { return output; }
|
|
::tensorflow::Node* node() const { return output.node(); }
|
|
|
|
static Attrs KeepDims(bool x) {
|
|
return Attrs().KeepDims(x);
|
|
}
|
|
static Attrs Separator(StringPiece x) {
|
|
return Attrs().Separator(x);
|
|
}
|
|
|
|
Operation operation;
|
|
::tensorflow::Output output;
|
|
};
|
|
|
|
/// Check if the input matches the regex pattern.
|
|
///
|
|
/// The input is a string tensor of any shape. The pattern is a scalar
|
|
/// string tensor which is applied to every element of the input tensor.
|
|
/// The boolean values (True or False) of the output tensor indicate
|
|
/// if the input matches the regex pattern provided.
|
|
///
|
|
/// The pattern follows the re2 syntax (https://github.com/google/re2/wiki/Syntax)
|
|
///
|
|
/// Arguments:
|
|
/// * scope: A Scope object
|
|
/// * input: A string tensor of the text to be processed.
|
|
/// * pattern: A scalar string tensor containing the regular expression to match the input.
|
|
///
|
|
/// Returns:
|
|
/// * `Output`: A bool tensor with the same shape as `input`.
|
|
class RegexFullMatch {
|
|
public:
|
|
RegexFullMatch(const ::tensorflow::Scope& scope, ::tensorflow::Input input,
|
|
::tensorflow::Input pattern);
|
|
operator ::tensorflow::Output() const { return output; }
|
|
operator ::tensorflow::Input() const { return output; }
|
|
::tensorflow::Node* node() const { return output.node(); }
|
|
|
|
Operation operation;
|
|
::tensorflow::Output output;
|
|
};
|
|
|
|
/// Replaces the match of pattern in input with rewrite.
|
|
///
|
|
/// It follows the re2 syntax (https://github.com/google/re2/wiki/Syntax)
|
|
///
|
|
/// Arguments:
|
|
/// * scope: A Scope object
|
|
/// * input: The text to be processed.
|
|
/// * pattern: The regular expression to match the input.
|
|
/// * rewrite: The rewrite to be applied to the matched expresion.
|
|
///
|
|
/// Optional attributes (see `Attrs`):
|
|
/// * replace_global: If True, the replacement is global, otherwise the replacement
|
|
/// is done only on the first match.
|
|
///
|
|
/// Returns:
|
|
/// * `Output`: The text after applying pattern and rewrite.
|
|
class RegexReplace {
|
|
public:
|
|
/// Optional attribute setters for RegexReplace
|
|
struct Attrs {
|
|
/// If True, the replacement is global, otherwise the replacement
|
|
/// is done only on the first match.
|
|
///
|
|
/// Defaults to true
|
|
TF_MUST_USE_RESULT Attrs ReplaceGlobal(bool x) {
|
|
Attrs ret = *this;
|
|
ret.replace_global_ = x;
|
|
return ret;
|
|
}
|
|
|
|
bool replace_global_ = true;
|
|
};
|
|
RegexReplace(const ::tensorflow::Scope& scope, ::tensorflow::Input input,
|
|
::tensorflow::Input pattern, ::tensorflow::Input rewrite);
|
|
RegexReplace(const ::tensorflow::Scope& scope, ::tensorflow::Input input,
|
|
::tensorflow::Input pattern, ::tensorflow::Input rewrite, const
|
|
RegexReplace::Attrs& attrs);
|
|
operator ::tensorflow::Output() const { return output; }
|
|
operator ::tensorflow::Input() const { return output; }
|
|
::tensorflow::Node* node() const { return output.node(); }
|
|
|
|
static Attrs ReplaceGlobal(bool x) {
|
|
return Attrs().ReplaceGlobal(x);
|
|
}
|
|
|
|
Operation operation;
|
|
::tensorflow::Output output;
|
|
};
|
|
|
|
/// Formats a string template using a list of tensors.
|
|
///
|
|
/// Formats a string template using a list of tensors, pretty-printing tensor summaries.
|
|
///
|
|
/// Arguments:
|
|
/// * scope: A Scope object
|
|
/// * inputs: The list of tensors to format into the placeholder string.
|
|
///
|
|
/// Optional attributes (see `Attrs`):
|
|
/// * template_: A string, the template to format tensor summaries into.
|
|
/// * placeholder: A string, at each placeholder in the template a subsequent tensor summary will be inserted.
|
|
/// * summarize: When formatting the tensor summaries print the first and last summarize entries of each tensor dimension.
|
|
///
|
|
/// Returns:
|
|
/// * `Output`: = The resulting string scalar.
|
|
class StringFormat {
|
|
public:
|
|
/// Optional attribute setters for StringFormat
|
|
struct Attrs {
|
|
/// A string, the template to format tensor summaries into.
|
|
///
|
|
/// Defaults to "%s"
|
|
TF_MUST_USE_RESULT Attrs Template(StringPiece x) {
|
|
Attrs ret = *this;
|
|
ret.template_ = x;
|
|
return ret;
|
|
}
|
|
|
|
/// A string, at each placeholder in the template a subsequent tensor summary will be inserted.
|
|
///
|
|
/// Defaults to "%s"
|
|
TF_MUST_USE_RESULT Attrs Placeholder(StringPiece x) {
|
|
Attrs ret = *this;
|
|
ret.placeholder_ = x;
|
|
return ret;
|
|
}
|
|
|
|
/// When formatting the tensor summaries print the first and last summarize entries of each tensor dimension.
|
|
///
|
|
/// Defaults to 3
|
|
TF_MUST_USE_RESULT Attrs Summarize(int64 x) {
|
|
Attrs ret = *this;
|
|
ret.summarize_ = x;
|
|
return ret;
|
|
}
|
|
|
|
StringPiece template_ = "%s";
|
|
StringPiece placeholder_ = "%s";
|
|
int64 summarize_ = 3;
|
|
};
|
|
StringFormat(const ::tensorflow::Scope& scope, ::tensorflow::InputList inputs);
|
|
StringFormat(const ::tensorflow::Scope& scope, ::tensorflow::InputList inputs,
|
|
const StringFormat::Attrs& attrs);
|
|
operator ::tensorflow::Output() const { return output; }
|
|
operator ::tensorflow::Input() const { return output; }
|
|
::tensorflow::Node* node() const { return output.node(); }
|
|
|
|
static Attrs Template(StringPiece x) {
|
|
return Attrs().Template(x);
|
|
}
|
|
static Attrs Placeholder(StringPiece x) {
|
|
return Attrs().Placeholder(x);
|
|
}
|
|
static Attrs Summarize(int64 x) {
|
|
return Attrs().Summarize(x);
|
|
}
|
|
|
|
Operation operation;
|
|
::tensorflow::Output output;
|
|
};
|
|
|
|
/// Joins the strings in the given list of string tensors into one tensor;
|
|
///
|
|
/// with the given separator (default is an empty separator).
|
|
///
|
|
/// Arguments:
|
|
/// * scope: A Scope object
|
|
/// * inputs: A list of string tensors. The tensors must all have the same shape,
|
|
/// or be scalars. Scalars may be mixed in; these will be broadcast to the shape
|
|
/// of non-scalar inputs.
|
|
///
|
|
/// Optional attributes (see `Attrs`):
|
|
/// * separator: string, an optional join separator.
|
|
///
|
|
/// Returns:
|
|
/// * `Output`: The output tensor.
|
|
class StringJoin {
|
|
public:
|
|
/// Optional attribute setters for StringJoin
|
|
struct Attrs {
|
|
/// string, an optional join separator.
|
|
///
|
|
/// Defaults to ""
|
|
TF_MUST_USE_RESULT Attrs Separator(StringPiece x) {
|
|
Attrs ret = *this;
|
|
ret.separator_ = x;
|
|
return ret;
|
|
}
|
|
|
|
StringPiece separator_ = "";
|
|
};
|
|
StringJoin(const ::tensorflow::Scope& scope, ::tensorflow::InputList inputs);
|
|
StringJoin(const ::tensorflow::Scope& scope, ::tensorflow::InputList inputs,
|
|
const StringJoin::Attrs& attrs);
|
|
operator ::tensorflow::Output() const { return output; }
|
|
operator ::tensorflow::Input() const { return output; }
|
|
::tensorflow::Node* node() const { return output.node(); }
|
|
|
|
static Attrs Separator(StringPiece x) {
|
|
return Attrs().Separator(x);
|
|
}
|
|
|
|
Operation operation;
|
|
::tensorflow::Output output;
|
|
};
|
|
|
|
/// String lengths of `input`.
|
|
///
|
|
/// Computes the length of each string given in the input tensor.
|
|
///
|
|
/// Arguments:
|
|
/// * scope: A Scope object
|
|
/// * input: The string for which to compute the length.
|
|
///
|
|
/// Optional attributes (see `Attrs`):
|
|
/// * unit: The unit that is counted to compute string length. One of: `"BYTE"` (for
|
|
/// the number of bytes in each string) or `"UTF8_CHAR"` (for the number of UTF-8
|
|
/// encoded Unicode code points in each string). Results are undefined
|
|
/// if `unit=UTF8_CHAR` and the `input` strings do not contain structurally
|
|
/// valid UTF-8.
|
|
///
|
|
/// Returns:
|
|
/// * `Output`: Integer tensor that has the same shape as `input`. The output contains the
|
|
/// element-wise string lengths of `input`.
|
|
class StringLength {
|
|
public:
|
|
/// Optional attribute setters for StringLength
|
|
struct Attrs {
|
|
/// The unit that is counted to compute string length. One of: `"BYTE"` (for
|
|
/// the number of bytes in each string) or `"UTF8_CHAR"` (for the number of UTF-8
|
|
/// encoded Unicode code points in each string). Results are undefined
|
|
/// if `unit=UTF8_CHAR` and the `input` strings do not contain structurally
|
|
/// valid UTF-8.
|
|
///
|
|
/// Defaults to "BYTE"
|
|
TF_MUST_USE_RESULT Attrs Unit(StringPiece x) {
|
|
Attrs ret = *this;
|
|
ret.unit_ = x;
|
|
return ret;
|
|
}
|
|
|
|
StringPiece unit_ = "BYTE";
|
|
};
|
|
StringLength(const ::tensorflow::Scope& scope, ::tensorflow::Input input);
|
|
StringLength(const ::tensorflow::Scope& scope, ::tensorflow::Input input, const
|
|
StringLength::Attrs& attrs);
|
|
operator ::tensorflow::Output() const { return output; }
|
|
operator ::tensorflow::Input() const { return output; }
|
|
::tensorflow::Node* node() const { return output.node(); }
|
|
|
|
static Attrs Unit(StringPiece x) {
|
|
return Attrs().Unit(x);
|
|
}
|
|
|
|
Operation operation;
|
|
::tensorflow::Output output;
|
|
};
|
|
|
|
/// Split elements of `input` based on `delimiter` into a `SparseTensor`.
|
|
///
|
|
/// Let N be the size of source (typically N will be the batch size). Split each
|
|
/// element of `input` based on `delimiter` and return a `SparseTensor`
|
|
/// containing the splitted tokens. Empty tokens are ignored.
|
|
///
|
|
/// `delimiter` can be empty, or a string of split characters. If `delimiter` is an
|
|
/// empty string, each element of `input` is split into individual single-byte
|
|
/// character strings, including splitting of UTF-8 multibyte sequences. Otherwise
|
|
/// every character of `delimiter` is a potential split point.
|
|
///
|
|
/// For example:
|
|
/// N = 2, input[0] is 'hello world' and input[1] is 'a b c', then the output
|
|
/// will be
|
|
///
|
|
/// indices = [0, 0;
|
|
/// 0, 1;
|
|
/// 1, 0;
|
|
/// 1, 1;
|
|
/// 1, 2]
|
|
/// shape = [2, 3]
|
|
/// values = ['hello', 'world', 'a', 'b', 'c']
|
|
///
|
|
/// Arguments:
|
|
/// * scope: A Scope object
|
|
/// * input: 1-D. Strings to split.
|
|
/// * delimiter: 0-D. Delimiter characters (bytes), or empty string.
|
|
///
|
|
/// Optional attributes (see `Attrs`):
|
|
/// * skip_empty: A `bool`. If `True`, skip the empty strings from the result.
|
|
///
|
|
/// Returns:
|
|
/// * `Output` indices: A dense matrix of int64 representing the indices of the sparse tensor.
|
|
/// * `Output` values: A vector of strings corresponding to the splited values.
|
|
/// * `Output` shape: a length-2 vector of int64 representing the shape of the sparse
|
|
/// tensor, where the first value is N and the second value is the maximum number
|
|
/// of tokens in a single input entry.
|
|
class StringSplit {
|
|
public:
|
|
/// Optional attribute setters for StringSplit
|
|
struct Attrs {
|
|
/// A `bool`. If `True`, skip the empty strings from the result.
|
|
///
|
|
/// Defaults to true
|
|
TF_MUST_USE_RESULT Attrs SkipEmpty(bool x) {
|
|
Attrs ret = *this;
|
|
ret.skip_empty_ = x;
|
|
return ret;
|
|
}
|
|
|
|
bool skip_empty_ = true;
|
|
};
|
|
StringSplit(const ::tensorflow::Scope& scope, ::tensorflow::Input input,
|
|
::tensorflow::Input delimiter);
|
|
StringSplit(const ::tensorflow::Scope& scope, ::tensorflow::Input input,
|
|
::tensorflow::Input delimiter, const StringSplit::Attrs& attrs);
|
|
|
|
static Attrs SkipEmpty(bool x) {
|
|
return Attrs().SkipEmpty(x);
|
|
}
|
|
|
|
Operation operation;
|
|
::tensorflow::Output indices;
|
|
::tensorflow::Output values;
|
|
::tensorflow::Output shape;
|
|
};
|
|
|
|
/// Split elements of `source` based on `sep` into a `SparseTensor`.
|
|
///
|
|
/// Let N be the size of source (typically N will be the batch size). Split each
|
|
/// element of `source` based on `sep` and return a `SparseTensor`
|
|
/// containing the split tokens. Empty tokens are ignored.
|
|
///
|
|
/// For example, N = 2, source[0] is 'hello world' and source[1] is 'a b c',
|
|
/// then the output will be
|
|
/// ```
|
|
/// st.indices = [0, 0;
|
|
/// 0, 1;
|
|
/// 1, 0;
|
|
/// 1, 1;
|
|
/// 1, 2]
|
|
/// st.shape = [2, 3]
|
|
/// st.values = ['hello', 'world', 'a', 'b', 'c']
|
|
/// ```
|
|
///
|
|
/// If `sep` is given, consecutive delimiters are not grouped together and are
|
|
/// deemed to delimit empty strings. For example, source of `"1<>2<><>3"` and
|
|
/// sep of `"<>"` returns `["1", "2", "", "3"]`. If `sep` is None or an empty
|
|
/// string, consecutive whitespace are regarded as a single separator, and the
|
|
/// result will contain no empty strings at the startor end if the string has
|
|
/// leading or trailing whitespace.
|
|
///
|
|
/// Note that the above mentioned behavior matches python's str.split.
|
|
///
|
|
/// Arguments:
|
|
/// * scope: A Scope object
|
|
/// * input: `1-D` string `Tensor`, the strings to split.
|
|
/// * sep: `0-D` string `Tensor`, the delimiter character.
|
|
///
|
|
/// Optional attributes (see `Attrs`):
|
|
/// * maxsplit: An `int`. If `maxsplit > 0`, limit of the split of the result.
|
|
///
|
|
/// Returns:
|
|
/// * `Output` indices
|
|
/// * `Output` values
|
|
/// * `Output` shape
|
|
class StringSplitV2 {
|
|
public:
|
|
/// Optional attribute setters for StringSplitV2
|
|
struct Attrs {
|
|
/// An `int`. If `maxsplit > 0`, limit of the split of the result.
|
|
///
|
|
/// Defaults to -1
|
|
TF_MUST_USE_RESULT Attrs Maxsplit(int64 x) {
|
|
Attrs ret = *this;
|
|
ret.maxsplit_ = x;
|
|
return ret;
|
|
}
|
|
|
|
int64 maxsplit_ = -1;
|
|
};
|
|
StringSplitV2(const ::tensorflow::Scope& scope, ::tensorflow::Input input,
|
|
::tensorflow::Input sep);
|
|
StringSplitV2(const ::tensorflow::Scope& scope, ::tensorflow::Input input,
|
|
::tensorflow::Input sep, const StringSplitV2::Attrs& attrs);
|
|
|
|
static Attrs Maxsplit(int64 x) {
|
|
return Attrs().Maxsplit(x);
|
|
}
|
|
|
|
Operation operation;
|
|
::tensorflow::Output indices;
|
|
::tensorflow::Output values;
|
|
::tensorflow::Output shape;
|
|
};
|
|
|
|
/// Strip leading and trailing whitespaces from the Tensor.
|
|
///
|
|
/// Arguments:
|
|
/// * scope: A Scope object
|
|
/// * input: A string `Tensor` of any shape.
|
|
///
|
|
/// Returns:
|
|
/// * `Output`: A string `Tensor` of the same shape as the input.
|
|
class StringStrip {
|
|
public:
|
|
StringStrip(const ::tensorflow::Scope& scope, ::tensorflow::Input input);
|
|
operator ::tensorflow::Output() const { return output; }
|
|
operator ::tensorflow::Input() const { return output; }
|
|
::tensorflow::Node* node() const { return output.node(); }
|
|
|
|
Operation operation;
|
|
::tensorflow::Output output;
|
|
};
|
|
|
|
/// Converts each string in the input Tensor to its hash mod by a number of buckets.
|
|
///
|
|
/// The hash function is deterministic on the content of the string within the
|
|
/// process.
|
|
///
|
|
/// Note that the hash function may change from time to time.
|
|
/// This functionality will be deprecated and it's recommended to use
|
|
/// `tf.string_to_hash_bucket_fast()` or `tf.string_to_hash_bucket_strong()`.
|
|
///
|
|
/// Arguments:
|
|
/// * scope: A Scope object
|
|
/// * num_buckets: The number of buckets.
|
|
///
|
|
/// Returns:
|
|
/// * `Output`: A Tensor of the same shape as the input `string_tensor`.
|
|
class StringToHashBucket {
|
|
public:
|
|
StringToHashBucket(const ::tensorflow::Scope& scope, ::tensorflow::Input
|
|
string_tensor, int64 num_buckets);
|
|
operator ::tensorflow::Output() const { return output; }
|
|
operator ::tensorflow::Input() const { return output; }
|
|
::tensorflow::Node* node() const { return output.node(); }
|
|
|
|
Operation operation;
|
|
::tensorflow::Output output;
|
|
};
|
|
|
|
/// Converts each string in the input Tensor to its hash mod by a number of buckets.
|
|
///
|
|
/// The hash function is deterministic on the content of the string within the
|
|
/// process and will never change. However, it is not suitable for cryptography.
|
|
/// This function may be used when CPU time is scarce and inputs are trusted or
|
|
/// unimportant. There is a risk of adversaries constructing inputs that all hash
|
|
/// to the same bucket. To prevent this problem, use a strong hash function with
|
|
/// `tf.string_to_hash_bucket_strong`.
|
|
///
|
|
/// Arguments:
|
|
/// * scope: A Scope object
|
|
/// * input: The strings to assign a hash bucket.
|
|
/// * num_buckets: The number of buckets.
|
|
///
|
|
/// Returns:
|
|
/// * `Output`: A Tensor of the same shape as the input `string_tensor`.
|
|
class StringToHashBucketFast {
|
|
public:
|
|
StringToHashBucketFast(const ::tensorflow::Scope& scope, ::tensorflow::Input
|
|
input, int64 num_buckets);
|
|
operator ::tensorflow::Output() const { return output; }
|
|
operator ::tensorflow::Input() const { return output; }
|
|
::tensorflow::Node* node() const { return output.node(); }
|
|
|
|
Operation operation;
|
|
::tensorflow::Output output;
|
|
};
|
|
|
|
/// Converts each string in the input Tensor to its hash mod by a number of buckets.
|
|
///
|
|
/// The hash function is deterministic on the content of the string within the
|
|
/// process. The hash function is a keyed hash function, where attribute `key`
|
|
/// defines the key of the hash function. `key` is an array of 2 elements.
|
|
///
|
|
/// A strong hash is important when inputs may be malicious, e.g. URLs with
|
|
/// additional components. Adversaries could try to make their inputs hash to the
|
|
/// same bucket for a denial-of-service attack or to skew the results. A strong
|
|
/// hash prevents this by making it difficult, if not infeasible, to compute inputs
|
|
/// that hash to the same bucket. This comes at a cost of roughly 4x higher compute
|
|
/// time than `tf.string_to_hash_bucket_fast`.
|
|
///
|
|
/// Arguments:
|
|
/// * scope: A Scope object
|
|
/// * input: The strings to assign a hash bucket.
|
|
/// * num_buckets: The number of buckets.
|
|
/// * key: The key for the keyed hash function passed as a list of two uint64
|
|
/// elements.
|
|
///
|
|
/// Returns:
|
|
/// * `Output`: A Tensor of the same shape as the input `string_tensor`.
|
|
class StringToHashBucketStrong {
|
|
public:
|
|
StringToHashBucketStrong(const ::tensorflow::Scope& scope, ::tensorflow::Input
|
|
input, int64 num_buckets, const gtl::ArraySlice<int>&
|
|
key);
|
|
operator ::tensorflow::Output() const { return output; }
|
|
operator ::tensorflow::Input() const { return output; }
|
|
::tensorflow::Node* node() const { return output.node(); }
|
|
|
|
Operation operation;
|
|
::tensorflow::Output output;
|
|
};
|
|
|
|
/// Return substrings from `Tensor` of strings.
|
|
///
|
|
/// For each string in the input `Tensor`, creates a substring starting at index
|
|
/// `pos` with a total length of `len`.
|
|
///
|
|
/// If `len` defines a substring that would extend beyond the length of the input
|
|
/// string, then as many characters as possible are used.
|
|
///
|
|
/// A negative `pos` indicates distance within the string backwards from the end.
|
|
///
|
|
/// If `pos` specifies an index which is out of range for any of the input strings,
|
|
/// then an `InvalidArgumentError` is thrown.
|
|
///
|
|
/// `pos` and `len` must have the same shape, otherwise a `ValueError` is thrown on
|
|
/// Op creation.
|
|
///
|
|
/// *NOTE*: `Substr` supports broadcasting up to two dimensions. More about
|
|
/// broadcasting
|
|
/// [here](http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html)
|
|
///
|
|
/// ---
|
|
///
|
|
/// Examples
|
|
///
|
|
/// Using scalar `pos` and `len`:
|
|
///
|
|
/// ```python
|
|
/// input = [b'Hello', b'World']
|
|
/// position = 1
|
|
/// length = 3
|
|
///
|
|
/// output = [b'ell', b'orl']
|
|
/// ```
|
|
///
|
|
/// Using `pos` and `len` with same shape as `input`:
|
|
///
|
|
/// ```python
|
|
/// 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']]
|
|
/// ```
|
|
///
|
|
/// Broadcasting `pos` and `len` onto `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']]
|
|
/// ```
|
|
///
|
|
/// Broadcasting `input` onto `pos` and `len`:
|
|
///
|
|
/// ```
|
|
/// input = b'thirteen'
|
|
/// position = [1, 5, 7]
|
|
/// length = [3, 2, 1]
|
|
///
|
|
/// output = [b'hir', b'ee', b'n']
|
|
/// ```
|
|
///
|
|
/// Arguments:
|
|
/// * scope: A Scope object
|
|
/// * input: Tensor of strings
|
|
/// * pos: Scalar defining the position of first character in each substring
|
|
/// * len: Scalar defining the number of characters to include in each substring
|
|
///
|
|
/// Returns:
|
|
/// * `Output`: Tensor of substrings
|
|
class Substr {
|
|
public:
|
|
Substr(const ::tensorflow::Scope& scope, ::tensorflow::Input input,
|
|
::tensorflow::Input pos, ::tensorflow::Input len);
|
|
operator ::tensorflow::Output() const { return output; }
|
|
operator ::tensorflow::Input() const { return output; }
|
|
::tensorflow::Node* node() const { return output.node(); }
|
|
|
|
Operation operation;
|
|
::tensorflow::Output output;
|
|
};
|
|
|
|
/// Determine the script codes of a given tensor of Unicode integer code points.
|
|
///
|
|
/// This operation converts Unicode code points to script codes corresponding to
|
|
/// each code point. Script codes correspond to International Components for
|
|
/// Unicode (ICU) UScriptCode values. See http://icu-project.org/apiref/icu4c/uscript_8h.html.
|
|
/// Returns -1 (USCRIPT_INVALID_CODE) for invalid codepoints. Output shape will
|
|
/// match input shape.
|
|
///
|
|
/// Arguments:
|
|
/// * scope: A Scope object
|
|
/// * input: A Tensor of int32 Unicode code points.
|
|
///
|
|
/// Returns:
|
|
/// * `Output`: A Tensor of int32 script codes corresponding to each input code point.
|
|
class UnicodeScript {
|
|
public:
|
|
UnicodeScript(const ::tensorflow::Scope& scope, ::tensorflow::Input input);
|
|
operator ::tensorflow::Output() const { return output; }
|
|
operator ::tensorflow::Input() const { return output; }
|
|
::tensorflow::Node* node() const { return output.node(); }
|
|
|
|
Operation operation;
|
|
::tensorflow::Output output;
|
|
};
|
|
|
|
/// @}
|
|
|
|
} // namespace ops
|
|
} // namespace tensorflow
|
|
|
|
#endif // TENSORFLOW_CC_OPS_STRING_OPS_H_
|