Google I/O is a wrap! Catch up on TensorFlow sessions

# tensorflow:: ops:: Substr

``` #include <string_ops.h> ```

Return substrings from ``` Tensor ``` of strings.

## Summary

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, or if ``` len ``` is negative, 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

Examples

Using scalar ``` pos ``` and ``` len ``` :

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

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

Using ``` pos ``` and ``` len ``` with same shape as ``` input ``` :

```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']
```

Raises:

• ``` ValueError ``` : If the first argument cannot be converted to a Tensor of ``` dtype string ``` .
• ``` InvalidArgumentError ``` : If indices are out of range.
• ``` ValueError ``` : If ``` pos ``` and ``` len ``` are not the same shape.

Args:

• 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

Optional attributes (see ``` Attrs ``` ):

• unit: The unit that is used to create the substring. One of: ``` "BYTE" ``` (for defining position and length by bytes) or ``` "UTF8_CHAR" ``` (for the UTF-8 encoded Unicode code points). The default is ``` "BYTE" ``` . Results are undefined if ``` unit=UTF8_CHAR ``` and the ``` input ``` strings do not contain structurally valid UTF-8.

Returns:

• ``` Output ``` : Tensor of substrings

### Constructors and Destructors

``` Substr (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input pos, :: tensorflow::Input len) ```
``` Substr (const :: tensorflow::Scope & scope, :: tensorflow::Input input, :: tensorflow::Input pos, :: tensorflow::Input len, const Substr::Attrs & attrs) ```

### Public attributes

``` operation ```
``` Operation ```
``` output ```
``` :: tensorflow::Output ```

### Public functions

``` node () const ```
``` ::tensorflow::Node * ```
``` operator::tensorflow::Input () const ```
``` ```
``` operator::tensorflow::Output () const ```
``` ```

### Public static functions

``` Unit (StringPiece x) ```
``` Attrs ```

### Structs

tensorflow:: ops:: Substr:: Attrs

Optional attribute setters for Substr .

## Public attributes

### operation

`Operation operation`

### output

`::tensorflow::Output output`

## Public functions

### Substr

``` Substr(
const ::tensorflow::Scope & scope,
::tensorflow::Input input,
::tensorflow::Input pos,
::tensorflow::Input len
)```

### Substr

``` Substr(
const ::tensorflow::Scope & scope,
::tensorflow::Input input,
::tensorflow::Input pos,
::tensorflow::Input len,
const Substr::Attrs & attrs
)```

### node

`::tensorflow::Node * node() const `

### operator::tensorflow::Input

` operator::tensorflow::Input() const `

### operator::tensorflow::Output

` operator::tensorflow::Output() const `

## Public static functions

### Unit

```Attrs Unit(
StringPiece x
)```
[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"Missing the information I need" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"Too complicated / too many steps" },{ "type": "thumb-down", "id": "outOfDate", "label":"Out of date" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"Samples / code issue" },{ "type": "thumb-down", "id": "otherDown", "label":"Other" }]
[{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Easy to understand" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Solved my problem" },{ "type": "thumb-up", "id": "otherUp", "label":"Other" }]