什么是tensorflow.compat.as_str()?

时间:2016-06-07 21:36:44

标签: python tensorflow

Google/Udemy Tensorflow tutorial中有以下代码:

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

这样可以正常运行但我在Tensorflow文档或其他任何地方都找不到compat.as_str

Q1:compat.as_str做了什么?

Q2:这个tensorflow compat库是否记录在哪里?

Q3:这是对tensorflow库的调用,那么它是如何以及为什么在普通的python代码中工作,而不是在张量流图中呢?即我认为tensorflow库调用必须在张量流图定义块内:

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

我正在运行python 2.7。

3 个答案:

答案 0 :(得分:17)

基本上,它来自这样一个事实,即在Python 2中,字符串主要作为字节处理,而不是unicode。
在Python 3中,所有字符串都是本机unicode 该功能的目的是确保您使用的任何Python版本都不会被打扰,因此compat模块名称代表兼容性。

在幕后,tensorflow.compat.as_strbytesunicode字符串转换为unicode个字符串。

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.

图书馆已记录here

答案 1 :(得分:8)

  1. tf.compat.as_str将输入转换为字符串

  2. 我找不到任何文档,但您可以查看源代码here

  3. Tensorflow充当python模块。 graph context用于定义将用于训练模型的图形(数学计算)。

  4.   

    典型用法涉及Graph.as_default()上下文管理器,它会覆盖上下文生命周期的当前默认图形

答案 2 :(得分:3)

在当前版本的TF中,整个tf.compat组都有很好的文档记录。

基本上有些东西在python 2和3中表现不同(可能稍微不准确,python大师可以帮我解决这个问题)。 Python3使用64位浮点数和python2 32位浮点数,与strings相比也存在差异。 Compat模块尝试以相同的方式执行操作(如果您将检查source code,您将看到它们执行不同的操作,具体取决于您是使用2还是3)。

tf.compat.as_str

  

使用utf-8编码将字节或unicode转换为字节   文本。

如果您将数据保存在tfrecords中并希望确保无论使用哪个python版本都以相同的方式保存数据,这会很有用。