Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is tensorflow.compat.as_str()?

In the Google/Udemy Tensorflow tutorial there is the following code:

import tensorflow as tf
...
def read_data(filename):
    """Extract the first file enclosed in a zip file as a list of words"""
    with zipfile.ZipFile(filename) as f:
    data = tf.compat.as_str(f.read(f.namelist()[0])).split()
return data

This executes fine but I cannot find compat.as_str in the Tensorflow documentation or anywhere else.

Q1: What does compat.as_str do?

Q2: Is this tensorflow compat library documented somewhere?

Q3: This is a call to the tensorflow library, so how and why does it work in normal python code, rather than inside a tensorflow graph? I.e. I thought tensorflow library calls had to be inside a tensorflow graph defintion block:

graph = tf.Graph()
with graph.as_default()
    ... tensorflow function calls here ...

I am running python 2.7.

like image 542
Ron Cohen Avatar asked Jun 07 '16 21:06

Ron Cohen


People also ask

What is compat in tensorflow?

compat allows you to write code that works both in TensorFlow 1. x and 2. x. For example, the following piece of code: import tensorflow as tf tf.


2 Answers

Basically, it comes from the fact that in Python 2, strings were dealt with primarily as bytes, not unicode.
In Python 3, all strings are natively unicode.
The purpose of the function is to ensure that whichever Python version you're using, you won't be bothered, hence the compat module name standing for compatibility.

Under the hood, tensorflow.compat.as_str converts both bytes and unicode strings to unicode strings.

Signature: tensorflow.compat.as_str(bytes_or_text, encoding='utf-8')
Docstring:
Returns the given argument as a unicode string.

Args:
  bytes_or_text: A `bytes`, `str, or `unicode` object.
  encoding: A string indicating the charset for decoding unicode.

Returns:
  A `unicode` (Python 2) or `str` (Python 3) object.

Raises:
  TypeError: If `bytes_or_text` is not a binary or unicode string.

The library is documented here.

like image 108
Jacquot Avatar answered Sep 23 '22 13:09

Jacquot


  1. tf.compat.as_str converts input into a string

  2. I couldn't find any documentation, but you can look at the source code here

  3. Tensorflow functions as a python module. The graph context is used to define a graph (mathematical computations) that will be used to train the model.

typical usage involves the Graph.as_default() context manager, which overrides the current default graph for the lifetime of the contex

like image 37
rrao Avatar answered Sep 22 '22 13:09

rrao